jackrabbit-oak-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Marcel Reutegger (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (OAK-8449) LastRev check/fix in DocumentNodeStore MBean
Date Thu, 04 Jul 2019 08:36:00 GMT

    [ https://issues.apache.org/jira/browse/OAK-8449?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16878441#comment-16878441

Marcel Reutegger commented on OAK-8449:

Thanks [~vholani] for the patch. This looks already quite good. I have a few suggestions.

- Add a NotNull annotation to the path parameter of DocumentNodeStoreMBean.recover()
- Use Guava's Preconditions.checkNotNull() in the implementation to ensure the path is not
- The check for clusterId == 0 and subsequently throwing a NullPointerException is strange.
It would be good to check the clusterId is greater than 0, otherwise throw an IllegalArgumentException
- Add a note to the description of DocumentNodeStoreMBean.recover() that recover can only
run on inactive clusterIds and what the behaviour is when the DocumentNodeStore is read-only.
- The for loop in the recover() implementation throws a DocumentStoreException when a document
does not exist while traversing up the hierarchy. However, there may be valid gaps in the
document hierarchy when descendant nodes are bundled. See https://jackrabbit.apache.org/oak/docs/nodestore/document/node-bundling.html
- Please extend the test or add more tests for cases like a read-only DocumentNodeStore and
when an attempt is made to recover for an active clusterId. I would basically like to see
full statement and branch coverage by the tests.

> LastRev check/fix in DocumentNodeStore MBean
> --------------------------------------------
>                 Key: OAK-8449
>                 URL: https://issues.apache.org/jira/browse/OAK-8449
>             Project: Jackrabbit Oak
>          Issue Type: Task
>          Components: documentmk
>            Reporter: Vinod Holani
>            Assignee: Marcel Reutegger
>            Priority: Minor
>         Attachments: OAK-8449_1.patch
> There is existing tooling to check _lastRev consistency of documents in the DocumentStore.
Some of the tooling is limited to MongoDB because it is implemented as utility functions for
the MongoDB shell ([oak-mongo.js|https://jackrabbit.apache.org/oak/docs/oak-mongo-js/oak.html]).
The oak-run [recovery|https://github.com/apache/jackrabbit-oak/tree/trunk/oak-run#recovery-mode] command
was initially only available on MongoDB as well, but recently RDB support was added (OAK-8004).
The recovery command however has some drawbacks. It scans the entire nodes collection, which
can be a rather expensive operation and when started in read-write mode.
> This improvement is about adding _lastRev check and fix functionality to the DocumentNodeStore
MBean. The scope of the check and fix would be limited to some path(s) in order to keep the
runtime of the operation low.

This message was sent by Atlassian JIRA

View raw message