On Mon, 2006-06-19 at 14:47 +0200, Marcel Reutegger wrote:
> There are two reason why this can happen (as far as I can see):
> 
> - the session actually did modify the node /counter before calling
> generateNewResourceId(), thus it cannot lock the node
> 
> or
> 
> - a previous call to generateNewResourceId() failed in the
> Locked.run() method, leaving unsaved changes.
> The Locked utility does not automatically revert changes in case of an
> exception thrown by Locked.run(). That's the responsibility of the
> caller, because only he knows what is actually done in Locked.run().
> 
> The code you provided only shows the Locked.run() method, but does not
> include a test case that shows how and when generateNewResourceId() is
> called. Do you have a simple test that reproduces the
> InvalidItemStateException? 

Hmm, it's a bit difficult as I'd have to rip it out of the framework..
I'll put something simple together.

> One other question: does this happen always
> or only sporadically?

It happens all the time.

Would it be correct to call refresh(false) on the counter node in case
of an exception? I only ever modify the value property when the node is
created and in the generateNewResourceId() method.



-- 
Torgeir Veimo <[EMAIL PROTECTED]>

Reply via email to