[ https://issues.apache.org/jira/browse/OAK-5590?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15854203#comment-15854203 ]
Andrei Dulceanu edited comment on OAK-5590 at 2/6/17 3:23 PM: -------------------------------------------------------------- bq. AFAIKS this would trigger a full traversal Not necessarily, since {{checkPath}} always does a traversal with {{deep}} set to {{false}} [1]. bq. The reason for tracking bad path internally is performance: fully traversing every revisions from the journal takes way to long. I understand the reasoning, but it is still unclear to me how this is applied in the current code. The bad path logic is/will be applied only for the root node anyway (in a scenario in which there's a problem with it in the latest revision, its path is added in {{badPaths}} which is checked again in subsequent revisions, until we find a consistent revision). The changes proposed in the patch are in line with this expectation and also keep the current expectation of doing/not doing a full traversal when {{--deep}} is specified/not specified. [1] https://github.com/apache/jackrabbit-oak/blob/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tooling/ConsistencyChecker.java#L200 was (Author: dulceanu): bq. AFAIKS this would trigger a full traversal Not necessarily, since {{checkPath}} always does a traversal with {{deep}} set to {{false}} [1]. bq. The reason for tracking bad path internally is performance: fully traversing every revisions from the journal takes way to long. I understand the reasoning, but it is still unclear to me how this is applied in the current code. The bad path logic is/will be applied only for the root node anyway (in a scenario in which there's a problem with it in the latest revision, its path is added in {{badPaths}} which is checked again in subsequent revisions, until we find a consistent revision). The changes proposed in the patch are in line with this expectation and also keep the current expectation of doing/not doing a full traversal when {{--deep}} is specified/not specified. [1] https://github.com/apache/jackrabbit-oak/blob/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tooling/ConsistencyChecker.java#L200 > The check command doesn't do any check when "deep" option is not provided > ------------------------------------------------------------------------- > > Key: OAK-5590 > URL: https://issues.apache.org/jira/browse/OAK-5590 > Project: Jackrabbit Oak > Issue Type: Bug > Components: run, segment-tar > Reporter: Andrei Dulceanu > Assignee: Andrei Dulceanu > Labels: tooling > Fix For: 1.8, 1.6.1 > > Attachments: OAK-5590.patch > > > When the {{check}} command is used without {{--deep}} option, there is no > check/traversal being done against the repository. > First relevant line in code is [1], where a check is supposed to happen, but > due to a mismatch between argument expected/argument provided, {{null}} is > always returned without checking anything. The method which should do the > actual check [2] expects a set of paths to be traversed, but this set is > always empty. Therefore, relevant code for running the check is never > executed [3]. > [1] > https://github.com/apache/jackrabbit-oak/blob/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tooling/ConsistencyChecker.java#L120 > [2] > https://github.com/apache/jackrabbit-oak/blob/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tooling/ConsistencyChecker.java#L183 > [3] > https://github.com/apache/jackrabbit-oak/blob/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tooling/ConsistencyChecker.java#L194 -- This message was sent by Atlassian JIRA (v6.3.15#6346)