You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by Apache Wiki <wi...@apache.org> on 2011/12/01 14:27:13 UTC

[Jackrabbit Wiki] Update of "Transactional model of the Microkernel based Jackrabbit prototype" by stefan

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Jackrabbit Wiki" for change notification.

The "Transactional model of the Microkernel based Jackrabbit prototype" page has been changed by stefan:
http://wiki.apache.org/jackrabbit/Transactional%20model%20of%20the%20Microkernel%20based%20Jackrabbit%20prototype?action=diff&rev1=4&rev2=5

- The [[http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/ | MicroKernel]] based JCR implementation uses snapshot isolation with a relaxed first committer wins [1] strategy. That is, on login each session is under the impression of operating on its own copy of the repository. Modifications from other sessions do not affect the current session. With the relaxed first committer wins strategy a later session will fail on save when it contains operations which are incompatible with the operations of an earlier session which saved successfully. This is different from the standard first committer wins strategy where failure would occur on conflicting operations rather than on incompatible operations. Incompatible is weaker than conflict since two write operation on the same item do conflict but are not incompatible. The details of what incompatible means are implemented in the [[http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/CommitBuilder.java?view=markup | MicroKernel's internal mergeNode method]].
+ The [[http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/ | MicroKernel]] based JCR implementation uses snapshot isolation with a relaxed first committer wins [1] strategy. That is, on login each session is under the impression of operating on its own copy of the repository. Modifications from other sessions do not affect the current session. With the relaxed first committer wins strategy a later session will fail on save when it contains operations which are incompatible with the operations of an earlier session which saved successfully. This is different from the standard first committer wins strategy where failure would occur on conflicting operations rather than on incompatible operations. Incompatible is weaker than conflict since two write operation on the same item do conflict but are not incompatible. The details of what incompatible means are implemented in the [[http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/CommitBuilder.java?view=markup | MicroKernel's internal mergeNode method]].
  
  Snapshot isolation exhibits write skew [1] which might turn out to be problematic for maintaining consistency guarantees imposed by JCR. Consider the following events for node n which is initially of type nt:unstructured:
  {{{