Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2020-11-12 06:44:12 +0000
committerEike Stepper2020-11-12 06:44:12 +0000
commitc89fadae17494ed62e438dd2ce3887fb3d2040c6 (patch)
tree2407b765b14960c39bc36f6cfe32c60714bc1fbc
parent7c09183eeaa4daef807db88ab8fa47de5abf9e6f (diff)
downloadcdo-c89fadae17494ed62e438dd2ce3887fb3d2040c6.tar.gz
cdo-c89fadae17494ed62e438dd2ce3887fb3d2040c6.tar.xz
cdo-c89fadae17494ed62e438dd2ce3887fb3d2040c6.zip
[568627] IllegalStateException: Different object was registered for OIDnnnn
https://bugs.eclipse.org/bugs/show_bug.cgi?id=568627
-rw-r--r--plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientIndication.java102
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java15
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/AbstractCDOView.java8
3 files changed, 76 insertions, 49 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 33db90424d..4d4046fde5 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
@@ -72,56 +72,66 @@ public abstract class CDOClientIndication extends Indication
throw new LifecycleException(session + " is inactive in " + getClass().getName(), ex);
}
- indicating(new CDODataInputImpl(in)
+ try
{
- @Override
- public CDOPackageRegistry getPackageRegistry()
- {
- return session.getPackageRegistry();
- }
-
- @Override
- protected boolean isXCompression()
- {
- return CDOProtocolConstants.X_COMPRESSION;
- }
-
- @Override
- protected StringIO getPackageURICompressor()
- {
- return getProtocol().getPackageURICompressor();
- }
-
- @Override
- protected CDOListFactory getListFactory()
- {
- return CDOListWithElementProxiesImpl.FACTORY;
- }
-
- @Override
- protected CDOBranchManager getBranchManager()
- {
- return session.getBranchManager();
- }
-
- @Override
- protected CDOCommitInfoManager getCommitInfoManager()
- {
- return session.getCommitInfoManager();
- }
-
- @Override
- protected CDORevisionFactory getRevisionFactory()
+ indicating(new CDODataInputImpl(in)
{
- return session.getRevisionManager().getFactory();
- }
-
- @Override
- protected CDOLobStore getLobStore()
+ @Override
+ public CDOPackageRegistry getPackageRegistry()
+ {
+ return session.getPackageRegistry();
+ }
+
+ @Override
+ protected boolean isXCompression()
+ {
+ return CDOProtocolConstants.X_COMPRESSION;
+ }
+
+ @Override
+ protected StringIO getPackageURICompressor()
+ {
+ return getProtocol().getPackageURICompressor();
+ }
+
+ @Override
+ protected CDOListFactory getListFactory()
+ {
+ return CDOListWithElementProxiesImpl.FACTORY;
+ }
+
+ @Override
+ protected CDOBranchManager getBranchManager()
+ {
+ return session.getBranchManager();
+ }
+
+ @Override
+ protected CDOCommitInfoManager getCommitInfoManager()
+ {
+ return session.getCommitInfoManager();
+ }
+
+ @Override
+ protected CDORevisionFactory getRevisionFactory()
+ {
+ return session.getRevisionManager().getFactory();
+ }
+
+ @Override
+ protected CDOLobStore getLobStore()
+ {
+ return session.getLobStore();
+ }
+ });
+ }
+ catch (IOException | RuntimeException ex)
+ {
+ if (session.isActive())
{
- return session.getLobStore();
+ throw ex;
}
- });
+ }
}
protected abstract void indicating(CDODataInput in) throws IOException;
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java
index 7865ff3405..a6d7fdbffd 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java
@@ -1090,7 +1090,20 @@ public abstract class CDOSessionImpl extends CDOTransactionContainerImpl impleme
{
if (view != sender)
{
- view.handleLockNotification(sender, lockChangeInfo);
+ try
+ {
+ if (view.isActive())
+ {
+ view.handleLockNotification(sender, lockChangeInfo);
+ }
+ }
+ catch (Exception ex)
+ {
+ if (view.isActive())
+ {
+ OM.LOG.error(ex);
+ }
+ }
}
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/AbstractCDOView.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/AbstractCDOView.java
index 8c49c88ea2..edd99e6d49 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/AbstractCDOView.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/AbstractCDOView.java
@@ -3081,9 +3081,13 @@ public abstract class AbstractCDOView extends CDOCommitHistoryProviderImpl<CDOOb
@Override
protected void doDeactivate() throws Exception
{
- if (viewSet != null && viewSet.getResourceSet() != null)
+ if (viewSet != null)
{
- viewSet.getResourceSet().getURIConverter().getURIHandlers().remove(getURIHandler());
+ ResourceSet resourceSet = viewSet.getResourceSet();
+ if (resourceSet != null)
+ {
+ viewSet.getResourceSet().getURIConverter().getURIHandlers().remove(getURIHandler());
+ }
}
LifecycleUtil.deactivate(viewLock);

Back to the top