Hello Modeshape Community,
we're currently trying to build a Wildfly (10.0.0.Final) cluster in domain mode with ModeShape 5.2.0.Final.
In our minimal test setup the cluster runs on a single machine with two nodes.
The repositories use database persistence with an Oracle RDBMS.
Unfortunately the changes our application does in a repository on cluster node 1 are not seen on cluster node 2, although they use the same Oracle DataSource and "db" cluster-locking.
This is (probably) caused by an outdated session cache on node 2.
From my understanding of ModeShape clustering with JGroups and the explanation in https://developer.jboss.org/thread/272341 JGroups messages should be sent from node 1 to node 2 to invalidate the session cache as soon as repository data is changed on node 1.
With TRACE-level logs for "org.jgroups" I could confirm that messages are properly sent by node 1 and received on node 2 after changes.
With tcpdump on the JGroups tcp socket port it could further be validated that the payload of these messages contain information about the changeset, e.g. the attributes and data of a newly created repository node.
Hence the communication within the cluster / between the nodes seems to work, but the session cache is not updated.
If we configure the cache-size of the workspace to 1 (0 is not schema-valid), the changes are immediately visible, but performance takes a major hit.
Is my understanding correct, that the relevant parts of the session cache of node 2 should be invalidated as soon as JGroups messages with a changeset are received?
Could you please help us find the wrong parts in our minimal cluster configuration?
Please see the attached domain, host-master and jgroups-config xml files.
(modcluster is currently not configured properly. We're testing by accessing the two nodes manually and retrieving the repository state with modeshape-rest)
Thanks for your help!