Oak repository using MongoDB fails to renew lease

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Oak repository using MongoDB fails to renew lease

Michael Harrison
Hi all,


We are new to Oak. We are using an Oak repository that is supported by a MongoDB back end. The Mongo server is running continuously. We restart the Oak repository from time to time. The startup code is this, stripped to the essentials:


        db = new MongoClient(mongoUrl, mongoPort).getDB(mongoDbName);
        ns = new DocumentMK.Builder().setMongoDB(db).getNodeStore();
        Jcr jcr = new Jcr(new Oak(ns));
        repository = jcr.createRepository();


When we close the Oak repository we do this:

        ns.dispose();  // private DocumentNodeStore ns
        ((RepositoryImpl)repository).shutdown();
        db.getMongo().close();  // private com.mongo.DB db


The observation is that when we do the following sequence of actions:


  1.  Close the repository
  2.  Wait for a few minutes
  3.  Open the repository


and then try to access the contents of the repository using Session.getNodeById we get the following exception:


org.apache.jackrabbit.oak.plugins.document.DocumentStoreException: This oak instance failed to update the lease in time and can therefore no longer access this DocumentNodeStore.
        at org.apache.jackrabbit.oak.plugins.document.ClusterNodeInfo.leaseExpired(ClusterNodeInfo.java:1154) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.plugins.document.ClusterNodeInfo.performLeaseCheck(ClusterNodeInfo.java:662) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.plugins.document.util.LeaseCheckDocumentStoreWrapper.performLeaseCheck(LeaseCheckDocumentStoreWrapper.java:59) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.plugins.document.util.LeaseCheckDocumentStoreWrapper.find(LeaseCheckDocumentStoreWrapper.java:65) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.readNode(DocumentNodeStore.java:1214) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore$5.call(DocumentNodeStore.java:1011) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore$5.call(DocumentNodeStore.java:1004) ~[oak-core-1.6.1.jar:1.6.1]
        at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4739) ~[guava-16.0.jar:?]
        at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524) ~[guava-16.0.jar:?]
        at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317) ~[guava-16.0.jar:?]
        at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280) ~[guava-16.0.jar:?]
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195) ~[guava-16.0.jar:?]
        at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[guava-16.0.jar:?]
        at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4736) ~[guava-16.0.jar:?]
        at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.getNode(DocumentNodeStore.java:1004) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.plugins.document.DocumentNodeState.getChildNodeDoc(DocumentNodeState.java:485) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.plugins.document.DocumentNodeState.getChildNode(DocumentNodeState.java:250) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.plugins.index.property.strategy.UniqueEntryStoreStrategy.count(UniqueEntryStoreStrategy.java:190) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.plugins.index.property.strategy.UniqueEntryStoreStrategy.count(UniqueEntryStoreStrategy.java:204) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexPlan.<init>(PropertyIndexPlan.java:148) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.plugins.index.property.PropertyIndex.createPlan(PropertyIndex.java:162) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.plugins.index.property.PropertyIndex.getPlan(PropertyIndex.java:145) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.plugins.index.property.PropertyIndex.getCost(PropertyIndex.java:208) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.query.QueryImpl.getBestSelectorExecutionPlan(QueryImpl.java:1035) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.query.QueryImpl.getBestSelectorExecutionPlan(QueryImpl.java:976) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.query.ast.SelectorImpl.prepare(SelectorImpl.java:280) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.query.QueryImpl.prepare(QueryImpl.java:641) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.query.QueryEngineImpl.prepareAndSelect(QueryEngineImpl.java:294) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.query.QueryEngineImpl.executeQuery(QueryEngineImpl.java:269) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.query.QueryEngineImpl.executeQuery(QueryEngineImpl.java:229) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager.resolveUUID(IdentifierManager.java:352) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager.resolveUUID(IdentifierManager.java:346) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager.resolveUUID(IdentifierManager.java:342) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager.getTree(IdentifierManager.java:137) ~[oak-core-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.getNodeByIdentifier(SessionDelegate.java:457) ~[oak-jcr-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.jcr.session.SessionImpl$5.perform(SessionImpl.java:322) ~[oak-jcr-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.jcr.session.SessionImpl$5.perform(SessionImpl.java:318) ~[oak-jcr-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:208) ~[oak-jcr-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.jcr.session.SessionImpl.getNodeById(SessionImpl.java:318) ~[oak-jcr-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.jcr.session.SessionImpl$5.perform(SessionImpl.java:322) ~[oak-jcr-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.jcr.session.SessionImpl$5.perform(SessionImpl.java:318) ~[oak-jcr-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:208) ~[oak-jcr-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.jcr.session.SessionImpl.getNodeById(SessionImpl.java:318) ~[oak-jcr-1.6.1.jar:1.6.1]
        at org.apache.jackrabbit.oak.jcr.session.SessionImpl.getNodeByIdentifier(SessionImpl.java:340) ~[oak-jcr-1.6.1.jar:1.6.1]


How can we avoid this exception happening?

Mike Harrison
DISCLAIMER
==========
This e-mail may contain privileged and confidential information which is the property of Persistent Systems Ltd. It is intended only for the use of the individual or entity to which it is addressed. If you are not the intended recipient, you are not authorized to read, retain, copy, print, distribute or use this message. If you have received this communication in error, please notify the sender and delete all copies of this message. Persistent Systems Ltd. does not accept any liability for virus infected mails.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Oak repository using MongoDB fails to renew lease

Stefan Egli
Hi Michael,

This sounds like the session you're using might be referring to the closed
repository. Did you create a new session after closing + opening the
repository?

Cheers,
Stefan

On 06/07/17 07:40, "Michael Harrison" <[hidden email]>
wrote:

>Hi all,
>
>
>We are new to Oak. We are using an Oak repository that is supported by a
>MongoDB back end. The Mongo server is running continuously. We restart
>the Oak repository from time to time. The startup code is this, stripped
>to the essentials:
>
>
>        db = new MongoClient(mongoUrl, mongoPort).getDB(mongoDbName);
>        ns = new DocumentMK.Builder().setMongoDB(db).getNodeStore();
>        Jcr jcr = new Jcr(new Oak(ns));
>        repository = jcr.createRepository();
>
>
>When we close the Oak repository we do this:
>
>        ns.dispose();  // private DocumentNodeStore ns
>        ((RepositoryImpl)repository).shutdown();
>        db.getMongo().close();  // private com.mongo.DB db
>
>
>The observation is that when we do the following sequence of actions:
>
>
>  1.  Close the repository
>  2.  Wait for a few minutes
>  3.  Open the repository
>
>
>and then try to access the contents of the repository using
>Session.getNodeById we get the following exception:
>
>
>org.apache.jackrabbit.oak.plugins.document.DocumentStoreException: This
>oak instance failed to update the lease in time and can therefore no
>longer access this DocumentNodeStore.
>        at
>org.apache.jackrabbit.oak.plugins.document.ClusterNodeInfo.leaseExpired(Cl
>usterNodeInfo.java:1154) ~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.plugins.document.ClusterNodeInfo.performLeaseChe
>ck(ClusterNodeInfo.java:662) ~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.plugins.document.util.LeaseCheckDocumentStoreWra
>pper.performLeaseCheck(LeaseCheckDocumentStoreWrapper.java:59)
>~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.plugins.document.util.LeaseCheckDocumentStoreWra
>pper.find(LeaseCheckDocumentStoreWrapper.java:65)
>~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.readNode(Docu
>mentNodeStore.java:1214) ~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore$5.call(Docume
>ntNodeStore.java:1011) ~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore$5.call(Docume
>ntNodeStore.java:1004) ~[oak-core-1.6.1.jar:1.6.1]
>        at
>com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java
>:4739) ~[guava-16.0.jar:?]
>        at
>com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalC
>ache.java:3524) ~[guava-16.0.jar:?]
>        at
>com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317)
>~[guava-16.0.jar:?]
>        at
>com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java
>:2280) ~[guava-16.0.jar:?]
>        at
>com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195)
>~[guava-16.0.jar:?]
>        at com.google.common.cache.LocalCache.get(LocalCache.java:3934)
>~[guava-16.0.jar:?]
>        at
>com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:47
>36) ~[guava-16.0.jar:?]
>        at
>org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.getNode(Docum
>entNodeStore.java:1004) ~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.plugins.document.DocumentNodeState.getChildNodeD
>oc(DocumentNodeState.java:485) ~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.plugins.document.DocumentNodeState.getChildNode(
>DocumentNodeState.java:250) ~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.plugins.index.property.strategy.UniqueEntryStore
>Strategy.count(UniqueEntryStoreStrategy.java:190)
>~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.plugins.index.property.strategy.UniqueEntryStore
>Strategy.count(UniqueEntryStoreStrategy.java:204)
>~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexPlan.<init>(
>PropertyIndexPlan.java:148) ~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.plugins.index.property.PropertyIndex.createPlan(
>PropertyIndex.java:162) ~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.plugins.index.property.PropertyIndex.getPlan(Pro
>pertyIndex.java:145) ~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.plugins.index.property.PropertyIndex.getCost(Pro
>pertyIndex.java:208) ~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.query.QueryImpl.getBestSelectorExecutionPlan(Que
>ryImpl.java:1035) ~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.query.QueryImpl.getBestSelectorExecutionPlan(Que
>ryImpl.java:976) ~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.query.ast.SelectorImpl.prepare(SelectorImpl.java
>:280) ~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.query.QueryImpl.prepare(QueryImpl.java:641)
>~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.query.QueryEngineImpl.prepareAndSelect(QueryEngi
>neImpl.java:294) ~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.query.QueryEngineImpl.executeQuery(QueryEngineIm
>pl.java:269) ~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.query.QueryEngineImpl.executeQuery(QueryEngineIm
>pl.java:229) ~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager.resolveUUID
>(IdentifierManager.java:352) ~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager.resolveUUID
>(IdentifierManager.java:346) ~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager.resolveUUID
>(IdentifierManager.java:342) ~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager.getTree(Ide
>ntifierManager.java:137) ~[oak-core-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.getNodeByIdentifier
>(SessionDelegate.java:457) ~[oak-jcr-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.jcr.session.SessionImpl$5.perform(SessionImpl.ja
>va:322) ~[oak-jcr-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.jcr.session.SessionImpl$5.perform(SessionImpl.ja
>va:318) ~[oak-jcr-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDele
>gate.java:208) ~[oak-jcr-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.jcr.session.SessionImpl.getNodeById(SessionImpl.
>java:318) ~[oak-jcr-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.jcr.session.SessionImpl$5.perform(SessionImpl.ja
>va:322) ~[oak-jcr-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.jcr.session.SessionImpl$5.perform(SessionImpl.ja
>va:318) ~[oak-jcr-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDele
>gate.java:208) ~[oak-jcr-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.jcr.session.SessionImpl.getNodeById(SessionImpl.
>java:318) ~[oak-jcr-1.6.1.jar:1.6.1]
>        at
>org.apache.jackrabbit.oak.jcr.session.SessionImpl.getNodeByIdentifier(Sess
>ionImpl.java:340) ~[oak-jcr-1.6.1.jar:1.6.1]
>
>
>How can we avoid this exception happening?
>
>Mike Harrison
>DISCLAIMER
>==========
>This e-mail may contain privileged and confidential information which is
>the property of Persistent Systems Ltd. It is intended only for the use
>of the individual or entity to which it is addressed. If you are not the
>intended recipient, you are not authorized to read, retain, copy, print,
>distribute or use this message. If you have received this communication
>in error, please notify the sender and delete all copies of this message.
>Persistent Systems Ltd. does not accept any liability for virus infected
>mails.


Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Oak repository using MongoDB fails to renew lease

Clay Ferguson
Sefan,
1) make sure you are using a try/finally block to be sure to always close
each session after using it
2) look at the following code to see if you are closing everything in the
way this code does:
Specifically, look at the close() method:
https://github.com/Clay-Ferguson/meta64/blob/master/src/main/java/com/meta64/mobile/repo/OakRepository.java
It should solve your problem, because I have seen that before until i
started closing everything properly every time.

Best regards,
Clay Ferguson
[hidden email]


On Thu, Jul 6, 2017 at 3:13 AM, Stefan Egli <[hidden email]> wrote:

> Hi Michael,
>
> This sounds like the session you're using might be referring to the closed
> repository. Did you create a new session after closing + opening the
> repository?
>
> Cheers,
> Stefan
>
> On 06/07/17 07:40, "Michael Harrison" <[hidden email]>
> wrote:
>
> >Hi all,
> >
> >
> >We are new to Oak. We are using an Oak repository that is supported by a
> >MongoDB back end. The Mongo server is running continuously. We restart
> >the Oak repository from time to time. The startup code is this, stripped
> >to the essentials:
> >
> >
> >        db = new MongoClient(mongoUrl, mongoPort).getDB(mongoDbName);
> >        ns = new DocumentMK.Builder().setMongoDB(db).getNodeStore();
> >        Jcr jcr = new Jcr(new Oak(ns));
> >        repository = jcr.createRepository();
> >
> >
> >When we close the Oak repository we do this:
> >
> >        ns.dispose();  // private DocumentNodeStore ns
> >        ((RepositoryImpl)repository).shutdown();
> >        db.getMongo().close();  // private com.mongo.DB db
> >
> >
> >The observation is that when we do the following sequence of actions:
> >
> >
> >  1.  Close the repository
> >  2.  Wait for a few minutes
> >  3.  Open the repository
> >
> >
> >and then try to access the contents of the repository using
> >Session.getNodeById we get the following exception:
> >
> >
> >org.apache.jackrabbit.oak.plugins.document.DocumentStoreException: This
> >oak instance failed to update the lease in time and can therefore no
> >longer access this DocumentNodeStore.
> >        at
> >org.apache.jackrabbit.oak.plugins.document.ClusterNodeInfo.leaseExpired(
> Cl
> >usterNodeInfo.java:1154) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.document.ClusterNodeInfo.
> performLeaseChe
> >ck(ClusterNodeInfo.java:662) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.document.util.
> LeaseCheckDocumentStoreWra
> >pper.performLeaseCheck(LeaseCheckDocumentStoreWrapper.java:59)
> >~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.document.util.
> LeaseCheckDocumentStoreWra
> >pper.find(LeaseCheckDocumentStoreWrapper.java:65)
> >~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.readNode(
> Docu
> >mentNodeStore.java:1214) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore$5.call(
> Docume
> >ntNodeStore.java:1011) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore$5.call(
> Docume
> >ntNodeStore.java:1004) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >com.google.common.cache.LocalCache$LocalManualCache$1.
> load(LocalCache.java
> >:4739) ~[guava-16.0.jar:?]
> >        at
> >com.google.common.cache.LocalCache$LoadingValueReference.
> loadFuture(LocalC
> >ache.java:3524) ~[guava-16.0.jar:?]
> >        at
> >com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317)
> >~[guava-16.0.jar:?]
> >        at
> >com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.
> java
> >:2280) ~[guava-16.0.jar:?]
> >        at
> >com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195)
> >~[guava-16.0.jar:?]
> >        at com.google.common.cache.LocalCache.get(LocalCache.java:3934)
> >~[guava-16.0.jar:?]
> >        at
> >com.google.common.cache.LocalCache$LocalManualCache.
> get(LocalCache.java:47
> >36) ~[guava-16.0.jar:?]
> >        at
> >org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.getNode(
> Docum
> >entNodeStore.java:1004) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.document.DocumentNodeState.
> getChildNodeD
> >oc(DocumentNodeState.java:485) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.document.DocumentNodeState.
> getChildNode(
> >DocumentNodeState.java:250) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.index.property.
> strategy.UniqueEntryStore
> >Strategy.count(UniqueEntryStoreStrategy.java:190)
> >~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.index.property.
> strategy.UniqueEntryStore
> >Strategy.count(UniqueEntryStoreStrategy.java:204)
> >~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.index.property.
> PropertyIndexPlan.<init>(
> >PropertyIndexPlan.java:148) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.index.property.
> PropertyIndex.createPlan(
> >PropertyIndex.java:162) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.index.property.
> PropertyIndex.getPlan(Pro
> >pertyIndex.java:145) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.index.property.
> PropertyIndex.getCost(Pro
> >pertyIndex.java:208) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.query.QueryImpl.getBestSelectorExecutionPlan(
> Que
> >ryImpl.java:1035) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.query.QueryImpl.getBestSelectorExecutionPlan(
> Que
> >ryImpl.java:976) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.query.ast.SelectorImpl.
> prepare(SelectorImpl.java
> >:280) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.query.QueryImpl.prepare(QueryImpl.java:641)
> >~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.query.QueryEngineImpl.
> prepareAndSelect(QueryEngi
> >neImpl.java:294) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.query.QueryEngineImpl.
> executeQuery(QueryEngineIm
> >pl.java:269) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.query.QueryEngineImpl.
> executeQuery(QueryEngineIm
> >pl.java:229) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.identifier.
> IdentifierManager.resolveUUID
> >(IdentifierManager.java:352) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.identifier.
> IdentifierManager.resolveUUID
> >(IdentifierManager.java:346) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.identifier.
> IdentifierManager.resolveUUID
> >(IdentifierManager.java:342) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.identifier.
> IdentifierManager.getTree(Ide
> >ntifierManager.java:137) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.
> getNodeByIdentifier
> >(SessionDelegate.java:457) ~[oak-jcr-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.jcr.session.SessionImpl$5.
> perform(SessionImpl.ja
> >va:322) ~[oak-jcr-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.jcr.session.SessionImpl$5.
> perform(SessionImpl.ja
> >va:318) ~[oak-jcr-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.
> perform(SessionDele
> >gate.java:208) ~[oak-jcr-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.jcr.session.SessionImpl.
> getNodeById(SessionImpl.
> >java:318) ~[oak-jcr-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.jcr.session.SessionImpl$5.
> perform(SessionImpl.ja
> >va:322) ~[oak-jcr-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.jcr.session.SessionImpl$5.
> perform(SessionImpl.ja
> >va:318) ~[oak-jcr-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.
> perform(SessionDele
> >gate.java:208) ~[oak-jcr-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.jcr.session.SessionImpl.
> getNodeById(SessionImpl.
> >java:318) ~[oak-jcr-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.jcr.session.SessionImpl.
> getNodeByIdentifier(Sess
> >ionImpl.java:340) ~[oak-jcr-1.6.1.jar:1.6.1]
> >
> >
> >How can we avoid this exception happening?
> >
> >Mike Harrison
> >DISCLAIMER
> >==========
> >This e-mail may contain privileged and confidential information which is
> >the property of Persistent Systems Ltd. It is intended only for the use
> >of the individual or entity to which it is addressed. If you are not the
> >intended recipient, you are not authorized to read, retain, copy, print,
> >distribute or use this message. If you have received this communication
> >in error, please notify the sender and delete all copies of this message.
> >Persistent Systems Ltd. does not accept any liability for virus infected
> >mails.
>
>
>
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Oak repository using MongoDB fails to renew lease

Michael Harrison
Thanks for your responses.


Stefan,

We open the repository first, then enter a state to service requests. For each request we open a session, process the request and close the session.


Clay,


The implementors of the request processing code were instructed to use the try-finally pattern for opening and closing a session. We will check whether this instruction was followed faithfully in every case.


We are familiar with the meta64 code; in fact, our code for opening and closing the repository was closely based on yours. The only essential difference is that we do not have an explicit Oak executor. Your code does not seem to do anything with this executor other than shut it down. Is its sole purpose to be able to do this as part of the whole shutdown? In any case, we will try adding an explicit executor to see if that solves the problem.


Mike

________________________________
From: Clay Ferguson <[hidden email]>
Sent: Thursday, July 6, 2017 7:14:22 AM
To: [hidden email]
Subject: Re: Oak repository using MongoDB fails to renew lease

Sefan,
1) make sure you are using a try/finally block to be sure to always close
each session after using it
2) look at the following code to see if you are closing everything in the
way this code does:
Specifically, look at the close() method:
https://github.com/Clay-Ferguson/meta64/blob/master/src/main/java/com/meta64/mobile/repo/OakRepository.java
It should solve your problem, because I have seen that before until i
started closing everything properly every time.

Best regards,
Clay Ferguson
[hidden email]


On Thu, Jul 6, 2017 at 3:13 AM, Stefan Egli <[hidden email]> wrote:

> Hi Michael,
>
> This sounds like the session you're using might be referring to the closed
> repository. Did you create a new session after closing + opening the
> repository?
>
> Cheers,
> Stefan
>
> On 06/07/17 07:40, "Michael Harrison" <[hidden email]>
> wrote:
>
> >Hi all,
> >
> >
> >We are new to Oak. We are using an Oak repository that is supported by a
> >MongoDB back end. The Mongo server is running continuously. We restart
> >the Oak repository from time to time. The startup code is this, stripped
> >to the essentials:
> >
> >
> >        db = new MongoClient(mongoUrl, mongoPort).getDB(mongoDbName);
> >        ns = new DocumentMK.Builder().setMongoDB(db).getNodeStore();
> >        Jcr jcr = new Jcr(new Oak(ns));
> >        repository = jcr.createRepository();
> >
> >
> >When we close the Oak repository we do this:
> >
> >        ns.dispose();  // private DocumentNodeStore ns
> >        ((RepositoryImpl)repository).shutdown();
> >        db.getMongo().close();  // private com.mongo.DB db
> >
> >
> >The observation is that when we do the following sequence of actions:
> >
> >
> >  1.  Close the repository
> >  2.  Wait for a few minutes
> >  3.  Open the repository
> >
> >
> >and then try to access the contents of the repository using
> >Session.getNodeById we get the following exception:
> >
> >
> >org.apache.jackrabbit.oak.plugins.document.DocumentStoreException: This
> >oak instance failed to update the lease in time and can therefore no
> >longer access this DocumentNodeStore.
> >        at
> >org.apache.jackrabbit.oak.plugins.document.ClusterNodeInfo.leaseExpired(
> Cl
> >usterNodeInfo.java:1154) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.document.ClusterNodeInfo.
> performLeaseChe
> >ck(ClusterNodeInfo.java:662) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.document.util.
> LeaseCheckDocumentStoreWra
> >pper.performLeaseCheck(LeaseCheckDocumentStoreWrapper.java:59)
> >~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.document.util.
> LeaseCheckDocumentStoreWra
> >pper.find(LeaseCheckDocumentStoreWrapper.java:65)
> >~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.readNode(
> Docu
> >mentNodeStore.java:1214) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore$5.call(
> Docume
> >ntNodeStore.java:1011) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore$5.call(
> Docume
> >ntNodeStore.java:1004) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >com.google.common.cache.LocalCache$LocalManualCache$1.
> load(LocalCache.java
> >:4739) ~[guava-16.0.jar:?]
> >        at
> >com.google.common.cache.LocalCache$LoadingValueReference.
> loadFuture(LocalC
> >ache.java:3524) ~[guava-16.0.jar:?]
> >        at
> >com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317)
> >~[guava-16.0.jar:?]
> >        at
> >com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.
> java
> >:2280) ~[guava-16.0.jar:?]
> >        at
> >com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195)
> >~[guava-16.0.jar:?]
> >        at com.google.common.cache.LocalCache.get(LocalCache.java:3934)
> >~[guava-16.0.jar:?]
> >        at
> >com.google.common.cache.LocalCache$LocalManualCache.
> get(LocalCache.java:47
> >36) ~[guava-16.0.jar:?]
> >        at
> >org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.getNode(
> Docum
> >entNodeStore.java:1004) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.document.DocumentNodeState.
> getChildNodeD
> >oc(DocumentNodeState.java:485) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.document.DocumentNodeState.
> getChildNode(
> >DocumentNodeState.java:250) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.index.property.
> strategy.UniqueEntryStore
> >Strategy.count(UniqueEntryStoreStrategy.java:190)
> >~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.index.property.
> strategy.UniqueEntryStore
> >Strategy.count(UniqueEntryStoreStrategy.java:204)
> >~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.index.property.
> PropertyIndexPlan.<init>(
> >PropertyIndexPlan.java:148) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.index.property.
> PropertyIndex.createPlan(
> >PropertyIndex.java:162) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.index.property.
> PropertyIndex.getPlan(Pro
> >pertyIndex.java:145) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.index.property.
> PropertyIndex.getCost(Pro
> >pertyIndex.java:208) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.query.QueryImpl.getBestSelectorExecutionPlan(
> Que
> >ryImpl.java:1035) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.query.QueryImpl.getBestSelectorExecutionPlan(
> Que
> >ryImpl.java:976) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.query.ast.SelectorImpl.
> prepare(SelectorImpl.java
> >:280) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.query.QueryImpl.prepare(QueryImpl.java:641)
> >~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.query.QueryEngineImpl.
> prepareAndSelect(QueryEngi
> >neImpl.java:294) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.query.QueryEngineImpl.
> executeQuery(QueryEngineIm
> >pl.java:269) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.query.QueryEngineImpl.
> executeQuery(QueryEngineIm
> >pl.java:229) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.identifier.
> IdentifierManager.resolveUUID
> >(IdentifierManager.java:352) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.identifier.
> IdentifierManager.resolveUUID
> >(IdentifierManager.java:346) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.identifier.
> IdentifierManager.resolveUUID
> >(IdentifierManager.java:342) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.plugins.identifier.
> IdentifierManager.getTree(Ide
> >ntifierManager.java:137) ~[oak-core-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.
> getNodeByIdentifier
> >(SessionDelegate.java:457) ~[oak-jcr-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.jcr.session.SessionImpl$5.
> perform(SessionImpl.ja
> >va:322) ~[oak-jcr-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.jcr.session.SessionImpl$5.
> perform(SessionImpl.ja
> >va:318) ~[oak-jcr-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.
> perform(SessionDele
> >gate.java:208) ~[oak-jcr-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.jcr.session.SessionImpl.
> getNodeById(SessionImpl.
> >java:318) ~[oak-jcr-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.jcr.session.SessionImpl$5.
> perform(SessionImpl.ja
> >va:322) ~[oak-jcr-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.jcr.session.SessionImpl$5.
> perform(SessionImpl.ja
> >va:318) ~[oak-jcr-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.
> perform(SessionDele
> >gate.java:208) ~[oak-jcr-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.jcr.session.SessionImpl.
> getNodeById(SessionImpl.
> >java:318) ~[oak-jcr-1.6.1.jar:1.6.1]
> >        at
> >org.apache.jackrabbit.oak.jcr.session.SessionImpl.
> getNodeByIdentifier(Sess
> >ionImpl.java:340) ~[oak-jcr-1.6.1.jar:1.6.1]
> >
> >
> >How can we avoid this exception happening?
> >
> >Mike Harrison
> >DISCLAIMER
> >==========
> >This e-mail may contain privileged and confidential information which is
> >the property of Persistent Systems Ltd. It is intended only for the use
> >of the individual or entity to which it is addressed. If you are not the
> >intended recipient, you are not authorized to read, retain, copy, print,
> >distribute or use this message. If you have received this communication
> >in error, please notify the sender and delete all copies of this message.
> >Persistent Systems Ltd. does not accept any liability for virus infected
> >mails.
>
>
>
DISCLAIMER
==========
This e-mail may contain privileged and confidential information which is the property of Persistent Systems Ltd. It is intended only for the use of the individual or entity to which it is addressed. If you are not the intended recipient, you are not authorized to read, retain, copy, print, distribute or use this message. If you have received this communication in error, please notify the sender and delete all copies of this message. Persistent Systems Ltd. does not accept any liability for virus infected mails.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Oak repository using MongoDB fails to renew lease

Clay Ferguson
Mike,
The executor in SubNode/Meta64 is not being custom configured, you are
right. I may have only created it solely for the purpose of ensuring that I
proactively shut it down every time, so that part may not be required (I
just know it does currently seem to work). I can't remember. :)

One other thing, when running in Eclipse I have to use the shutdown hook in
this file:
https://github.com/Clay-Ferguson/meta64/blob/master/src/main/java/com/meta64/mobile/AppServer.java

where I actually have to type the letter 'q' into the Eclipse debug
console, because eclipse otherwise wasn't calling the shutdown hook
properly. Just be aware of that possibility. Only your log files can tell
you if shutdown is ALWAYS executing.

And finally, the kind of Java8 Lambda technique used here may be a cool
pattern to help ensure that session.logout() is never forgotten:
https://github.com/Clay-Ferguson/meta64/blob/master/src/main/java/com/meta64/mobile/user/RunAsJcrAdmin.java

...although i mostly am still using OakSessionAspect.java (an AOP class) to
do that kind of 'finally block' pattern for most API functions. So with AOP
i can simply annotate a method, and it will properly manage the session
logout for me.... but i'm considering removing all AOP now that Java8
Lambdas exist.


Best regards,
Clay Ferguson
[hidden email]


On Thu, Jul 6, 2017 at 11:01 AM, Michael Harrison <
[hidden email]> wrote:

> Thanks for your responses.
>
>
> Stefan,
>
> We open the repository first, then enter a state to service requests. For
> each request we open a session, process the request and close the session.
>
>
> Clay,
>
>
> The implementors of the request processing code were instructed to use the
> try-finally pattern for opening and closing a session. We will check
> whether this instruction was followed faithfully in every case.
>
>
> We are familiar with the meta64 code; in fact, our code for opening and
> closing the repository was closely based on yours. The only essential
> difference is that we do not have an explicit Oak executor. Your code does
> not seem to do anything with this executor other than shut it down. Is its
> sole purpose to be able to do this as part of the whole shutdown? In any
> case, we will try adding an explicit executor to see if that solves the
> problem.
>
>
> Mike
>
> ________________________________
> From: Clay Ferguson <[hidden email]>
> Sent: Thursday, July 6, 2017 7:14:22 AM
> To: [hidden email]
> Subject: Re: Oak repository using MongoDB fails to renew lease
>
> Sefan,
> 1) make sure you are using a try/finally block to be sure to always close
> each session after using it
> 2) look at the following code to see if you are closing everything in the
> way this code does:
> Specifically, look at the close() method:
> https://github.com/Clay-Ferguson/meta64/blob/master/
> src/main/java/com/meta64/mobile/repo/OakRepository.java
> It should solve your problem, because I have seen that before until i
> started closing everything properly every time.
>
> Best regards,
> Clay Ferguson
> [hidden email]
>
>
> On Thu, Jul 6, 2017 at 3:13 AM, Stefan Egli <[hidden email]> wrote:
>
> > Hi Michael,
> >
> > This sounds like the session you're using might be referring to the
> closed
> > repository. Did you create a new session after closing + opening the
> > repository?
> >
> > Cheers,
> > Stefan
> >
> > On 06/07/17 07:40, "Michael Harrison" <[hidden email]>
> > wrote:
> >
> > >Hi all,
> > >
> > >
> > >We are new to Oak. We are using an Oak repository that is supported by a
> > >MongoDB back end. The Mongo server is running continuously. We restart
> > >the Oak repository from time to time. The startup code is this, stripped
> > >to the essentials:
> > >
> > >
> > >        db = new MongoClient(mongoUrl, mongoPort).getDB(mongoDbName);
> > >        ns = new DocumentMK.Builder().setMongoDB(db).getNodeStore();
> > >        Jcr jcr = new Jcr(new Oak(ns));
> > >        repository = jcr.createRepository();
> > >
> > >
> > >When we close the Oak repository we do this:
> > >
> > >        ns.dispose();  // private DocumentNodeStore ns
> > >        ((RepositoryImpl)repository).shutdown();
> > >        db.getMongo().close();  // private com.mongo.DB db
> > >
> > >
> > >The observation is that when we do the following sequence of actions:
> > >
> > >
> > >  1.  Close the repository
> > >  2.  Wait for a few minutes
> > >  3.  Open the repository
> > >
> > >
> > >and then try to access the contents of the repository using
> > >Session.getNodeById we get the following exception:
> > >
> > >
> > >org.apache.jackrabbit.oak.plugins.document.DocumentStoreException: This
> > >oak instance failed to update the lease in time and can therefore no
> > >longer access this DocumentNodeStore.
> > >        at
> > >org.apache.jackrabbit.oak.plugins.document.
> ClusterNodeInfo.leaseExpired(
> > Cl
> > >usterNodeInfo.java:1154) ~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.plugins.document.ClusterNodeInfo.
> > performLeaseChe
> > >ck(ClusterNodeInfo.java:662) ~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.plugins.document.util.
> > LeaseCheckDocumentStoreWra
> > >pper.performLeaseCheck(LeaseCheckDocumentStoreWrapper.java:59)
> > >~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.plugins.document.util.
> > LeaseCheckDocumentStoreWra
> > >pper.find(LeaseCheckDocumentStoreWrapper.java:65)
> > >~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.readNode(
> > Docu
> > >mentNodeStore.java:1214) ~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore$5.call(
> > Docume
> > >ntNodeStore.java:1011) ~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore$5.call(
> > Docume
> > >ntNodeStore.java:1004) ~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >com.google.common.cache.LocalCache$LocalManualCache$1.
> > load(LocalCache.java
> > >:4739) ~[guava-16.0.jar:?]
> > >        at
> > >com.google.common.cache.LocalCache$LoadingValueReference.
> > loadFuture(LocalC
> > >ache.java:3524) ~[guava-16.0.jar:?]
> > >        at
> > >com.google.common.cache.LocalCache$Segment.loadSync(
> LocalCache.java:2317)
> > >~[guava-16.0.jar:?]
> > >        at
> > >com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.
> > java
> > >:2280) ~[guava-16.0.jar:?]
> > >        at
> > >com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195)
> > >~[guava-16.0.jar:?]
> > >        at com.google.common.cache.LocalCache.get(LocalCache.java:3934)
> > >~[guava-16.0.jar:?]
> > >        at
> > >com.google.common.cache.LocalCache$LocalManualCache.
> > get(LocalCache.java:47
> > >36) ~[guava-16.0.jar:?]
> > >        at
> > >org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.getNode(
> > Docum
> > >entNodeStore.java:1004) ~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.plugins.document.DocumentNodeState.
> > getChildNodeD
> > >oc(DocumentNodeState.java:485) ~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.plugins.document.DocumentNodeState.
> > getChildNode(
> > >DocumentNodeState.java:250) ~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.plugins.index.property.
> > strategy.UniqueEntryStore
> > >Strategy.count(UniqueEntryStoreStrategy.java:190)
> > >~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.plugins.index.property.
> > strategy.UniqueEntryStore
> > >Strategy.count(UniqueEntryStoreStrategy.java:204)
> > >~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.plugins.index.property.
> > PropertyIndexPlan.<init>(
> > >PropertyIndexPlan.java:148) ~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.plugins.index.property.
> > PropertyIndex.createPlan(
> > >PropertyIndex.java:162) ~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.plugins.index.property.
> > PropertyIndex.getPlan(Pro
> > >pertyIndex.java:145) ~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.plugins.index.property.
> > PropertyIndex.getCost(Pro
> > >pertyIndex.java:208) ~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.query.QueryImpl.getBestSelectorExecutionPlan(
> > Que
> > >ryImpl.java:1035) ~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.query.QueryImpl.getBestSelectorExecutionPlan(
> > Que
> > >ryImpl.java:976) ~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.query.ast.SelectorImpl.
> > prepare(SelectorImpl.java
> > >:280) ~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.query.QueryImpl.prepare(QueryImpl.java:641)
> > >~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.query.QueryEngineImpl.
> > prepareAndSelect(QueryEngi
> > >neImpl.java:294) ~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.query.QueryEngineImpl.
> > executeQuery(QueryEngineIm
> > >pl.java:269) ~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.query.QueryEngineImpl.
> > executeQuery(QueryEngineIm
> > >pl.java:229) ~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.plugins.identifier.
> > IdentifierManager.resolveUUID
> > >(IdentifierManager.java:352) ~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.plugins.identifier.
> > IdentifierManager.resolveUUID
> > >(IdentifierManager.java:346) ~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.plugins.identifier.
> > IdentifierManager.resolveUUID
> > >(IdentifierManager.java:342) ~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.plugins.identifier.
> > IdentifierManager.getTree(Ide
> > >ntifierManager.java:137) ~[oak-core-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.
> > getNodeByIdentifier
> > >(SessionDelegate.java:457) ~[oak-jcr-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.jcr.session.SessionImpl$5.
> > perform(SessionImpl.ja
> > >va:322) ~[oak-jcr-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.jcr.session.SessionImpl$5.
> > perform(SessionImpl.ja
> > >va:318) ~[oak-jcr-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.
> > perform(SessionDele
> > >gate.java:208) ~[oak-jcr-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.jcr.session.SessionImpl.
> > getNodeById(SessionImpl.
> > >java:318) ~[oak-jcr-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.jcr.session.SessionImpl$5.
> > perform(SessionImpl.ja
> > >va:322) ~[oak-jcr-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.jcr.session.SessionImpl$5.
> > perform(SessionImpl.ja
> > >va:318) ~[oak-jcr-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.
> > perform(SessionDele
> > >gate.java:208) ~[oak-jcr-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.jcr.session.SessionImpl.
> > getNodeById(SessionImpl.
> > >java:318) ~[oak-jcr-1.6.1.jar:1.6.1]
> > >        at
> > >org.apache.jackrabbit.oak.jcr.session.SessionImpl.
> > getNodeByIdentifier(Sess
> > >ionImpl.java:340) ~[oak-jcr-1.6.1.jar:1.6.1]
> > >
> > >
> > >How can we avoid this exception happening?
> > >
> > >Mike Harrison
> > >DISCLAIMER
> > >==========
> > >This e-mail may contain privileged and confidential information which is
> > >the property of Persistent Systems Ltd. It is intended only for the use
> > >of the individual or entity to which it is addressed. If you are not the
> > >intended recipient, you are not authorized to read, retain, copy, print,
> > >distribute or use this message. If you have received this communication
> > >in error, please notify the sender and delete all copies of this
> message.
> > >Persistent Systems Ltd. does not accept any liability for virus infected
> > >mails.
> >
> >
> >
> DISCLAIMER
> ==========
> This e-mail may contain privileged and confidential information which is
> the property of Persistent Systems Ltd. It is intended only for the use of
> the individual or entity to which it is addressed. If you are not the
> intended recipient, you are not authorized to read, retain, copy, print,
> distribute or use this message. If you have received this communication in
> error, please notify the sender and delete all copies of this message.
> Persistent Systems Ltd. does not accept any liability for virus infected
> mails.
>
Loading...