Author: chetanm Date: Fri Dec 15 11:18:29 2017 New Revision: 1818267 URL: http://svn.apache.org/viewvc?rev=1818267&view=rev Log: OAK-6353 - Use Document order traversal for reindexing performed on DocumentNodeStore setups
Reuse the progress reporter Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/progress/IndexingProgressReporter.java jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/DocumentStoreIndexer.java Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/progress/IndexingProgressReporter.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/progress/IndexingProgressReporter.java?rev=1818267&r1=1818266&r2=1818267&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/progress/IndexingProgressReporter.java (original) +++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/progress/IndexingProgressReporter.java Fri Dec 15 11:18:29 2017 @@ -43,7 +43,7 @@ public class IndexingProgressReporter im private static final String INDEX_MSG = "Incremental indexing"; private final Logger log = LoggerFactory.getLogger(IndexUpdate.class); - private final Stopwatch watch = Stopwatch.createStarted(); + private Stopwatch watch = Stopwatch.createStarted(); private final IndexUpdateCallback updateCallback; private final NodeTraversalCallback traversalCallback; private final Map<String, IndexUpdateState> indexUpdateStates = new HashMap<>(); @@ -172,6 +172,12 @@ public class IndexingProgressReporter im this.nodeCountEstimator = nodeCountEstimator; } + public void reset(){ + watch = Stopwatch.createStarted(); + traversalCount = 0; + messagePrefix = INDEX_MSG; + } + private String estimatePendingTraversal(double nodesPerSecond) { if (estimatedCount >= 0) { if (estimatedCount > traversalCount){ Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/DocumentStoreIndexer.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/DocumentStoreIndexer.java?rev=1818267&r1=1818266&r2=1818267&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/DocumentStoreIndexer.java (original) +++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/DocumentStoreIndexer.java Fri Dec 15 11:18:29 2017 @@ -64,7 +64,7 @@ public class DocumentStoreIndexer implem private final IndexHelper indexHelper; private final List<NodeStateIndexerProvider> indexerProviders; private final IndexerSupport indexerSupport; - private IndexingProgressReporter progressReporter = + private final IndexingProgressReporter progressReporter = new IndexingProgressReporter(IndexUpdateCallback.NOOP, NodeTraversalCallback.NOOP); private final Set<String> indexerPaths = new HashSet<>(); @@ -110,7 +110,10 @@ public class DocumentStoreIndexer implem .build(); closer.register(flatFileStore); - reconfigureReporter(flatFileStore); + progressReporter.reset(); + if (flatFileStore.getEntryCount() > 0){ + progressReporter.setNodeCountEstimator((String basePath, Set<String> indexPaths) -> flatFileStore.getEntryCount()); + } progressReporter.reindexingTraversalStart("/"); @@ -132,37 +135,16 @@ public class DocumentStoreIndexer implem } private void configureEstimators() { - configureTraversalRateEstimator(progressReporter); - long nodesCount = getEstimatedDocumentCount(); - if (nodesCount > 0) { - progressReporter.setNodeCountEstimator((String basePath, Set<String> indexPaths) -> nodesCount); - log.info("Estimated number of documents in Mongo are {}", nodesCount); - } - } - - private void reconfigureReporter(FlatFileStore flatFileStore) { - progressReporter = - new IndexingProgressReporter(IndexUpdateCallback.NOOP, NodeTraversalCallback.NOOP); - configureTraversalRateEstimator(progressReporter); - long entryCount = flatFileStore.getEntryCount(); - if (entryCount > 0) { - progressReporter.setNodeCountEstimator((String basePath, Set<String> indexPaths) -> entryCount); - log.info("Estimated number of entries in flat file store are {}", entryCount); - } else { - log.info("Number of entries in flat file store are unknown"); - } - - for (String indexerPath : indexerPaths){ - progressReporter.registerIndex(indexerPath, true, -1); - } - } - - private void configureTraversalRateEstimator(IndexingProgressReporter progressReporter) { StatisticsProvider statsProvider = indexHelper.getStatisticsProvider(); if (statsProvider instanceof MetricStatisticsProvider) { MetricRegistry registry = ((MetricStatisticsProvider) statsProvider).getRegistry(); progressReporter.setTraversalRateEstimator(new MetricRateEstimator("async", registry)); } + long nodesCount = getEstimatedDocumentCount(); + if (nodesCount > 0) { + progressReporter.setNodeCountEstimator((String basePath, Set<String> indexPaths) -> nodesCount); + log.info("Estimated number of documents in Mongo are {}", nodesCount); + } } private long getEstimatedDocumentCount(){