文本文件  |  234行  |  7.36 KB

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