You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ch...@apache.org on 2017/12/08 07:26:26 UTC
svn commit: r1817464 -
/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileNodeStoreBuilder.java
Author: chetanm
Date: Fri Dec 8 07:26:25 2017
New Revision: 1817464
URL: http://svn.apache.org/viewvc?rev=1817464&view=rev
Log:
OAK-6353 - Use Document order traversal for reindexing performed on DocumentNodeStore setups
Make sorting tuning parameters configurable via system property with
following defaults
- Compression NOT enabled
- Max memory to be used for sorting set to 5GB
- Original file would be deleted before merge phase
Modified:
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileNodeStoreBuilder.java
Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileNodeStoreBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileNodeStoreBuilder.java?rev=1817464&r1=1817463&r2=1817464&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileNodeStoreBuilder.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileNodeStoreBuilder.java Fri Dec 8 07:26:25 2017
@@ -29,13 +29,23 @@ import com.google.common.io.Files;
import org.apache.commons.io.FileUtils;
import org.apache.jackrabbit.oak.index.indexer.document.NodeStateEntry;
import org.apache.jackrabbit.oak.spi.blob.BlobStore;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class FlatFileNodeStoreBuilder {
+ private static final String OAK_INDEXER_USE_ZIP = "oak.indexer.useZip";
+ private static final String OAK_INDEXER_DELETE_ORIGINAL = "oak.indexer.deleteOriginal";
+ private static final String OAK_INDEXER_MAX_SORT_MEMORY_IN_GB = "oak.indexer.maxSortMemoryInGB";
+ private final Logger log = LoggerFactory.getLogger(getClass());
private final Iterable<NodeStateEntry> nodeStates;
private final File workDir;
private Iterable<String> preferredPathElements = Collections.emptySet();
private BlobStore blobStore;
+ private boolean useZip = Boolean.getBoolean(OAK_INDEXER_USE_ZIP);
+ private boolean deleteOriginal = Boolean.parseBoolean(System.getProperty(OAK_INDEXER_DELETE_ORIGINAL, "true"));
+ private int maxMemory = Integer.getInteger(OAK_INDEXER_MAX_SORT_MEMORY_IN_GB, 5);
+
public FlatFileNodeStoreBuilder(Iterable<NodeStateEntry> nodeStates, File workDir) {
this.nodeStates = nodeStates;
this.workDir = workDir;
@@ -64,11 +74,22 @@ public class FlatFileNodeStoreBuilder {
FileUtils.forceMkdir(sortWorkDir);
NodeStateEntrySorter sorter =
new NodeStateEntrySorter(new PathElementComparator(preferredPathElements), storeFile, sortWorkDir);
- //TODO Configure flags zip and deleteOriginal, maxMemory
+
+ logFlags();
+
+ sorter.setUseZip(useZip);
+ sorter.setMaxMemoryInGB(maxMemory);
+ sorter.setDeleteOriginal(deleteOriginal);
sorter.sort();
return sorter.getSortedFile();
}
+ private void logFlags() {
+ log.info("Compression enabled while sorting : {} ({})", useZip, OAK_INDEXER_USE_ZIP);
+ log.info("Delete original dump from traversal : {} ({})", deleteOriginal, OAK_INDEXER_DELETE_ORIGINAL);
+ log.info("Max heap memory (GB) to be used for merge sort : {} ({})", maxMemory, OAK_INDEXER_MAX_SORT_MEMORY_IN_GB);
+ }
+
private File writeToStore(File dir, String fileName) throws IOException {
File file = new File(dir, fileName);
try (