From b88a555f5a584c355442ee8db6d218c9fe95fa36 Mon Sep 17 00:00:00 2001
From: Yannick Lecaillez <ylecaillez@forgerock.com>
Date: Tue, 17 Nov 2015 10:16:04 +0000
Subject: [PATCH] OPENDJ-2393: Possible index corruption
---
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeImporter.java | 42 +++++-------------------------------------
1 files changed, 5 insertions(+), 37 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeImporter.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeImporter.java
index 875b0b1..76ff156 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeImporter.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeImporter.java
@@ -979,7 +979,7 @@
PhaseTwoProgressReporter progressReporter, boolean dn2idAlreadyImported)
{
final EntryContainer entryContainer = entryContainers.get(treeName.getBaseDN());
- final ID2Count id2count = entryContainer.getID2ChildrenCount();
+ final ID2ChildrenCount id2count = entryContainer.getID2ChildrenCount();
return new DN2IDImporterTask(progressReporter, importer, tempDir, bufferPool, entryContainer.getDN2ID(), chunk,
id2count, newCollector(entryContainer, id2count.getName()), dn2idAlreadyImported);
@@ -2207,7 +2207,7 @@
/**
* This task optionally copy the dn2id chunk into the database and takes advantages of it's cursoring to compute the
- * {@link ID2Count} index.
+ * {@link ID2ChildrenCount} index.
*/
private static final class DN2IDImporterTask implements Callable<Void>
{
@@ -2216,13 +2216,13 @@
private final File tempDir;
private final BufferPool bufferPool;
private final DN2ID dn2id;
- private final ID2Count id2count;
+ private final ID2ChildrenCount id2count;
private final Collector<?, ByteString> id2countCollector;
private final Chunk dn2IdSourceChunk;
private final Chunk dn2IdDestination;
DN2IDImporterTask(PhaseTwoProgressReporter progressReporter, Importer importer, File tempDir, BufferPool bufferPool,
- DN2ID dn2id, Chunk dn2IdChunk, ID2Count id2count, Collector<?, ByteString> id2countCollector,
+ DN2ID dn2id, Chunk dn2IdChunk, ID2ChildrenCount id2count, Collector<?, ByteString> id2countCollector,
boolean dn2idAlreadyImported)
{
this.reporter = progressReporter;
@@ -3037,7 +3037,7 @@
else if (isID2ChildrenCount(treeName))
{
// key conflicts == sum values
- return new AddLongCollector(entryContainer.getID2ChildrenCount());
+ return ID2ChildrenCount.getSumLongCollectorInstance();
}
else if (isDN2ID(treeName) || isDN2URI(treeName) || isVLVIndex(entryContainer, treeName))
{
@@ -3244,38 +3244,6 @@
}
}
- /**
- * {@link Collector} that accepts {@code long} values encoded into {@link ByteString} objects and produces a
- * {@link ByteString} representing the sum of the supplied {@code long}s.
- */
- static final class AddLongCollector implements Collector<Long, ByteString>
- {
- private final ID2Count id2count;
-
- AddLongCollector(ID2Count id2count)
- {
- this.id2count = id2count;
- }
-
- @Override
- public Long get()
- {
- return 0L;
- }
-
- @Override
- public Long accept(Long resultContainer, ByteString value)
- {
- return resultContainer + id2count.fromValue(value);
- }
-
- @Override
- public ByteString merge(Long resultContainer)
- {
- return id2count.toValue(resultContainer);
- }
- }
-
private static MeteredCursor<ByteString, ByteString> asProgressCursor(
SequentialCursor<ByteString, ByteString> delegate, String metricName, long totalSize)
{
--
Gitblit v1.10.0