I came across an interesting customer situation recently where the IDP Scheduler Service was not starting in cluster mode. Please refer here to learn more on the IDP Scheduler service cluster mode.
The customer was using a 2-node JBoss cluster with TCP Locators for Gemfire. If you are using a TCP locator for clustering, you need a quick fix (QF) corresponding to your LiveCycle version to make gthe Scheduler work in clustered mode.
e.g. For LC ES2.5 (i.e. ES2 SP2), you need to apply LC_9.0.0.2_QF_2.44.
For this particular environment, the IDP Scheduler service was not starting in clustered mode, despite successfully installing the quick fix. After closely inspecting the server logs for both nodes, we noticed that both nodes were being recognized as “adobejb_server1″.
The following line in the log confirms that:
—
com.adobe.serverInstanceId……………….: adobejb_server1
—
In a cluster, you want all your nodes to have unique names. You need to set JVM argument -Dadobeidp.serverName in the server startup script to accomplish that. Apart from the server node name, there are multiple other parameters you need to set in JBoss run.bat/.sh, to setup a LiveCycle cluster successfully.
The interesting thing in this scenario was that all JVM startup arguments were correct. However they were set in an incorrect location in the server.bat files. Due to that JVM startup arguments were not getting picked up during the JBoss startup sequence.
The original line in the run.bat looked like this:
if exist “%JBOSS_HOME%\bin\native” set JAVA_OPTS=%JAVA_OPTS%
There was no file named “%JBOSS_HOME%\bin\native” existing on that environment, hence that part of the script was skipped.
We moved the argument set to a new line; restarted cluster and the Scheduler service got started in clustered mode.
Example of valid JVM arguments in this case
–
set JAVA_OPTS=%JAVA_OPTS% -Djboss.partition.name=cluster_lc9 -Dadobeidp.serverName=server2 -Djava.net.preferIPv4Stack=true -Dadobe.cache.cluster-locators=
–
It’s important to set JVM arguments correctly; and to set those in the right place to be picked up during the start-up sequence.
I solved an issue based on the value of com.adobe.serverInstanceId parameter in server log. it was set to: com.adobe.serverInstanceId……………….: adobejb_null
Checking the run.bat files revealed the following -
set JAVA_OPTS=%JAVA_OPTS% -Dadobeidp.serverName=crmasolb03
set JAVA_OPTS=-Djboss.partition.name=ALC-OLB-PRE -Dadobe.cache.multicast-port=44502
The issue was that the second set JAVA_OPTS line did not have the %JAVA_OPTS% in it. So, it basically had over written the JAVA_OPTS values to just the values in the second line. To correct this just had to add %JAVA_OPTS% to the second line as well.
So after correcting, it appeared as below:
set JAVA_OPTS=%JAVA_OPTS% -Dadobeidp.serverName=crmasolb03
set JAVA_OPTS=%JAVA_OPTS% -Djboss.partition.name=ALC-OLB-PRE -Dadobe.cache.multicast-port=44502