Details

Description

I've been working on a partial fix to JCR-630. Instead of implementing fully transactional versioning (i.e. a checkin will disappear when a transactin is rolled back), I'm ensuring that all versioning operations within a transaction will leave the version store in a consistent state even if the transaction otherwise fails at any point.

Jukka Zitting
added a comment - 07/Oct/08 09:20 Fixed in trunk. I have streamlined a number of the versioning operations and made sure that all versioning changes are persisted strictly before they get referenced in normal workspace content.

The behaviour without transactions is as expected, even though it results in more store operations than would be optimal. The XA case is wrong, and I've been trying to address that.

First I revisited my original plan of solving both the transaction issue and optimize the number of stores in versioning operations by moving the NodeReferences that point to the version store to the workspace persistence managers. This would improve a number of things but breaks the backreference checks for example when deleting versions. I had an idea to resolve that issue but unfortunately it didn't work out too well in practice.

As a fallback I'm now solving just the XA case and leaving the multiple store operations in place.

Jukka Zitting
added a comment - 30/Oct/08 08:22 The behaviour without transactions is as expected, even though it results in more store operations than would be optimal. The XA case is wrong, and I've been trying to address that.
First I revisited my original plan of solving both the transaction issue and optimize the number of stores in versioning operations by moving the NodeReferences that point to the version store to the workspace persistence managers. This would improve a number of things but breaks the backreference checks for example when deleting versions. I had an idea to resolve that issue but unfortunately it didn't work out too well in practice.
As a fallback I'm now solving just the XA case and leaving the multiple store operations in place.