diff options
author | Eike Stepper | 2020-11-12 06:44:12 +0000 |
---|---|---|
committer | Eike Stepper | 2020-11-12 06:44:12 +0000 |
commit | c89fadae17494ed62e438dd2ce3887fb3d2040c6 (patch) | |
tree | 2407b765b14960c39bc36f6cfe32c60714bc1fbc | |
parent | 7c09183eeaa4daef807db88ab8fa47de5abf9e6f (diff) | |
download | cdo-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
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); |