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)