Hi Stefan,

the correct beahviour should be:

s0 : Read the rootNode
s1 : Read the rootNode
s0 : Modify rootNode : remove testnode-s0
s1 : Modify rootNode : remove testnode-s1 & save() -->ERROR the rootNode

 there should be no error at this point, s0 has not been saved yet.

s0 : save()

 now there should be an error since s1 saved its state before

s1 : save() -->InvalidItemStateException since the root node has been externally
      modifiied (by s0) is has s1's 'copy' has become stale as a result

I dont think that here should be an error, since the last saved (commited) version of the rootNode is from s1 and the changes from s0 has not been valid and not commited. so the nodes state has not changed.

we'll fix that asap.

Thanks for the discussion. Now I unterstand jackrabbits way of doing. But in my opinion adding child nodes should not alter the parent node itself. Just changing some properties is a state change.

Furthermore there should be an error just in the case, that both updates overwrite the changes of the other -> to prevent lost update problems.
In my example code it´s not the case, so I would prefer no error at all.
What do you think?

cheers,
Walter

Reply via email to