Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/RepositorySynchronizer.java')
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/RepositorySynchronizer.java39
1 files changed, 25 insertions, 14 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/RepositorySynchronizer.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/RepositorySynchronizer.java
index 7398a86daf..5249562309 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/RepositorySynchronizer.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/syncing/RepositorySynchronizer.java
@@ -16,7 +16,6 @@ import org.eclipse.emf.cdo.common.CDOCommonSession.Options.LockNotificationMode;
import org.eclipse.emf.cdo.common.CDOCommonSession.Options.PassiveUpdateMode;
import org.eclipse.emf.cdo.common.branch.CDOBranch;
import org.eclipse.emf.cdo.common.branch.CDOBranchCreatedEvent;
-import org.eclipse.emf.cdo.common.branch.CDOBranchPoint;
import org.eclipse.emf.cdo.common.commit.CDOCommitInfo;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.lock.CDOLockChangeInfo;
@@ -180,6 +179,11 @@ public class RepositorySynchronizer extends PriorityQueueRunner implements Inter
public CDOSession[] getElements()
{
+ if (remoteSession == null)
+ {
+ return new CDOSession[0];
+ }
+
return new CDOSession[] { remoteSession };
}
@@ -226,11 +230,12 @@ public class RepositorySynchronizer extends PriorityQueueRunner implements Inter
protected void handleConnect()
{
+ scheduleReplicate();
+
remoteSession.addListener(remoteSessionListener);
remoteSession.getBranchManager().addListener(remoteSessionListener);
fireEvent(new SingleDeltaContainerEvent<CDOSession>(this, remoteSession, IContainerDelta.Kind.ADDED));
- scheduleReplicate();
}
protected void handleDisconnect()
@@ -240,22 +245,27 @@ public class RepositorySynchronizer extends PriorityQueueRunner implements Inter
TRACER.trace("Disconnected from master."); //$NON-NLS-1$
}
- if (localRepository.getRootResourceID() == null)
+ if (localRepository.hasBeenReplicated())
{
- localRepository.setState(CDOCommonRepository.State.INITIAL);
+ localRepository.setState(CDOCommonRepository.State.OFFLINE);
}
else
{
- localRepository.setState(CDOCommonRepository.State.OFFLINE);
+ localRepository.setState(CDOCommonRepository.State.INITIAL);
}
- CDOSession element = remoteSession;
+ if (remoteSession != null)
+ {
+ CDOSession element = remoteSession;
- remoteSession.getBranchManager().removeListener(remoteSessionListener);
- remoteSession.removeListener(remoteSessionListener);
- remoteSession = null;
+ remoteSession.getBranchManager().removeListener(remoteSessionListener);
+ remoteSession.removeListener(remoteSessionListener);
+ remoteSession.close();
+ remoteSession = null;
+
+ fireEvent(new SingleDeltaContainerEvent<CDOSession>(this, element, IContainerDelta.Kind.REMOVED));
+ }
- fireEvent(new SingleDeltaContainerEvent<CDOSession>(this, element, IContainerDelta.Kind.REMOVED));
reconnect();
}
@@ -387,7 +397,7 @@ public class RepositorySynchronizer extends PriorityQueueRunner implements Inter
{
if (TRACER.isEnabled())
{
- TRACER.format("ReplConnectionication attempt failed. Retrying in {0} seconds...", retryInterval); //$NON-NLS-1$
+ TRACER.format("Connection attempt failed. Retrying in {0} seconds...", retryInterval); //$NON-NLS-1$
}
fireThrowable(ex);
@@ -419,8 +429,9 @@ public class RepositorySynchronizer extends PriorityQueueRunner implements Inter
InternalCDORevisionCache cache = remoteSession.getRevisionManager().getCache();
if (!(cache instanceof NOOPRevisionCache))
{
- throw new IllegalStateException("Master session does not use a NOOPRevisionCache: "
- + cache.getClass().getName());
+ String message = "Master session does not use a NOOPRevisionCache: " + cache.getClass().getName();
+ OM.LOG.error(message);
+ throw new Error(message);
}
}
}
@@ -444,7 +455,7 @@ public class RepositorySynchronizer extends PriorityQueueRunner implements Inter
TRACER.trace("Synchronizing with master..."); //$NON-NLS-1$
}
- boolean firstSyncing = localRepository.getLastReplicatedCommitTime() == CDOBranchPoint.UNSPECIFIED_DATE;
+ boolean firstSyncing = !localRepository.hasBeenReplicated();
if (!firstSyncing)
{
localRepository.setState(CDOCommonRepository.State.SYNCING);

Back to the top