|
|
|
|
|
|
Re: [CDO] DBStore and Model Evolution [message #1705267 is a reply to message #1705184] |
Thu, 13 August 2015 11:41 |
Samuel Leisering Messages: 34 Registered: July 2014 |
Member |
|
|
Hi
Ok i think i found the problem. I connect to the server with a reconnecting session.
The sessions ExceptionHandler is the org.eclipse.emf.cdo.internal.net4j.RecoveringCDOSessionImpl.RecoveringExceptionHandler.
when i load an object, the method
org.eclipse.emf.internal.cdo.session.DelegatingSessionProtocol.loadRevisions(List<RevisionInfo> infos, CDOBranchPoint branchPoint, int referenceChunk, int prefetchDepth)
is called, which in turn calls loads the revisions on the delegate. The delegate is CDOClientProtocol. In
org.eclipse.emf.cdo.internal.net4j.protocol.CDOClientProtocol.send(RequestWithConfirmation<RESULT> request)
the ClientProtocol correctly throws a RuntimeException because the package is not available. The Exception is then caught in the DelegatingSessionProtocol, handled by the RecoveringExceptionHandler, which basically ignores the Exception, and the DelegatingSessionProtocol is stuck in an endless loop in loadRevisions.
Since the ReconnectingCDOSessionConfigurationImpl is restricted and throws an usupported operation exception on setExceptionHandler, there is no straightforward way to set a new ExceptionHandler for the session.
*EDIT*
I tried the same thing with a different ExceptionHandler, and it works.
Greetings,
Samuel
[Updated on: Thu, 13 August 2015 12:11] Report message to a moderator
|
|
|
Re: [CDO] DBStore and Model Evolution [message #1705312 is a reply to message #1705267] |
Thu, 13 August 2015 16:20 |
|
Am 13.08.2015 um 13:41 schrieb Samuel Leisering:
> Hi
> Ok i think i found the problem. I connect to the server with a reconnecting session.
> The sessions ExceptionHandler is the
> org.eclipse.emf.cdo.internal.net4j.RecoveringCDOSessionImpl.RecoveringExceptionHandler. when i load an object, the method
> org.eclipse.emf.internal.cdo.session.DelegatingSessionProtocol.loadRevisions(List<RevisionInfo> infos, CDOBranchPoint
> branchPoint, int referenceChunk, int prefetchDepth)
>
> is called, which in turn calls loads the revisions on the delegate. The delegate is CDOClientProtocol. In
> org.eclipse.emf.cdo.internal.net4j.protocol.CDOClientProtocol.send(RequestWithConfirmation<RESULT> request)
>
> the ClientProtocol correctly throws a RuntimeException because the package is not available. The Exception is then
> caught in the DelegatingSessionProtocol, handled by the RecoveringExceptionHandler, which basically ignores the
> Exception, and the DelegatingSessionProtocol is stuck in an endless loop in loadRevisions.
>
> Since the ReconnectingCDOSessionConfigurationImpl is restricted and throws an usupported operation exception on
> setExceptionHandler, there is no straightforward way to set a new ExceptionHandler for the session.
I think the problem is in RecoveringCDOSessionImpl.RecoveringExceptionHandler.handleException(), which indeed ignores
the exception unless it's a TransportException. I've added a test case and fixed the problem in:
474919: RecoveringExceptionHandler swallows non-transport exceptions
https://bugs.eclipse.org/bugs/show_bug.cgi?id=474919
Cheers
/Eike
----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper
Cheers
/Eike
----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper
|
|
|
Powered by
FUDForum. Page generated in 0.03730 seconds