Issue
After installing fix pack 1 on our 7.2 TCPping cluster, the nodes fail to start up with numerous errors. It seems that Liferay cannot create JgroupsClusterChannels and singleton_name is not recognized:
ERROR [Start Level: Equinox Container: 90d5c7f8-322e-4ba1-96f6-e4c89fa83ec0][ClusterExecutorImpl:93] bundle com.liferay.portal.cluster.multiple:3.0.10 (644)[com.liferay.portal.cluster.multiple.internal.ClusterExecutorImpl(3382)] : The activate method has thrown an exception
com.liferay.portal.kernel.exception.SystemException: Unable to create JGroupsClusterChannel
Caused by: java.lang.IllegalArgumentException: JGRP000001: configuration error: the following properties in TCP are not recognized: {singleton_name=liferay_tcp_cluster}
Environment
- Liferay DXP 7.2 (fix pack 1+)
Resolution
If your DXP 7.2 GA1 TCPping cluster used 1 tcp.xml per Liferay node by using singleton_name in tcp.xml (shared port for control and transport), then starting from fix pack 1 of DXP 7.2, you need to adjust your configuration, either by switching to a '2 tcp.xml per node configuration' (this linked article) or by modifying the current '1 tcp.xml per node configuration' as below:
Use case 1: the initial hosts are specified via Java options
-Djgroups.tcpping.initial_hosts=hostA[7800],hostB[7800],hostN[7800] ...
then perform the following changes:
1) update
-Djgroups.tcpping.initial_hosts=hostA[7800],hostB[7800],hostN[7800] ...
to
-Djgroups.tcpping.initial_hosts=hostA[7800],hostA[7801],hostB[7800],hostB[7801],hostN[7800],hostN[7801] ...
for each Liferay node,
2) remove the singleton_name entry from each tcp.xml.
Use case 2: the initial hosts are hardcoded in tcp.xml
initial_hosts="hostA[7800],hostB[7800],hostN[7800] ..."
1) update
initial_hosts="hostA[7800],hostB[7800],hostN[7800] ..."
to
initial_hosts="hostA[7800],hostA[7801],hostB[7800],hostB[7801],hostN[7800],hostN[7801] ..."
in the txp.xml of each Liferay node,
2) remove the singleton_name entry from each tcp.xml.
Additional Information
- Fix pack 1 upgrades JGroups to version 4.1.1 where singleton_name is no longer available. It is deprecated as of JGroups v.4.0 (https://issues.jboss.org/browse/JGRP-1844).
- Regarding the further impact of the mentioned JGroups upgrade, please see this knowledge base article.