hi, Please see the updated patch on OAK-410, it should help address the restart issue you've noticed.
best, alex On Thu, Jan 17, 2013 at 9:12 AM, Marcel Reutegger <[email protected]>wrote: > OK, thanks for the pointer. > > Regards > Marcel > > > -----Original Message----- > > From: Alex Parvulescu [mailto:[email protected]] > > Sent: Mittwoch, 16. Januar 2013 17:36 > > To: [email protected] > > Subject: Re: strange restart behavior > > > > Hi Marcel, > > > > You are right, there is a problem there! > > > > It currently works like that because we needed to index the initial > content > > (mostly security related content) otherwise some queries would fail. > > > > Right now each RepositoryInitializer is free to add some content but that > > usually happens on a private branch which is merged into the NodeStore, > so > > the IndexHookManager cannot distinguish between new content from the > > initializer and already existing content from before. > > > > What we could do is related to the existing TODO in the code: refactor > the > > code so that we can branch before running the RepositoryInitializer(s), > > initialize on the fresh branch, index it, and finally merge it back with > > everything included. (This way we can also save a bunch of branch/merge > > calls - not that it is really important.) > > > > See OAK-410 for the initial discussion [0]. > > > > best, > > alex > > > > [0] https://issues.apache.org/jira/browse/OAK-410 > > > > > > On Wed, Jan 16, 2013 at 3:44 PM, Marcel Reutegger > > <[email protected]>wrote: > > > > > Hi, > > > > > > I see a strange behavior on restart of the repository. > > > > > > the thread dump shows something like this: > > > > > > at > > > > > org.apache.jackrabbit.oak.kernel.KernelNodeState.getChildNode(KernelNod > > eState.java:169) > > > at > > > > > org.apache.jackrabbit.oak.spi.state.AbstractNodeState.hasChildNode(Abstra > > ctNodeState.java:63) > > > at > > > > > org.apache.jackrabbit.oak.plugins.memory.MemoryNodeBuilder.hasBaseSta > > te(MemoryNodeBuilder.java:173) > > > at > > > > > org.apache.jackrabbit.oak.plugins.memory.MemoryNodeBuilder.child(Mem > > oryNodeBuilder.java:465) > > > at > > > > > > org.apache.jackrabbit.oak.plugins.index.p2.strategy.ContentMirrorStoreStra > > tegy.insert(ContentMirrorStoreStrategy.java:123) > > > at > > > > > org.apache.jackrabbit.oak.plugins.index.p2.Property2IndexUpdate.apply(Pr > > operty2IndexUpdate.java:146) > > > at > > > > > > org.apache.jackrabbit.oak.plugins.index.p2.Property2IndexDiff.apply(Proper > > ty2IndexDiff.java:232) > > > at > > > > > org.apache.jackrabbit.oak.plugins.index.IndexHookManager.apply(IndexHo > > okManager.java:71) > > > at > > > > > org.apache.jackrabbit.oak.plugins.index.IndexHookManager.processCommit > > (IndexHookManager.java:61) > > > at > > > > > > org.apache.jackrabbit.oak.spi.lifecycle.OakInitializer.initialize(OakInitializer.ja > > va:44) > > > at org.apache.jackrabbit.oak.Oak.createContentRepository(Oak.java:225) > > > > > > I'm probably misunderstanding something here, but is > > > OakInitializer.initialize() really correct? > > > > > > It does: > > > > > > > branch.setRoot(IndexHookManager.of(indexHook).processCommit( > > > MemoryNodeState.EMPTY_NODE, root.getNodeState())); > > > > > > doesn't that indicate to the index hook manager that the complete > > > repository > > > content was added, because EMPTY_NODE is used for before state? > > > > > > regards > > > marcel > > > >
