| This documentation describes usage of Jack server 1.3-a8. |
| |
| Jack server |
| =========== |
| |
| The Jack server's goal is to handle a pool of Jack compiler instances in |
| order to limit memory usage and benefit from already warm instances. |
| |
| Setup for Mac OS |
| ---------------- |
| |
| Jack server is automatically installed and started by android build but |
| requires initial setup on Mac OS: |
| |
| - Install MacPorts from macports.org |
| Make sure that /opt/local/bin appears in your path before /usr/bin. |
| If not, please add the following to your ~/.bash_profile file (If |
| you do not have a .bash_profile file in your home directory, create |
| one): |
| |
| export PATH=/opt/local/bin:$PATH` |
| |
| - Get curl package from MacPorts: |
| |
| $ POSIXLY_CORRECT=1 sudo port install curl +ssl |
| |
| Starting the server |
| ------------------- |
| |
| You may need to start the Jack server manually. |
| Use jack-admin start-server. |
| |
| Client info |
| ----------- |
| |
| The client is a bash script simply named jack. |
| It can be configured in $HOME/.jack-settings |
| |
| .jack-settings file |
| |
| This file contains script shell variables: |
| SERVER_HOST: IP address of the server |
| by default: SERVER_HOST=127.0.0.1. |
| |
| SERVER_PORT_SERVICE: Server service TCP port number. Needs to match the |
| service port number defined in $HOME/.jack-server/config.properties on |
| the server host (See Server info below) |
| by default: SERVER_PORT_SERVICE=8076. |
| |
| SERVER_PORT_ADMIN: Server admin TCP port number. Needs to match the |
| admin port number defined in $HOME/.jack-server/config.properties on the |
| server host (See Server info below) |
| by default: SERVER_PORT_ADMIN=8077. |
| |
| SETTING_VERSION: Internal, do not modify. |
| |
| Server info |
| ----------- |
| |
| The server is composed of 2 jars named jack-server.jar and |
| jack-launcher.jar. |
| |
| Check Admin section to know how to install and administrate the Jack |
| server. |
| |
| The server can also be configured in |
| $HOME/.jack-server/config.properties. |
| |
| config.properties file |
| |
| It contains Jack server configuration properties. |
| Modifications to those settings are taken into account after restarting |
| the server. |
| Description with default values follows: |
| |
| jack.server.max-service=<number> |
| Maximum number of simultaneous Jack tasks. Default is 4. |
| |
| jack.server.max-jars-size=<size-in-bytes> |
| Maximum size for Jars, in bytes. -1 means no limit. Default is 100 MiB. |
| |
| jack.server.time-out=<time-in-seconds> |
| Time out delay before Jack gets to sleep. When Jack sleeps, its memory |
| usage is reduced, but it is slower to wake up. -1 means "do not sleep". |
| Default is 2 weeks. |
| |
| jack.server.service.port=<port-number> |
| Server service TCP port number. Default is 8076. Needs to match the |
| service port defined in $HOME/.jack-settings on the client host (See |
| Client section). |
| |
| jack.server.admin.port=<port-number> |
| Server admin TCP port number. Default is 8077. Needs to match the |
| service port defined in $HOME/.jack-settings on the client host (See |
| Client section). |
| |
| jack.server.config.version=<version> |
| Internal, do not modify. |
| |
| Server logs |
| |
| Server logs can be found by running jack-admin server-log. Default |
| location is $HOME/.jack-server/logs/. |
| |
| Admin |
| ----- |
| |
| The jack-admin bash script allows to install and administrate the Jack |
| server. Here are some commands: |
| |
| $ jack-admin help |
| Print help. |
| |
| $ jack-admin install-server jack-launcher.jar jack-server.jar |
| Install the Jack server. |
| |
| $ jack-admin uninstall-server |
| Uninstall the Jack server and all components. |
| |
| $ jack-admin list jack |
| List installed versions for Jack. |
| |
| $ jack-admin update jack jack.jar |
| Install or update a Jack jar. |
| |
| $ jack-admin start-server |
| Start the server. |
| |
| $ jack-admin stop-server |
| Stop the server after the last compilation is complete. |
| |
| $ jack-admin kill-server |
| Kill the server process immediately, interrupting abruptly ongoing |
| compilations. |
| |
| $ jack-admin list-server |
| List Jack server processes. |
| |
| $ jack-admin server-stat |
| Print various info about the server and the host. |
| |
| $ jack-admin server-log |
| Print log pattern. |
| |
| $ jack-admin dump-report |
| Produce a report file that can be used to file a bug. |
| |
| Transitioning from server 1.1 (e.g. Marshmallow) to server 1.3 (e.g. N) |
| ----------------------------------------------------------------------- |
| |
| The old Jack server used a $HOME/.jack configuration file. It has now |
| replaced by a $HOME/.jack-settings and a |
| $HOME/.jack-server/config.properties. If those new files do not exist, |
| run jack-admin start-server and they will be created. If you had custom |
| settings in your $HOME/.jack, here's how to adapt those. |
| |
| SERVER_PORT_SERVICE=XXXX |
| Replace with SERVER_PORT_SERVICE=XXXX in $HOME/.jack-settings and |
| jack.server.service.port=XXXX in $HOME/.jack-server/config.properties. |
| |
| SERVER_PORT_ADMIN=YYYY |
| Replace with SERVER_PORT_ADMIN=YYYY in $HOME/.jack-settings and |
| jack.server.admin.port=YYYY in $HOME/.jack-server/config.properties. |
| |
| SERVER_NB_COMPILE=N |
| Replace with jack.server.max-service=N in |
| $HOME/.jack-server/config.properties. |
| |
| SERVER_TIMEOUT=ZZ |
| You can replace with jack.server.time-out=ZZ, but it is recommended to |
| keep the default setting of "7200" (2 hours). |
| |
| Other settings in the $HOME/.jack configuration file do not need to be |
| copied. You should still keep your $HOME/.jack configuration file for |
| the old Jack server because both server versions can run simultaneously. |
| |
| Troubleshooting |
| --------------- |
| |
| Below you'll find some ways to solve some troubleshooting. If you don't |
| find a solution, file a bug and attach the file produced by |
| jack-admin dump-report. |
| |
| If compilation fails on No Jack server running |
| |
| See Starting the server above. |
| |
| If your computer becomes unresponsive during compilation: |
| |
| You can improve the situation by reducing the number of jack |
| simultaneous compilations by editing your |
| $HOME/.jack-server/config.properties and changing |
| jack.server.max-service to a lower value and then restarting the server. |
| |
| If you experience Jack compilations failing on Out of memory error.: |
| |
| You can improve the situation by reducing the number of jack |
| simultaneous compilations by editing your |
| $HOME/.jack-server/config.properties and changing |
| jack.server.max-service to a lower value and then restarting the |
| server. |
| If this is not enough, you may change the arguments used to start the |
| server jvm and force a greater maximum Java heap size ("-Xmx"): |
| - Stop the server using jack-admin stop-server, then: |
| - If you start the server manually: |
| JACK_SERVER_VM_ARGUMENTS="-Xmx2g -Dfile.encoding=UTF-8 -XX:+TieredCompilation" jack-admin start-server |
| - If you use the jack server in the android tree then |
| export ANDROID_JACK_VM_ARGS="-Xmx2g -Dfile.encoding=UTF-8 -XX:+TieredCompilation" |
| and restart your build command. |
| |
| If you have trouble starting the server |
| |
| This may mean that TCP ports are already in use on your computer. You |
| can try modifying the ports both in your client and server |
| configurations. See the Server info and Client info sections. If it |
| doesn't solve the problem, please report and give us additional |
| information by: |
| - Attaching your compilation log. |
| - Attaching the file produced by jack-admin dump-report |
| |
| If your commands fails on |
| |
| Failed to contact Jack server: Problem reading<your home>/.jack-server/client.pem |
| |
| This may mean that your server never managed to start, see If you have |
| trouble starting the server above. |
| |
| If your compilation gets stuck without any progress |
| |
| Please report and give us additional information by attaching the file |
| produced by jack-admin dump-report. |
| Then restart the server by issuing commands |
| jack-admin kill-server; jack-admin start-server |