On 6/20/06, Martin Koci <[EMAIL PROTECTED]> wrote:
Thanks for your answer.

Unfortunately my problem is not reproducible  with a test. I'm using
repository from production environment and that problem appears only
with that repository.

Probably repository is corrupted but this should never happen.

i agree it shouldn't happen. what jackrabbit version are you refering to?
what's the configuration of your repository (PersistenceManager & FileSystem)?

cheers
stefan

I've added method for removing problematic node but it leads to similar
exception:
javax.jcr.ItemNotFoundException: a156b553-accf-4137-85cb-93ed24d4c8d4
        at
org.apache.jackrabbit.core.ItemManager.createItemInstance(ItemManager.java:465)
        at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:321)
        at org.apache.jackrabbit.core.NodeImpl.onRemove(NodeImpl.java:661)
        at org.apache.jackrabbit.core.NodeImpl.onRemove(NodeImpl.java:662)
        at org.apache.jackrabbit.core.NodeImpl.onRemove(NodeImpl.java:662)
        at org.apache.jackrabbit.core.NodeImpl.onRemove(NodeImpl.java:662)
        at org.apache.jackrabbit.core.NodeImpl.onRemove(NodeImpl.java:662)
        at org.apache.jackrabbit.core.NodeImpl.onRemove(NodeImpl.java:662)
        at
org.apache.jackrabbit.core.NodeImpl.removeChildNode(NodeImpl.java:626)
        at
org.apache.jackrabbit.core.ItemImpl.internalRemove(ItemImpl.java:867)
        at org.apache.jackrabbit.core.ItemImpl.remove(ItemImpl.java:1053)
        at
cz.aura.cms.preferences.impl.PreferencesServiceImpl.deleteUserPreferenceNode(PreferencesServiceImpl.java:271)

Is there any chance to remove problematic nodes? And I don't understand
why item.remove() calls ItemManager.createItemInstance as shown in stack
trace above.

Thanks for any help
Martin

Stefan Guggisberg píše v Út 20. 06. 2006 v 12:31 +0200:
> On 6/19/06, Martin Koci <[EMAIL PROTECTED]> wrote:
> > As I'm looking to current code, this exception is thrown with
> > SessionItemStateManager, because associated instances of
> > TransientItemStateManager and TransientItemStateManager haven'n this
> > item.
> >
> > I don't understand what createItemInstance method in item manager does -
> > first called method is for getting state of newly creating item:
> >
> >         try {
> >             state = itemStateProvider.getItemState(id);
> >         } catch (NoSuchItemStateException nsise) {
> >             throw new ItemNotFoundException(id.toString());
> >         }
> > But how can  item has such state when we are in method for creating this
> > item, so the item doesn't exist yet?
>
> ItemManager#createItemInstance creates, as tis name implies, an ItemImpl
> instance. ItemImpl, NodeImpl and PropertyImpl wrap the state of an item and
> expose the javax.jcr.Item et al interfaces. so if there's no state, it
> can't create
> an ItemImpl wrapper. that's all fine.
>
> regarding your problem: please provide a simple test case which reproduces 
your
> issue.
>
> cheers
> stefan
>
>
>
>
>
> >
> > Thanks,
> >
> > Martin
> >
> > Martin Koci píše v Po 19. 06. 2006 v 12:00 +0200:
> > > Hello,
> > >
> > > I'm adding recursively nodes, but this leads to exception occasionally:
> > > javax.jcr.ItemNotFoundException: d1a479a0-b822-43a3-8181-9380635fb02a
> > >       at
> > > 
org.apache.jackrabbit.core.ItemManager.createItemInstance(ItemManager.java:464)
> > >       at 
org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:320)
> > >       at
> > > 
org.apache.jackrabbit.core.NodeImpl.internalAddChildNode(NodeImpl.java:794)
> > >       at
> > > org.apache.jackrabbit.core.NodeImpl.internalAddNode(NodeImpl.java:738)
> > >       at
> > > org.apache.jackrabbit.core.NodeImpl.internalAddNode(NodeImpl.java:685)
> > >       at org.apache.jackrabbit.core.NodeImpl.addNode(NodeImpl.java:1772)
> > >       at
> > > 
cz.aura.cms.preferences.impl.PreferencesServiceImpl.addRecursively(PreferencesServiceImpl.java:195)
> > >
> > >
> > > My code is:
> > > for (int i = 0; i < nodeNames.length; i++) {
> > >           relPath = nodeNames[i];
> > >                 if (workNode.hasNode(relPath) == false) {
> > >                     Node node = workNode.addNode(relPath);
> > >                     workNode = node;
> > >                 } else {
> > >                     workNode = workNode.getNode(relPath);
> > >                 }
> > > }
> > >
> > > Unfortunately this behaviour is not reproducible with test and come on
> > > accidentally.
> > >
> > > Thanks,
> > >
> > > Martin
> > >
> > >
> > >
> >
> >
>


Reply via email to