Hi Przemo,

transaction isolation level currently supported by jackrabbit is in
fact READ-COMMITTED, i.e. a transaction can only see modifications
committed by other transactions, but such a committed modification may
affect reads of this transaction.

Regards
Dominique

On 3/10/06, Przemyslaw Pakulski <[EMAIL PROTECTED]> wrote:
> Hi,
>
> We are introducing transactions to our system, and run some concurrency
> tests. We read in jsr170 spec that transactions should be completely
> isolated from each other.
>
> Considering following simple block of code :
>
>  > folder = getFolder(session);
>  > CrxUserTransaction ut = new CrxUserTransaction(session);
>  >
>  > 0 ut.begin();
>  > 1  folder.checkout();
>  > 2  Node child = folder.addNode("child");
>  > 3  child.addMixin("mix:versionable"); 4  child.setProperty("id", id);
>  > 5  child.setProperty("iteration", i);
>  > 6  folder.save();
>  > 7  child.checkin();
>  > 8  folder.checkin();
>  > 9 ut.commit();
>
> We noticed different exceptions in different lines, executing this block
> concurrently :
> - line 1 - InvalidItemStateException : the item does not exist anymore,
> - line 6 - InvalidItemStateException : item cannot be saved because it
> has been modified externally,
> - line 9 - XAException caused by StaleItemStateExcpetion :
> {http://www.jcp.org/jcr/1.0}isCheckedOut has been modified externally
>
> Certainly we don't share session between threads, we use dedicated
> session for each thread.
>
> So, it looks like transactions can see changes made by other
> transactions, what means jackrabbit doesn't support SERIALIZABLE and
> even REPETABLE_READ isolation level, but only READ_COMMITTED level.
>
> Can anybody explain what really isolation level is supported by
> jackrabbit implementation currently ?
>
> Regards
> Przemo Pakulski
> www.cognifide.com
>

Reply via email to