Community
Participate
Working Groups
Build Identifier: 3.0 Changing the type from MASTER to BACKUP of a FailOverParticipant is not yet fully implemented. Reproducible: Always
The problem is that while a FailoverParticipant is in state MASTER the following two replication "counters" are not maintained (increased): - SynchronizableRepository.lastReplicatedBranchID - SynchronizableRepository.lastReplicatedCommitTime When the MASTER is then switched to BACKUP the initial syncing phase of the new BACKUP asks for data from the new MASTER that is already in the new BACKUP. Writing this duplicate data leads to exceptions.
Fix in FailoverParticipant.changingType(Type, Type): if (newType == MASTER) { // Switch off synchronizer doStopSynchronization(); } else { // Bug 312879 setLastReplicatedBranchID(getStore().getLastBranchID()); setLastReplicatedCommitTime(getLastCommitTimeStamp()); // Switch on synchronizer doStartSynchronization(); }
Committed to HEAD
Created attachment 171796 [details] Test v1 I additionally attached a patch that verfies the fix. Committed to HEAD.
Available in 3.0 GA: http://download.eclipse.org/modeling/emf/cdo/updates/3.0-releases/