| Summary: | IllegalStateException in CDOStore.getRevision | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | [Modeling] EMF | Reporter: | Anders Forsell <aforsell1971> | ||||||||
| Component: | cdo.core | Assignee: | Simon Mc Duff <smcduff> | ||||||||
| Status: | CLOSED FIXED | QA Contact: | |||||||||
| Severity: | normal | ||||||||||
| Priority: | P3 | CC: | smcduff, stepper, vroldanbet | ||||||||
| Version: | 2.0 | Flags: | stepper:
galileo+
stepper: review+ |
||||||||
| Target Milestone: | M6 | ||||||||||
| Hardware: | PC | ||||||||||
| OS: | Windows Vista | ||||||||||
| Whiteboard: | |||||||||||
| Bug Depends on: | 258831 | ||||||||||
| Bug Blocks: | |||||||||||
| Attachments: |
|
||||||||||
hi Anders, I suspect it is a Threading stuff issue. (In CDO) We have a bugs for it.. https://bugs.eclipse.org/bugs/show_bug.cgi?id=258831 I added a dependency. Eike is refactoring the code ... in another branch. see https://bugs.eclipse.org/bugs/show_bug.cgi?id=265435 because it is a lot of changes I asked him if it is better to wait after the merge... to make changes in HEAD. I will also increase priority on the others bugs. Thank you to submit the testcase, it will help us! But to fix your problem, you could use adapter. (use the push mechanism instead of looking if something changed). http://wiki.eclipse.org/New_And_Noteworthy_for_CDO_2.0#Change_subscription Simon Thanks Simon, Looking at the other bugs it seems you and Eike are working hard to get everything in. Keep going! --- Anders Created attachment 128842 [details]
To be reviewed
I had two options: I went for the simplistic one...
Options1 (SImplistic)
Used a ReentrantLock : INternalCDOView.getStateLock()
(Cons: cannot go in the state process with two different objects at the same time for the same view)
Options2: Could use RWLockManager....
RWLockManager... is probably slower than ReentrantLock... (didn't try it).
We could lock with the value of the ID.
I could do Options 2 if it seems needed!
Maybe I should attach that patch into 258831: Check for Concurrency in CDOStateMachine https://bugs.eclipse.org/bugs/show_bug.cgi?id=258831 Created attachment 128848 [details]
Patch v2
Ready to be committed
Committed to HEAD I noticed a deadlock sometimes.. with my latest patch. I found one places (deadlock with CDOViewImpl.objects). I will fix it and commit my changes. (I will also put the patch here to let know what was the problem.) I would like to continue the discussion in the bugs 258831 since it belong more over there. Hi! I just noticed that while executing test-suite, the test-case corresponding to this bug enters in a deadlock. Should this bug be reopened? (In reply to comment #9) > Hi! > > I just noticed that while executing test-suite, the test-case corresponding to > this bug enters in a deadlock. Should this bug be reopened? > Could you provide the stacktrace (by running sendsignal.exe) ? if it happens again. Another things. Do you have all the code updated as well ? Hi Vik, how you know it enters in a deadlock ? (Can you describe the signs ? ) I want to make sure that it is really a deadlock that you've encounter and not... that the process took too much time to execute! Thank you Hi Simon, I must apologize since I haven't really determine if its a deadlock or not, so I've made false statement about it. What I'm sure is that the test-case for this bug never finishes. So what I can confirm is that there is something not properly working (unless you tell me this testcase takes 5 minutes, in that case, then I might have not given enought time for it!). Yes, I'm in sync with latest code in HEAD. I'll execute again only that test-case and see if it is just taking too much time or it is a deadlock! (In reply to comment #13) > Hi Simon, > > I must apologize since I haven't really determine if its a deadlock or not, so > I've made false statement about it. What I'm sure is that the test-case for > this bug never finishes. So what I can confirm is that there is something not > properly working (unless you tell me this testcase takes 5 minutes, in that > case, then I might have not given enought time for it!). > > Yes, I'm in sync with latest code in HEAD. > > I'll execute again only that test-case and see if it is just taking too much > time or it is a deadlock! > Are you using DBStore or MEMStore ? Using DBStore could be very long. I think I will limit this bugs to MEMStore. DOes the console display new debug info...or you have no new debug info for a long period of time (more than 1 minute). Simon > Are you using DBStore or MEMStore ? > Using DBStore could be very long. I think I will limit this bugs to MEMStore. I execute "CDO All Tests" launch configuration, so I assume it uses MEMStore > DOes the console display new debug info...or you have no new debug info for a > long period of time (more than 1 minute). Yes, the console keeps showing messages frequently, lets say, every 3 or 4 seconds. Definitively no 1 minute, not even 30 seconds. It could still be a deadlock.. if the problem is in the commit phase. (Monitoring could send messages) ? Can you tell us if the debug info are related monitoring only ??? or commit ? Do you have a fast computer ? Thread-2914 [CommitTransactionIndication] Reading 0 new package units Thread-2914 [CommitTransactionIndication] Reading 0 new objects Thread-2914 [CommitTransactionIndication] Reading 1 dirty object deltas Thread-2914 [CDODataInputImpl] Reading CDOID of type 1 (OBJECT) Thread-2914 [ProgressDistributor] Distribution: 83.22905234584448%, 16.770947654155517%, (indicatingCommitDistributor: repo1) Thread-2914 [AbstractCDORevision] Setting version for Customer@OID3v64: v65 Thread-2914 [AbstractCDORevision] Setting created Customer@OID3v65: 19-mar-2009 14:01:04 Thread-2914 [StoreAccessor] Writing transaction: Transaction[1] Thread-2914 [AbstractCDORevision] Adjusting references for revision Customer@OID3v65 Thread-2914 [AbstractCDORevision] Setting version for Customer@OID3v64: v65 Thread-2914 [AbstractCDORevision] Setting created Customer@OID3v65: 19-mar-2009 14:01:04 Thread-2914 [AbstractCDORevision] Setting revised Customer@OID3v64: 19-mar-2009 14:01:04 Thread-2914 [LRURevisionCache] Adding revision: Customer@OID3v65, created=19-mar-2009 14:01:04, revised=01-ene-1970 1:00:00, current=true Thread-2914 [AbstractCDORevision] Setting revised Customer@OID3v64: 19-mar-2009 14:01:04 Thread-2914 [CDODataOutputImpl] Writing CDOID of type 0 (NULL) Thread-2914 [CommitNotificationRequest] Writing timeStamp: 19-mar-2009 14:01:04 Thread-2914 [CommitNotificationRequest] Writing 1 dirty IDs Thread-2914 [CDODataOutputImpl] Writing 0 package units Thread-2914 [CommitNotificationRequest] Writing dirty ID: OID3v64 Thread-2914 [CDODataOutputImpl] Writing CDOID of type 1 (OBJECT) Thread-2914 [Lifecycle] Deactivating MEMStoreAccessor@20282 Thread-2914 [CommitNotificationIndication] Read timeStamp: 19-mar-2009 14:01:04 Thread-2914 [CDODataInputImpl] Reading 0 package units Thread-2914 [CommitNotificationIndication] Reading 1 dirty IDs Thread-2914 [CDODataInputImpl] Reading CDOID of type 1 (OBJECT) Thread-2914 [CommitNotificationIndication] Read dirty ID: OID3v64 Thread-2914 [CommitNotificationIndication] Reading 0 Deltas Thread-2914 [CommitNotificationIndication] Reading 0 Detach Objects main [CDODataInputImpl] Reading CDOID of type 0 (NULL) main [CDOSingleTransactionStrategyImpl] CDOCommitContext.postCommit main [FiniteStateMachine] Processing event COMMIT in state DIRTY for Customer@OID3 (data=org.eclipse.emf.spi.cdo.CDOSessionProtocol$CommitTransactionResult@aeb503) main [AbstractCDORevision] Setting ID: OID3 main [AbstractCDORevision] Setting untransactional Customer@OID3v-65: v65 main [AbstractCDORevision] Setting created Customer@OID3v65: 19-mar-2009 14:01:04 main [AbstractCDORevision] Adjusting references for revision Customer@OID3v65 main [LRURevisionCache] Adding revision: Customer@OID3v65, created=19-mar-2009 14:01:04, revised=01-ene-1970 1:00:00, current=true main [AbstractCDORevision] Setting revised Customer@OID3v64: 19-mar-2009 14:01:04 main [FiniteStateMachine] Processing event WRITE in state CLEAN for Customer@OID3 (data=org.eclipse.emf.cdo.internal.common.revision.delta.CDOSetFeatureDeltaImpl@1ee14d4) main [AbstractCDORevision] Setting transactional Customer@OID3v65: v-66 main [CDOTransactionImpl] Registering dirty object Customer@OID3 main [CDOSingleTransactionStrategyImpl] CDOCommitContext.preCommit main [CDOTransactionImpl] commit() main [CommitTransactionRequest] Writing 0 new package units main [CommitTransactionRequest] Writing 0 new objects main [CommitTransactionRequest] Writing 1 dirty objects main [CDODataOutputImpl] Writing CDOID of type 1 (OBJECT) Thread-2921 [Lifecycle] Activating MEMStoreAccessor@20283 Thread-2921 [Lifecycle] DUMP MEMStoreAccessor@20283 StoreAccessor.commitContexts = StoreAccessor.store = MEMStore@20167 StoreAccessor.context = Transaction[1] StoreAccessor.reader = false newRevisions = Thread-2913 [CommitNotificationIndication] Read timeStamp: 19-mar-2009 14:01:04 Thread-2920 [FiniteStateMachine] Processing event INVALIDATE in state CLEAN for Customer@OID3 (data=62) Thread-2921 [CommitTransactionIndication] Reading 0 new package units Thread-2913 [CDODataInputImpl] Reading 0 package units Thread-2921 [CommitTransactionIndication] Reading 0 new objects Thread-2915 [FiniteStateMachine] Processing event READ in state PROXY for Customer@OID3 (data=null) Thread-2913 [CommitNotificationIndication] Reading 1 dirty IDs Thread-2921 [CommitTransactionIndication] Reading 1 dirty object deltas Thread-2920 [FiniteStateMachine] Processing event INVALIDATE in state CLEAN for Customer@OID3 (data=64) Thread-2913 [CDODataInputImpl] Reading CDOID of type 1 (OBJECT) Thread-2921 [CDODataInputImpl] Reading CDOID of type 1 (OBJECT) Thread-2915 [FiniteStateMachine] Processing event READ in state PROXY for Customer@OID3 (data=null) Thread-2913 [CommitNotificationIndication] Read dirty ID: OID3v63 Thread-2913 [CommitNotificationIndication] Reading 0 Deltas Thread-2913 [CommitNotificationIndication] Reading 0 Detach Objects Thread-2921 [ProgressDistributor] Distribution: 83.22905234584448%, 16.770947654155517%, (indicatingCommitDistributor: repo1) Thread-2921 [AbstractCDORevision] Setting version for Customer@OID3v65: v66 Thread-2921 [AbstractCDORevision] Setting created Customer@OID3v66: 19-mar-2009 14:01:04 Thread-2921 [StoreAccessor] Writing transaction: Transaction[1] Thread-2921 [AbstractCDORevision] Adjusting references for revision Customer@OID3v66 Thread-2921 [AbstractCDORevision] Setting version for Customer@OID3v65: v66 Thread-2920 [FiniteStateMachine] Processing event INVALIDATE in state CLEAN for Customer@OID3 (data=63) Thread-2921 [AbstractCDORevision] Setting created Customer@OID3v66: 19-mar-2009 14:01:04 Thread-2921 [AbstractCDORevision] Setting revised Customer@OID3v65: 19-mar-2009 14:01:04 Thread-2921 [LRURevisionCache] Adding revision: Customer@OID3v66, created=19-mar-2009 14:01:04, revised=01-ene-1970 1:00:00, current=true Thread-2921 [AbstractCDORevision] Setting revised Customer@OID3v65: 19-mar-2009 14:01:04 Thread-2915 [FiniteStateMachine] Processing event READ in state PROXY for Customer@OID3 (data=null) Thread-2921 [CDODataOutputImpl] Writing CDOID of type 0 (NULL) Thread-2921 [CommitNotificationRequest] Writing timeStamp: 19-mar-2009 14:01:04 Thread-2921 [CommitNotificationRequest] Writing 1 dirty IDs Thread-2921 [CDODataOutputImpl] Writing 0 package units Thread-2921 [CommitNotificationRequest] Writing dirty ID: OID3v65 Thread-2921 [CDODataOutputImpl] Writing CDOID of type 1 (OBJECT) Thread-2919 [CommitNotificationIndication] Read timeStamp: 19-mar-2009 14:01:04 Thread-2921 [Lifecycle] Deactivating MEMStoreAccessor@20283 Thread-2919 [CDODataInputImpl] Reading 0 package units Thread-2919 [CommitNotificationIndication] Reading 1 dirty IDs Thread-2919 [CDODataInputImpl] Reading CDOID of type 1 (OBJECT) Thread-2919 [CommitNotificationIndication] Read dirty ID: OID3v65 Thread-2919 [CommitNotificationIndication] Reading 0 Deltas Thread-2919 [CommitNotificationIndication] Reading 0 Detach Objects main [CDODataInputImpl] Reading CDOID of type 0 (NULL) main [CDOSingleTransactionStrategyImpl] CDOCommitContext.postCommit Thread-2920 [FiniteStateMachine] Processing event INVALIDATE in state CLEAN for Customer@OID3 (data=65) main [FiniteStateMachine] Processing event COMMIT in state DIRTY for Customer@OID3 (data=org.eclipse.emf.spi.cdo.CDOSessionProtocol$CommitTransactionResult@87c958) main [AbstractCDORevision] Setting ID: OID3 main [AbstractCDORevision] Setting untransactional Customer@OID3v-66: v66 main [AbstractCDORevision] Setting created Customer@OID3v66: 19-mar-2009 14:01:04 main [AbstractCDORevision] Adjusting references for revision Customer@OID3v66 Thread-2915 [FiniteStateMachine] Processing event READ in state PROXY for Customer@OID3 (data=null) main [LRURevisionCache] Adding revision: Customer@OID3v66, created=19-mar-2009 14:01:04, revised=01-ene-1970 1:00:00, current=true main [AbstractCDORevision] Setting revised Customer@OID3v65: 19-mar-2009 14:01:04 main [FiniteStateMachine] Processing event WRITE in state CLEAN for Customer@OID3 (data=org.eclipse.emf.cdo.internal.common.revision.delta.CDOSetFeatureDeltaImpl@b3ded7) main [AbstractCDORevision] Setting transactional Customer@OID3v66: v-67 main [CDOTransactionImpl] Registering dirty object Customer@OID3 main [CDOSingleTransactionStrategyImpl] CDOCommitContext.preCommit main [CDOTransactionImpl] commit() main [CommitTransactionRequest] Writing 0 new package units main [CommitTransactionRequest] Writing 0 new objects main [CommitTransactionRequest] Writing 1 dirty objects main [CDODataOutputImpl] Writing CDOID of type 1 (OBJECT) Thread-2919 [Lifecycle] Activating MEMStoreAccessor@20284 Thread-2919 [Lifecycle] DUMP MEMStoreAccessor@20284 StoreAccessor.commitContexts = StoreAccessor.store = MEMStore@20167 StoreAccessor.context = Transaction[1] StoreAccessor.reader = false newRevisions = Thread-2919 [CommitTransactionIndication] Reading 0 new package units Thread-2919 [CommitTransactionIndication] Reading 0 new objects Thread-2919 [CommitTransactionIndication] Reading 1 dirty object deltas Thread-2919 [CDODataInputImpl] Reading CDOID of type 1 (OBJECT) Thread-2919 [ProgressDistributor] Distribution: 83.22905234584448%, 16.770947654155517%, (indicatingCommitDistributor: repo1) Thread-2919 [AbstractCDORevision] Setting version for Customer@OID3v66: v67 Thread-2919 [AbstractCDORevision] Setting created Customer@OID3v67: 19-mar-2009 14:01:09 Thread-2919 [StoreAccessor] Writing transaction: Transaction[1] Thread-2919 [AbstractCDORevision] Adjusting references for revision Customer@OID3v67 Thread-2919 [AbstractCDORevision] Setting version for Customer@OID3v66: v67 Thread-2919 [AbstractCDORevision] Setting created Customer@OID3v67: 19-mar-2009 14:01:09 Thread-2919 [AbstractCDORevision] Setting revised Customer@OID3v66: 19-mar-2009 14:01:09 Thread-2919 [LRURevisionCache] Adding revision: Customer@OID3v67, created=19-mar-2009 14:01:09, revised=01-ene-1970 1:00:00, current=true Thread-2919 [AbstractCDORevision] Setting revised Customer@OID3v66: 19-mar-2009 14:01:09 Thread-2919 [CDODataOutputImpl] Writing CDOID of type 0 (NULL) Thread-2919 [CommitNotificationRequest] Writing timeStamp: 19-mar-2009 14:01:09 Thread-2919 [CommitNotificationRequest] Writing 1 dirty IDs Thread-2919 [CDODataOutputImpl] Writing 0 package units Thread-2919 [CommitNotificationRequest] Writing dirty ID: OID3v66 Thread-2919 [CDODataOutputImpl] Writing CDOID of type 1 (OBJECT) Thread-2919 [Lifecycle] Deactivating MEMStoreAccessor@20284 Thread-2919 [CommitNotificationIndication] Read timeStamp: 19-mar-2009 14:01:09 Thread-2919 [CDODataInputImpl] Reading 0 package units Thread-2919 [CommitNotificationIndication] Reading 1 dirty IDs Thread-2919 [CDODataInputImpl] Reading CDOID of type 1 (OBJECT) Thread-2919 [CommitNotificationIndication] Read dirty ID: OID3v66 Thread-2919 [CommitNotificationIndication] Reading 0 Deltas Thread-2919 [CommitNotificationIndication] Reading 0 Detach Objects Thread-2920 [FiniteStateMachine] Processing event INVALIDATE in state CLEAN for Customer@OID3 (data=66) main [CDODataInputImpl] Reading CDOID of type 0 (NULL) main [CDOSingleTransactionStrategyImpl] CDOCommitContext.postCommit main [FiniteStateMachine] Processing event COMMIT in state DIRTY for Customer@OID3 (data=org.eclipse.emf.spi.cdo.CDOSessionProtocol$CommitTransactionResult@b08afc) main [AbstractCDORevision] Setting ID: OID3 main [AbstractCDORevision] Setting untransactional Customer@OID3v-67: v67 main [AbstractCDORevision] Setting created Customer@OID3v67: 19-mar-2009 14:01:09 main [AbstractCDORevision] Adjusting references for revision Customer@OID3v67 main [LRURevisionCache] Adding revision: Customer@OID3v67, created=19-mar-2009 14:01:09, revised=01-ene-1970 1:00:00, current=true main [AbstractCDORevision] Setting revised Customer@OID3v66: 19-mar-2009 14:01:09 main [FiniteStateMachine] Processing event WRITE in state CLEAN for Customer@OID3 (data=org.eclipse.emf.cdo.internal.common.revision.delta.CDOSetFeatureDeltaImpl@74bc49) main [AbstractCDORevision] Setting transactional Customer@OID3v67: v-68 main [CDOTransactionImpl] Registering dirty object Customer@OID3 main [CDOSingleTransactionStrategyImpl] CDOCommitContext.preCommit main [CDOTransactionImpl] commit() main [CommitTransactionRequest] Writing 0 new package units main [CommitTransactionRequest] Writing 0 new objects main [CommitTransactionRequest] Writing 1 dirty objects main [CDODataOutputImpl] Writing CDOID of type 1 (OBJECT) Thread-2915 [FiniteStateMachine] Processing event READ in state PROXY for Customer@OID3 (data=null) Thread-2914 [Lifecycle] Activating MEMStoreAccessor@20285 Thread-2914 [Lifecycle] DUMP MEMStoreAccessor@20285 StoreAccessor.commitContexts = StoreAccessor.store = MEMStore@20167 StoreAccessor.context = Transaction[1] StoreAccessor.reader = false newRevisions = Thread-2914 [CommitTransactionIndication] Reading 0 new package units Thread-2914 [CommitTransactionIndication] Reading 0 new objects Thread-2914 [CommitTransactionIndication] Reading 1 dirty object deltas Thread-2914 [CDODataInputImpl] Reading CDOID of type 1 (OBJECT) Thread-2914 [ProgressDistributor] Distribution: 83.22905234584448%, 16.770947654155517%, (indicatingCommitDistributor: repo1) Thread-2914 [AbstractCDORevision] Setting version for Customer@OID3v67: v68 Thread-2914 [AbstractCDORevision] Setting created Customer@OID3v68: 19-mar-2009 14:01:10 Thread-2914 [StoreAccessor] Writing transaction: Transaction[1] Thread-2914 [AbstractCDORevision] Adjusting references for revision Customer@OID3v68 Thread-2914 [AbstractCDORevision] Setting version for Customer@OID3v67: v68 Thread-2914 [AbstractCDORevision] Setting created Customer@OID3v68: 19-mar-2009 14:01:10 Thread-2914 [AbstractCDORevision] Setting revised Customer@OID3v67: 19-mar-2009 14:01:10 Thread-2914 [LRURevisionCache] Adding revision: Customer@OID3v68, created=19-mar-2009 14:01:10, revised=01-ene-1970 1:00:00, current=true Thread-2914 [AbstractCDORevision] Setting revised Customer@OID3v67: 19-mar-2009 14:01:10 Thread-2914 [CDODataOutputImpl] Writing CDOID of type 0 (NULL) Thread-2914 [CommitNotificationRequest] Writing timeStamp: 19-mar-2009 14:01:10 Thread-2914 [CommitNotificationRequest] Writing 1 dirty IDs Thread-2914 [CDODataOutputImpl] Writing 0 package units Thread-2914 [CommitNotificationRequest] Writing dirty ID: OID3v67 Thread-2914 [CDODataOutputImpl] Writing CDOID of type 1 (OBJECT) Thread-2914 [Lifecycle] Deactivating MEMStoreAccessor@20285 Thread-2914 [CommitNotificationIndication] Read timeStamp: 19-mar-2009 14:01:10 Thread-2914 [CDODataInputImpl] Reading 0 package units Thread-2914 [CommitNotificationIndication] Reading 1 dirty IDs Thread-2914 [CDODataInputImpl] Reading CDOID of type 1 (OBJECT) Thread-2914 [CommitNotificationIndication] Read dirty ID: OID3v67 Thread-2914 [CommitNotificationIndication] Reading 0 Deltas Thread-2914 [CommitNotificationIndication] Reading 0 Detach Objects Thread-2920 [FiniteStateMachine] Processing event INVALIDATE in state CLEAN for Customer@OID3 (data=67) main [CDODataInputImpl] Reading CDOID of type 0 (NULL) main [CDOSingleTransactionStrategyImpl] CDOCommitContext.postCommit main [FiniteStateMachine] Processing event COMMIT in state DIRTY for Customer@OID3 (data=org.eclipse.emf.spi.cdo.CDOSessionProtocol$CommitTransactionResult@16cc9e5) main [AbstractCDORevision] Setting ID: OID3 main [AbstractCDORevision] Setting untransactional Customer@OID3v-68: v68 main [AbstractCDORevision] Setting created Customer@OID3v68: 19-mar-2009 14:01:10 main [AbstractCDORevision] Adjusting references for revision Customer@OID3v68 main [LRURevisionCache] Adding revision: Customer@OID3v68, created=19-mar-2009 14:01:10, revised=01-ene-1970 1:00:00, current=true main [AbstractCDORevision] Setting revised Customer@OID3v67: 19-mar-2009 14:01:10 main [FiniteStateMachine] Processing event WRITE in state CLEAN for Customer@OID3 (data=org.eclipse.emf.cdo.internal.common.revision.delta.CDOSetFeatureDeltaImpl@13afe05) main [AbstractCDORevision] Setting transactional Customer@OID3v68: v-69 main [CDOTransactionImpl] Registering dirty object Customer@OID3 main [CDOSingleTransactionStrategyImpl] CDOCommitContext.preCommit main [CDOTransactionImpl] commit() main [CommitTransactionRequest] Writing 0 new package units main [CommitTransactionRequest] Writing 0 new objects main [CommitTransactionRequest] Writing 1 dirty objects main [CDODataOutputImpl] Writing CDOID of type 1 (OBJECT) Thread-2921 [Lifecycle] Activating MEMStoreAccessor@20286 Thread-2921 [Lifecycle] DUMP MEMStoreAccessor@20286 StoreAccessor.commitContexts = StoreAccessor.store = MEMStore@20167 StoreAccessor.context = Transaction[1] StoreAccessor.reader = false newRevisions = Thread-2921 [CommitTransactionIndication] Reading 0 new package units Thread-2921 [CommitTransactionIndication] Reading 0 new objects Thread-2921 [CommitTransactionIndication] Reading 1 dirty object deltas Thread-2921 [CDODataInputImpl] Reading CDOID of type 1 (OBJECT) Thread-2921 [ProgressDistributor] Distribution: 83.22905234584448%, 16.770947654155517%, (indicatingCommitDistributor: repo1) Thread-2921 [AbstractCDORevision] Setting version for Customer@OID3v68: v69 Thread-2921 [AbstractCDORevision] Setting created Customer@OID3v69: 19-mar-2009 14:01:10 Thread-2921 [StoreAccessor] Writing transaction: Transaction[1] Thread-2921 [AbstractCDORevision] Adjusting references for revision Customer@OID3v69 Thread-2921 [AbstractCDORevision] Setting version for Customer@OID3v68: v69 Thread-2921 [AbstractCDORevision] Setting created Customer@OID3v69: 19-mar-2009 14:01:10 Thread-2921 [AbstractCDORevision] Setting revised Customer@OID3v68: 19-mar-2009 14:01:10 Thread-2921 [LRURevisionCache] Adding revision: Customer@OID3v69, created=19-mar-2009 14:01:10, revised=01-ene-1970 1:00:00, current=true Thread-2921 [AbstractCDORevision] Setting revised Customer@OID3v68: 19-mar-2009 14:01:10 Thread-2921 [CDODataOutputImpl] Writing CDOID of type 0 (NULL) Thread-2921 [CommitNotificationRequest] Writing timeStamp: 19-mar-2009 14:01:10 Thread-2921 [CommitNotificationRequest] Writing 1 dirty IDs Thread-2921 [CDODataOutputImpl] Writing 0 package units Thread-2921 [CommitNotificationRequest] Writing dirty ID: OID3v68 Thread-2915 [FiniteStateMachine] Processing event READ in state PROXY for Customer@OID3 (data=null) Thread-2921 [CDODataOutputImpl] Writing CDOID of type 1 (OBJECT) Thread-2921 [Lifecycle] Deactivating MEMStoreAccessor@20286 main [CDODataInputImpl] Reading CDOID of type 0 (NULL) main [CDOSingleTransactionStrategyImpl] CDOCommitContext.postCommit main [FiniteStateMachine] Processing event COMMIT in state DIRTY for Customer@OID3 (data=org.eclipse.emf.spi.cdo.CDOSessionProtocol$CommitTransactionResult@1881485) main [AbstractCDORevision] Setting ID: OID3 main [AbstractCDORevision] Setting untransactional Customer@OID3v-69: v69 main [AbstractCDORevision] Setting created Customer@OID3v69: 19-mar-2009 14:01:10 main [AbstractCDORevision] Adjusting references for revision Customer@OID3v69 main [LRURevisionCache] Adding revision: Customer@OID3v69, created=19-mar-2009 14:01:10, revised=01-ene-1970 1:00:00, current=true main [AbstractCDORevision] Setting revised Customer@OID3v68: 19-mar-2009 14:01:10 main [FiniteStateMachine] Processing event WRITE in state CLEAN for Customer@OID3 (data=org.eclipse.emf.cdo.internal.common.revision.delta.CDOSetFeatureDeltaImpl@fb2dad) main [AbstractCDORevision] Setting transactional Customer@OID3v69: v-70 main [CDOTransactionImpl] Registering dirty object Customer@OID3 main [CDOSingleTransactionStrategyImpl] CDOCommitContext.preCommit main [CDOTransactionImpl] commit() main [CommitTransactionRequest] Writing 0 new package units main [CommitTransactionRequest] Writing 0 new objects main [CommitTransactionRequest] Writing 1 dirty objects main [CDODataOutputImpl] Writing CDOID of type 1 (OBJECT) Thread-2919 [Lifecycle] Activating MEMStoreAccessor@20287 Thread-2919 [Lifecycle] DUMP MEMStoreAccessor@20287 StoreAccessor.commitContexts = StoreAccessor.store = MEMStore@20167 StoreAccessor.context = Transaction[1] StoreAccessor.reader = false newRevisions = That's what keeps appearing in my console on an on. I have a relative old computer (Pentium III 2Ghz, 2Gb RAM) Simon, I must leave for some hours, we can continue the discussion later. Ok based on the logs it is not a DeadLock case. It is a slow computer problem1! :-) I will reduce the number of iteration... but not too low since I was not able to reproduce it with low iteration... if I remember correctly it took me few secs on my computer!! :-) I will put MEMStore only as well. (Or not DBStore) Simon Simon, if its a slow computer problem, then don't change the number of iterations. I'll leave the test on, or skis this test from the suite. Thanks, and sorry for any inconvenience Hi Simon, finally back and saw the results of the test-case. Yes, it passes :) But it took my computer 38 minutes!!!!!! I think I've changed my mind, is there any way to reduce this in slow computers? :P Cheers, ViK humm.. even if I put it at 250... it will still takes 18-19 minutes. I will look at home how much time does it take... and let you know the result. After that we will be able to adjust! Vik, this testcase takes me 10 secs... (Maximum) I think we should enter a new bugzilla to upgrade your computer!! :-) Seriously...I think something else is happening. Can you run only this testcase and tell me how much time does it take ? Simon > I think we should enter a new bugzilla to upgrade your computer!! :-) Tell my boss to put this to P1 priority :P > > Seriously...I think something else is happening. Can you run only this testcase > and tell me how much time does it take ? I think that too. As I commented to Eike, I don't think a Quad Core makes so much diference against a Pentium III 2Ghz to take computation from 38 minutes to 10 seconds. And the results I gave you before was executing ONLY this testcase. :( Fix available in EMF CDO 2.0.0M6b Generally available. |
Created attachment 127443 [details] The zipped transfertest project When exploring the possibilities of CDO I have developed a simple file transfer example. A file is transferred through the CDO repository from one client (Client1) to another (Client2). The attached example project consists of a simple model with a Transfer class that holds a Byte array of data that represents a chunk of the file that should go from Client1 to Client2. Both client accesses the same class in the same model and uses the Transfer class attributes to hold the data chunks and the size of the data. The size attribute is also used by the receiver (Client2) to let the sender (Client1) know when it has read/received the data (by setting it to '-1'). When running the example make sure that you change the hard-coded file path at Client1.java, line 55, to an existing file. I admit that there are much better and faster ways of transferring a file, but ignore that and see this rather as a performance test case for CDO. Both Client1 and Client2 are run as standalone Java applications, and I am using the latest CDO sources (HEAD) with the default CDO server (DBStore). I should note that this problem can be seen with MEMStore as well. Stepping through the "main" methods of Client1 and Client2 it seems to work just fine, but when running both clients I get the following exception: java.lang.IllegalStateException: revision == null at org.eclipse.emf.internal.cdo.CDOStore.getRevision(CDOStore.java:594) at org.eclipse.emf.internal.cdo.CDOStore.getRevisionForReading(CDOStore.java:580) at org.eclipse.emf.internal.cdo.CDOStore.get(CDOStore.java:178) at org.eclipse.emf.ecore.impl.EStoreEObjectImpl.dynamicGet(EStoreEObjectImpl.java:646) at org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSettingDelegateSingleData.dynamicGet(EStructuralFeatureImpl.java:1959) at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1029) at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1013) at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1005) at transfer.impl.TransferImpl.getSize(TransferImpl.java:88) at client1.Client1.main(Client1.java:73) Is this a bug? If not, how do I prevent this error from occuring?