[CDO] IProgressMonitor.setCanceled(true) doesn't cancel commit [message #849703] |
Thu, 19 April 2012 11:10 |
Esteban Dugueperoux Messages: 472 Registered: July 2009 |
Senior Member |
|
|
Hi,
I have tried to use IProgressMonitor with
CDOTransaction.commit(IProgressMonitor) to allow cancel long commit
operation, but it doesn't seems work. When I debug, I see that on cancel
a MonitorCanceledRequest is sent to the server and the
MonitorCanceledIndication receives the request with a correlationID and
delegates to SignalProtocol.handleMonitorCanceled() to cancel a
CommitTransactionIndication operation but the SignalProtocol doesn't
find the Signal corresponding to the correlationID then nothing is
canceled. I see that signals map field contains the
CommitTransactionIndication but with the opposite correlationID because
in SignalProtocol.handleBuffer() we store signals with the opposite
correlationID.
In addition, changing the MonitorCanceledIndication to use the opposite
correlationID to have the CommitTransactionIndication cancelled have not
the effect to throws a OperationCancelException but a CommitException,
in standard use a IProgressMonitor.setCanceled(true) must throws a
OperationCancelException to the thread which has launched the operation.
To help to reproduce the issue, I have attached a test case.
Best Regards.
|
|
|
Powered by
FUDForum. Page generated in 0.03597 seconds