You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Marcel Reutegger (JIRA)" <ji...@apache.org> on 2014/03/18 21:18:44 UTC

[jira] [Reopened] (OAK-333) 1000 byte path limit in MongoMK

     [ https://issues.apache.org/jira/browse/OAK-333?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Marcel Reutegger reopened OAK-333:
----------------------------------


With these changes several tests fail. Unfortunately our travis builds failed already before and we didn't notice this regression.

As a quick workaround I reverted the changes in CacheInvalidator: http://svn.apache.org/r1579027

The problem is that the cache may also contain NodeDocument.NULL entries. These don't have a path nor an id. Because of this I got the following exception in the logs:

{noformat}
19:51:24.827 WARN  [main] DocumentNodeStore.java:1285        Background operation failed: java.lang.NullPointerException
java.lang.NullPointerException: null
        at org.apache.jackrabbit.oak.plugins.document.util.Utils.getPathFromId(Utils.java:265) ~[oak-core-0.19-SNAPSHOT.jar:0.19-SNAPSHOT]
        at org.apache.jackrabbit.oak.plugins.document.NodeDocument.getPath(NodeDocument.java:1175) ~[oak-core-0.19-SNAPSHOT.jar:0.19-SNAPSHOT]
        at org.apache.jackrabbit.oak.plugins.document.mongo.CacheInvalidator$HierarchicalInvalidator.constructTreeFromPaths(CacheInvalidator.java:279) ~[oak-core-0.19-SNAPSHOT.jar:0.19-SNAPSHOT]
        at org.apache.jackrabbit.oak.plugins.document.mongo.CacheInvalidator$HierarchicalInvalidator.invalidateCache(CacheInvalidator.java:177) ~[oak-core-0.19-SNAPSHOT.jar:0.19-SNAPSHOT]
        at org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentStore.invalidateCache(MongoDocumentStore.java:189) ~[oak-core-0.19-SNAPSHOT.jar:0.19-SNAPSHOT]
        at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.backgroundRead(DocumentNodeStore.java:1333) ~[oak-core-0.19-SNAPSHOT.jar:0.19-SNAPSHOT]
        at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.runBackgroundOperations(DocumentNodeStore.java:1280) ~[oak-core-0.19-SNAPSHOT.jar:0.19-SNAPSHOT]
        at org.apache.jackrabbit.oak.jcr.ConcurrentAddNodesClusterIT.runBackgroundOps(ConcurrentAddNodesClusterIT.java:326) [test-classes/:na]
        at org.apache.jackrabbit.oak.jcr.ConcurrentAddNodesClusterIT.rebaseVisibility(ConcurrentAddNodesClusterIT.java:249) [test-classes/:na]
{noformat}

The stack trace also shows one of the tests to reliably reproduce the failure: ConcurrentAddNodesClusterIT.rebaseVisibility in oak-jcr

> 1000 byte path limit in MongoMK
> -------------------------------
>
>                 Key: OAK-333
>                 URL: https://issues.apache.org/jira/browse/OAK-333
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: mongomk
>    Affects Versions: 0.5
>            Reporter: Mete Atamel
>            Assignee: Thomas Mueller
>            Priority: Minor
>             Fix For: 0.19
>
>         Attachments: NodeNameLimitsTest.java, OAK-333.patch
>
>
> In an infinite loop try to add nodes one under another to have N0/N1/N2...NN. At some point, the current parent node will not be found and the current commit will fail. I think this happens when the path length exceeds 1000 characters. Is this enough for a path? I was able to create this way only 222 levels in the tree (and my node names were really short N1, N2 ...)
> There's an automated tests for this: NodeExistsCommandMongoTest.testTreeDepth



--
This message was sent by Atlassian JIRA
(v6.2#6252)