View Source

{toc}
h1. Design of the TxLog sync protocol

[^GraphDB HA Cluster - Transaction Log Synchronization Protocol.pdf]
{viewpdf:GraphDB HA Cluster - Transaction Log Synchronization Protocol.pdf}

h1. Known Issues

* Spurious failures (updates failing on one worker and succeeding on another) can cause the DC-s to go out of sync (workers within the same DC will still be in sync);
* Dead workers will be undetected until an update is executed.

h1. Operational Requirements

* Each synchronizing master must have the following properties set:
** Node ID (cluster config: {{{*}node-id{*}}}; JMX bean: {{{*}NodeID{*}}}) that is _unique_ and _consistent_ throughout the whole cluster, across DC-s;
** master URL (cluster config: {{{*}master-url{*}}}; JMX bean: {{{*}masterURL{*}}}) set to its Sesame protocol URL.

* All synchronized peers must be configured in a master node's config with the following properties:
** ID (cluster config: {{{*}peer.*{}}}{{<n>}}{{{}*.id{*}}}) equal to the peer's own unique Node ID;
** URL (cluster config: {{{*}peer.*{}}}{{<n>}}{{{}*.url{*}}}) equal to the peer's Sesame protocol URL.

The properties can be set directly in the cluster config, or given as arguments to the JMX bean or&nbsp;{{{*}addSyncPeer()*}}. A master node will _not_ synchronize with unknown (i.e. unconfigured) peers.