Troubleshoot When Installing Fusion

This topic explains how to troubleshoot difficulties that occur when installing or upgrading Fusion.

Fusion run script failures

Common problems that cause Fusion run scripts to fail:

  • Wrong Java version

  • Users have insufficient privileges for the installation directory.

  • Java bin directory not in the PATH environment variable.

  • Some Fusion services may already be running, or registered as running.

  • Roaming IP address; try uncommenting this line in fusion/conf/fusion.properties:

    default.address = 127.0.0.1

Check the Java version

Fusion runs on JDK 1.8. See System Requirements.

Fusion scripts use the environment variable JAVA_HOME. To check the setting of this variable, log in to the account used to run Fusion, and check that this variable is set to the proper value. On a linux, Mac, or other Unix system, use the following command:

echo $JAVA_HOME

On Windows, the command is:

echo %JAVA_HOME%

Fusion scripts execute both the java and javac commands. To check the Java version invoked by these commands, run the following commands from a shell or terminal window:

java -version
javac -version

Clear browser cache

If a previous version of Fusion was accessed in the browser with the same URL as that of the newly installed version of Fusion, then there may be old pages and/or cookies in the browser cache. A hard page refresh will clear old pages from the browser cache. If clearing the page cache doesn’t solve this problem, clear session cookies as well.

Stop/Clean up/Start

If the script fusion/bin/fusion start completes without reporting an error, but the Fusion UI displays a message that it can’t find Collections or Datasources, this may be due to Fusion services not being able to communicate properly (via ZooKeeper). This can happen with developer deployments running on a laptop if the network connection changes or is interrupted, especially when using the embedded ZooKeeper instance that is bundled with Fusion.

In this situation, you should stop Fusion, inspect the system processes and if necessary, manually terminate running processes and cleanup .pid files to bring the system back to a clean state, then start Fusion once again.

Although the Fusion run script bin/fusion provides a restart option, the restart option assumes a correctly functioning system and can’t always recover from system failure.

To stop Fusion:

Run the script fusion/bin/fusion with the argument stop:

$ cd /path/to/fusion
$ ./bin/fusion stop
2016-10-04 20:18:30Z Stopping Fusion UI on port 8764
2016-10-04 20:18:42Z Stopping Fusion Connectors on port 8984
2016-10-04 20:18:53Z Stopping Fusion API Services on port 8765
2016-10-04 20:19:05Z Stopping Fusion Spark Worker on port 8769
2016-10-04 20:19:10Z Stopping Fusion Spark Master on port 8766
2016-10-04 20:19:15Z Stopping Fusion Solr on port 8983
2016-10-04 20:19:27Z Stopping Fusion ZooKeeper on port 9983

After stopping Fusion, you should make sure that no Fusion services are running. When the Fusion scripts start a Fusion service, they record the process id in a .pid file in the directory fusion/var. For a Fusion instance that is up and running, we see the following set of .pid files:

>  find /path/to/fusion/var -name "*.pid" -print

fusion/var/api/api.pid
fusion/var/connectors/connectors.pid
fusion/var/solr/solr.pid
fusion/var/spark-master/spark-master.pid
fusion/var/spark-worker/spark-worker.pid
fusion/var/ui/ui.pid
fusion/var/zookeeper/zookeeper.pid

The above output shows the set of .pid created by a single Fusion instance running with embedded ZooKeeper and Solr.

But if no Fusion services are running, there shouldn’t be any .pid files. In the case that all services have been stopped, but there are still some .pid files found, these files should be deleted before starting Fusion.

Inspect the logfiles

If none of the above help, inspect the Fusion logfiles in directory fusion/logs.

Logfile names that start with "oom" indicate out-of-memory problems. You might need to increase the amount of memory allotted to that service. The amount of memory allotted to each kind of Fusion service is controlled by environment variables that are set in the fusion/conf/config.sh (linux, Mac, Unix) or fusion/conf/config.cmd (Windows) file. These variable names consist of the service name followed by "_JAVA_OPTIONS", e.g.:

API_JAVA_OPTIONS=(-Xmx1g -Xss256k -XX:MaxPermSize=256m -Dapple.awt.UIElement=true)

More Help and Support