From 6ed03c2aafe6c4d47aeaa86c269ddbd2601012c7 Mon Sep 17 00:00:00 2001 From: Eike Stepper Date: Tue, 11 Jun 2013 08:16:51 +0200 Subject: [410409] CDOClientIndications can arrive before session is fully active https://bugs.eclipse.org/bugs/show_bug.cgi?id=410409 --- .../internal/net4j/protocol/CDOClientIndication.java | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientIndication.java b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientIndication.java index e7a5a55622..15d382dc87 100644 --- a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientIndication.java +++ b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientIndication.java @@ -24,6 +24,8 @@ import org.eclipse.emf.cdo.spi.common.protocol.CDODataInputImpl; import org.eclipse.net4j.signal.Indication; import org.eclipse.net4j.util.io.ExtendedDataInputStream; import org.eclipse.net4j.util.io.StringIO; +import org.eclipse.net4j.util.lifecycle.LifecycleState; +import org.eclipse.net4j.util.lifecycle.LifecycleUtil; import org.eclipse.emf.spi.cdo.InternalCDOSession; @@ -53,6 +55,14 @@ public abstract class CDOClientIndication extends Indication @Override protected final void indicating(ExtendedDataInputStream in) throws Exception { + final InternalCDOSession session = getSession(); + if (session.getLifecycleState() == LifecycleState.DEACTIVATING) + { + LifecycleUtil.waitForActive(session, 10000L); + } + + LifecycleUtil.checkActive(session); + indicating(new CDODataInputImpl(in) { @Override @@ -69,31 +79,31 @@ public abstract class CDOClientIndication extends Indication public CDOPackageRegistry getPackageRegistry() { - return getSession().getPackageRegistry(); + return session.getPackageRegistry(); } @Override protected CDOBranchManager getBranchManager() { - return getSession().getBranchManager(); + return session.getBranchManager(); } @Override protected CDOCommitInfoManager getCommitInfoManager() { - return getSession().getCommitInfoManager(); + return session.getCommitInfoManager(); } @Override protected CDORevisionFactory getRevisionFactory() { - return getSession().getRevisionManager().getFactory(); + return session.getRevisionManager().getFactory(); } @Override protected CDOLobStore getLobStore() { - return getSession().getLobStore(); + return session.getLobStore(); } }); } -- cgit v1.2.3