234 lines
7.4 KiB
Plaintext
234 lines
7.4 KiB
Plaintext
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
|