jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Woonsan Ko (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (JCR-2913) Shared nodes disappear suddenly - Database corruption : Cannot delete nodes anymore : Node with id 'X" does not have shared parent with id: 'Y'
Date Mon, 30 Dec 2013 17:26:51 GMT

    [ https://issues.apache.org/jira/browse/JCR-2913?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13858938#comment-13858938

Woonsan Ko commented on JCR-2913:

I happened to see the same error message while deleting a node as well.
So, I looked into the code from there throwing this exception message: ItemManager.java and

I don't have a whole picture with those, but there might be a thread safety issue in NodeState.java
where 'sharedSet' private member must be used in synchronized way. All related operations
of NodeSet class are marked as synchronized when using 'sharedSet' member except of NodeSet#getSharedSet()

And NodeSet#getSharedSet() seems to have been used in many locations. e.g, HierarchyManagerImpl#getParentIds(),
ItemSaveOperation#perform(SessionContext), NodeImpl#getSharedSet(), NodeIndexer#createDoc(),
SharedItemStateManager#checkParent(), etc.

Doesn't NodeSet#getSharedSet() need to be marked as synchronized as well to avoid this kind
of issue?

> Shared nodes disappear suddenly - Database corruption : Cannot delete nodes anymore :
Node with id 'X" does not have shared parent with id: 'Y'
> -----------------------------------------------------------------------------------------------------------------------------------------------
>                 Key: JCR-2913
>                 URL: https://issues.apache.org/jira/browse/JCR-2913
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>            Reporter: julien revel
>            Priority: Critical
> This problem occurs on a following configuration
> - JCR 2.3 Snapshot
> - Tomcat 6
> - Postgresql 9.0
> Jackrabbit is embedded within a Spring application, that communicates with clients in
AMF format (Flex client)
> The symptom is that some shared Nodes have disappeared from the repository, without having
deleted by our application (and we checked a lot already).
> Then, repository seems to be corrupted, because it becomes impossible to delete any ancestor
node of those having disappear.
> The error is not reproducible, it may happen at any time, it is random.
> Sometimes, with a fresh base, after creating some nodes, sometimes it happens after a
while, when playing with the application.
> It never happened on Jetty/Derby development server, but always happened on servers with
Postgres, even with a single user.
> I guess it is not a bug in JCR, but that we provoked the problem in some way. Maybe by
multi-threading  ? 
> However, for each remote call that send data to write, we create a new JCRSession, then
save it multiple times, then close it.

This message was sent by Atlassian JIRA

View raw message