Hi all,
I'm playing with multi-threaded stuff (SVN trunk from less than 10
minutes).
Let suppose that two different threads acquire a Session, then get the
same Node X and then add a new child to this Node, and then call the
save() method.
First save() call will success, and second one will lead to :
javax.jcr.InvalidItemStateException:
b13b8065-5115-4bd3-87cf-5544879209e8: the item cannot be saved because
it has been modified externally.
The given UUID being the actual UUID of the Node X.
I assume this behaviour is ok, isn't it ?
But, second step, just before calling the method save(), I call
session.refresh(true), and what I'm getting is not what I was expecting :
firstly, the InvalidItemStateException is here again
and secondly, after debugging, it appears that the refresh(true) doesn't
behave as expected : after the second call to refresh(true), the second
Sessions does not know (according to itemExists()) the first child
created by the first Session.
My code is equivalent to :
Node X = session.getNode(path);
X.addNode(whateverUniqueName);
session.refresh(true);
session.save();
Do I misunderstood the refresh() method ? Or is there a bug here ?
Regards,
--
Cédric Damioli
ANYWARE TECHNOLOGIES
Tel : +33 (0)5 61 00 52 90
Fax : +33 (0)5 61 00 51 46
http://www.anyware-tech.com