[
https://issues.apache.org/jira/browse/OAK-1953?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14053656#comment-14053656
]
Marcel Reutegger commented on OAK-1953:
---------------------------------------
The 'leaseEnd' in clusterNodes is correctly set to null. This happens when the
DocumentNodeStore is shut down. It indicates that there is currently no oak
cluster node using clusterId 1.
The oak-run console uses the DocumentNodeStore is a special way, because
oak-run allows you to pass a clusterId. Usually a DocumentNodeStore is
constructed without an explicit clusterId and the lease mechanism determines
one. Acquiring a lease automatically updates the leaseEnd and the following
recovery mechanism works.
With an explicit clusterId, no lease is acquired and the leaseEnd is left as
is. The recovery code then tries to access the leaseEnd even though recovery is
not needed at all.
The recovery code should be updated and we should probably also consider
changing the console default behavior for the clusterId. With an explicit
default clusterId of 1, it may happen that two oak instances run with the same
clusterId. I think it would be better if the default clusterId was 0, which
means it is automatically determined.
> Oak console on MongoMK fails with NPE
> -------------------------------------
>
> Key: OAK-1953
> URL: https://issues.apache.org/jira/browse/OAK-1953
> Project: Jackrabbit Oak
> Issue Type: Bug
> Components: core, mongomk, run
> Affects Versions: 1.0
> Reporter: Marcel Reutegger
> Assignee: Marcel Reutegger
>
> The exception is:
> {noformat}
> Apache Jackrabbit Oak 1.1-SNAPSHOT
> Exception in thread "main" java.lang.NullPointerException: Lease End Time not
> set
> at
> com.google.common.base.Preconditions.checkNotNull(Preconditions.java:209)
> at
> org.apache.jackrabbit.oak.plugins.document.ClusterNodeInfoDocument.getLeaseEndTime(ClusterNodeInfoDocument.java:41)
> at
> org.apache.jackrabbit.oak.plugins.document.LastRevRecoveryAgent.recover(LastRevRecoveryAgent.java:81)
> at
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.checkLastRevRecovery(DocumentNodeStore.java:425)
> at
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.<init>(DocumentNodeStore.java:404)
> at
> org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.getNodeStore(DocumentMK.java:582)
> at org.apache.jackrabbit.oak.console.Console.main(Console.java:72)
> at org.apache.jackrabbit.oak.run.Main.main(Main.java:118)
> {noformat}
> The document in the clusterNodes collection looks like this:
> {noformat}
> {
> "_id" : "1",
> "state" : null,
> "leaseEnd" : null,
> "instance" : "/Users/mreutegg/test",
> "machine" : "mac:685b35b878ea",
> "recoveryLock" : null,
> "info" : "id: 1,\nstartTime: 1404725920370,\nmachineId:
> mac:685b35b878ea,\ninstanceId: /Users/mreutegg/test,\npid: 40619,\nuuid:
> 5cca6177-1062-441c-a86b-ec7bf848917d,\nreadWriteMode: null,\nstate:
> NONE,\nrevLock: NONE",
> "_modCount" : NumberLong(52)
> }
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.2#6252)