Hi Julian,
  i'm Raffaele's colleague and perhaps I can better specify the strange
behaviour that we are facing.

The scenario is the following:
1) create a new node (NOT versionable)
2) set some properties
3) save the session
4) set a previously not existing property on the node itself
5) saving the session

At stage 5) we face a strange behaviour: the Jackrabbit session, using its
SharedItemStateManager (SISM), tries to retrieve from the cache the bundle
for the property (method getItemState at line 258 in trunk), but doesn't
find it in its internal (call to getNonVirtualItemState() throws an
exception), so execution proceed to the for cycle at line 283.
In this for cycle the SISM checks its VirtualItemStateProvider that in fact
contains a VersionItemStateProvider and a VirtualNodeTypeStateProvider.
Obviously, the bundle is not in the version cache, so the persistenceManager
bounded to the VersionItemStateProvider tries to retrieve it from the DB,
thus executing the query "select BUNDLE_DATA from VERSION_BUNDLE where
NODE_ID = :1".

To me this is not correct in two ways: 
a) I think that, after the save in stage 3 the bundle should be in cache
b) even if the bundle is not in cache, it doesn't have to be retrieved from
the versioning layer if the corresponding nodeType is not versionable

If this is right, we should consider a patch to avoid the problem putting
the bundle in cache after a save or avoid the search in versions.

I'd like to have from you some advice on my thoughts, first if they seems
correct to you or I am misunderstand the behaviour.

Thanks in advance

BR

Luca Tagliani



--
Sent from: http://jackrabbit.510166.n4.nabble.com/Jackrabbit-Users-f510167.html

Reply via email to