Community
Participate
Working Groups
Intention is to make centric integrity checking on client side on every single commit. Client must be able to switch off integrity checking on client on his own risk.
### Eclipse Workspace Patch 1.0 #P org.eclipse.emf.cdo Index: src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java =================================================================== --- src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java (revision 6984) +++ src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java (working copy) @@ -2315,12 +2315,7 @@ try { - // TODO (CD) It might be better to always do the checks, - // instead of only for partial commits - if (isPartialCommit) - { - new CommitIntegrityCheck(this, CommitIntegrityCheck.Style.EXCEPTION_FAST).check(); - } + new CommitIntegrityCheck(this, CommitIntegrityCheck.Style.EXCEPTION_FAST).check(); preCommit(getNewObjects(), lobs); preCommit(getDirtyObjects(), lobs);
Btw, client-side disabling of the checks makes no sense. The server-side protection (the one that Eike will extend to cover bidi refs) would reject the commit anyway.
Server side checking is configurable by property "ensureReferentialIntegrity" on repository configuration, which seems to be false by default. I think the same property could be added to session options for client side and make it by default true
After I had enabled integrity check, more errors like NPE appeared. For example TransactionTest.testPushModeNewObjects gets CDOResource from dirty object set, regardless that it has CLEAN state. How could it happen? Later this resource is used for obtaining clean revision from the transaction map, which doens't hold clean revision for it.
Created attachment 189798 [details] patch v1 Included Caspar patch. Additionally added to transaction option to turn on/off integrity check "isCommitIntegrityCheckEnabled". Moved CommitIntegrityCheck to SPI - I think it will be useful to use this code for client to collect and adjust missing objects before commit. I have made "isCommitIntegrityCheckEnabled" option return false by default, because that all tests are not passing if it is by default set to true. Problems are reported in 337523 and 337587)
Moving all open enhancement requests to 4.1
Moving all open issues to 4.2. Open bugs can be ported to 4.1 maintenance after they've been fixed in master.
Moving all outstanding enhancements to 4.3
Moving all open enhancement requests to 4.4
Moving all open bugzillas to 4.5.
Moving all unaddressed bugzillas to 4.6.
Moving all open bugs to 4.7
Moving all unresolved issues to version 4.8-
Moving all unresolved issues to version 4.9
Moving to 4.13.