diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/SynchronizableRepository.java')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/SynchronizableRepository.java | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/SynchronizableRepository.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/SynchronizableRepository.java index ceb9b0562c..9933d18650 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/SynchronizableRepository.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/SynchronizableRepository.java @@ -24,6 +24,7 @@ import org.eclipse.emf.cdo.common.lock.CDOLockChangeInfo; import org.eclipse.emf.cdo.common.lock.CDOLockChangeInfo.Operation; import org.eclipse.emf.cdo.common.lock.CDOLockOwner; import org.eclipse.emf.cdo.common.lock.CDOLockState; +import org.eclipse.emf.cdo.common.lock.CDOLockUtil; import org.eclipse.emf.cdo.common.lock.IDurableLockingManager.LockArea; import org.eclipse.emf.cdo.common.model.CDOPackageUnit; import org.eclipse.emf.cdo.common.protocol.CDODataInput; @@ -291,8 +292,8 @@ public abstract class SynchronizableRepository extends Repository.Default implem // If we can't lock immediately, there's a conflict, which means we're in big // trouble: somehow locks were obtained on the clone but not on the master. What to do? // TODO (CD) Consider this problem further - // long timeout = 0; + super.lock(view, lockType, lockables, null, timeout); } else if (lockChangeInfo.getOperation() == Operation.UNLOCK) @@ -317,7 +318,7 @@ public abstract class SynchronizableRepository extends Repository.Default implem StoreThreadLocal.setSession(replicatorSession); getLockManager().updateLockArea(area); - // TODO (CD) getSessionManager().sendLockNotification(sender, lockChangeInfo); + getSessionManager().sendLockNotification(null, CDOLockUtil.createLockChangeInfo()); return true; } finally @@ -340,6 +341,7 @@ public abstract class SynchronizableRepository extends Repository.Default implem accessor.rawImport(in, fromBranchID, toBranchID, fromCommitTime, toCommitTime, monitor); replicateRawReviseRevisions(); + replicateRawReloadLocks(); replicateRawNotifyClients(lastReplicatedCommitTime, toCommitTime); setLastReplicatedBranchID(toBranchID); @@ -380,6 +382,11 @@ public abstract class SynchronizableRepository extends Repository.Default implem } } + private void replicateRawReloadLocks() + { + getLockManager().reloadLocks(); + } + private void replicateRawNotifyClients(long fromCommitTime, long toCommitTime) { InternalCDOCommitInfoManager manager = getCommitInfoManager(); @@ -408,6 +415,9 @@ public abstract class SynchronizableRepository extends Repository.Default implem comment, data); sessionManager.sendCommitNotification(replicatorSession, commitInfo); } + + CDOLockChangeInfo lockChangeInfo = CDOLockUtil.createLockChangeInfo(); + sessionManager.sendLockNotification(replicatorSession, lockChangeInfo); } private Map<CDOBranch, TimeRange> replicateRawGetBranches(long fromCommitTime, long toCommitTime) |