Details
-
Task
-
Resolution: Fixed
-
Neutral
-
None
-
None
-
None
-
None
-
-
Empty show more show less
-
Empty show more show less
Description
SyncState is a mechanism implemented to guarantee synchronicity of public instances.
It is basically a counter that is incremented on each activation message that is sent, the counter is sent in the message's header. When the public gets the message, he increments his own activation counter. Which means that two publics who have different SyncStates are out of sync, untill they have again the same number. The load balancer is calling the rest service of the public nodes and knows by this way which public node is most up to date, which one is out of sync, for instance if:
- Rest service is not responding: --> Public Node down --> take it out of teh pool
- Rest service's sync state is 0: --> Public Node is up but completely out of sync.
- average(syncstates)-synctate(pubnode)>=x : --> Public node is working but too much under load, take public node temporary out of the pool till average(syncstates)-synctate(pubnode)<x
The loadbalancer also knows when the public instances are getting activated.
SyncStates are persisted to JCR.
Ensure this mechanism is working correctly, i.e there are no exceptions or corner cases that are introduced when:
- the author restarts
- one of the public nodes restart
- when the activation module is installed as a new module on the instance
- when the activation module is installed as an upgrade of the existing module on the instance.