| Summary: | DeadLock in CDO Session | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | [Modeling] EMF | Reporter: | kaab <kaabab> | ||||||
| Component: | cdo.core | Assignee: | Eike Stepper <stepper> | ||||||
| Status: | CLOSED FIXED | QA Contact: | Eike Stepper <stepper> | ||||||
| Severity: | normal | ||||||||
| Priority: | P3 | CC: | caspar_d, martin.fluegge, ralf.ellner | ||||||
| Version: | 4.1 | Flags: | caspar_d:
review+
|
||||||
| Target Milestone: | --- | ||||||||
| Hardware: | PC | ||||||||
| OS: | Linux | ||||||||
| Whiteboard: | |||||||||
| Attachments: |
|
||||||||
|
Description
kaab
Created attachment 200989 [details]
Fix
Hi Abdel, does the attached fix solve your problem? I have experienced a similar problem when using multiple threads (each with its own CDOTransaction) on a single CDOSession, for example: pool-27-thread-4 is waiting to lock org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl@b57e2 which is held by pool-27-thread-3 pool-27-thread-3 is waiting to lock org.eclipse.emf.internal.cdo.session.CDOSessionImpl$OutOfSequenceInvalidations@626803ff which is held by pool-27-thread-4 Thread stacks pool-27-thread-3 [BLOCKED; waiting to lock org.eclipse.emf.internal.cdo.session.CDOSessionImpl$OutOfSequenceInvalidations@626803ff] org.eclipse.emf.internal.cdo.session.CDOSessionImpl.invalidate(CDOSessionImpl.java:1180) org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl$CDOCommitContextImpl.postCommit(CDOTransactionImpl.java:2498) org.eclipse.emf.internal.cdo.transaction.CDOSingleTransactionStrategyImpl.commit(CDOSingleTransactionStrategyImpl.java:99) org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.commit(CDOTransactionImpl.java:1069) org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.commit(CDOTransactionImpl.java:1089) pool-27-thread-4 [BLOCKED; waiting to lock org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl@b57e2] org.eclipse.emf.internal.cdo.view.CDOViewImpl.setLastUpdateTime(CDOViewImpl.java) org.eclipse.emf.internal.cdo.session.CDOSessionImpl.invalidateOrdered(CDOSessionImpl.java:1242) org.eclipse.emf.internal.cdo.session.CDOSessionImpl.invalidate(CDOSessionImpl.java:1210) org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl$CDOCommitContextImpl.postCommit(CDOTransactionImpl.java:2498) org.eclipse.emf.internal.cdo.transaction.CDOSingleTransactionStrategyImpl.commit(CDOSingleTransactionStrategyImpl.java:99) org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.commit(CDOTransactionImpl.java:1069) org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.commit(CDOTransactionImpl.java:1089) The provided fix solved the problem in 4.0-maintainance. Caspar, can you take a look at it and tell me about your opinion? It appears that all tests are passing (incl. offline suite). Problem understood, solution understood. Makes sense. As discussed, only part I'm not sure about is the syncing that you changed in (or added to?) waitForUpdate. I can't apply it to trunk because the patch is for 4.0 (presumably). Backport to 4.0 in bug 359339. Created attachment 204246 [details]
Patch v2 (reintegrated with HEAD)
Committed revision 9419: - trunk/plugins/org.eclipse.emf.cdo - trunk/plugins/org.eclipse.emf.cdo.tests Fixed Closing. |