From 5d07ec161328a94de355aa4bf93918a2da5a8602 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 30 Apr 2015 14:20:06 +0000
Subject: [PATCH] OPENDJ-1801 (CR-6815) Revise usage of storage.open() and startImport()

---
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ID2Count.java |   29 ++++++++++++++++++++++++++---
 1 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ID2Count.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ID2Count.java
index 5259156..e922f95 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ID2Count.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ID2Count.java
@@ -31,6 +31,7 @@
 import org.forgerock.util.promise.Function;
 import org.forgerock.util.promise.NeverThrowsException;
 import org.opends.server.backends.pluggable.spi.Cursor;
+import org.opends.server.backends.pluggable.spi.Importer;
 import org.opends.server.backends.pluggable.spi.ReadableTransaction;
 import org.opends.server.backends.pluggable.spi.TreeName;
 import org.opends.server.backends.pluggable.spi.UpdateFunction;
@@ -90,8 +91,7 @@
 
   private void addToCounter(WriteableTransaction txn, EntryID entryID, final long delta)
   {
-    final long bucket = (Thread.currentThread().getId() & (SHARD_COUNT - 1));
-    final ByteSequence shardedKey = getKeyFromEntryIDAndBucket(entryID, bucket);
+    final ByteSequence shardedKey = getShardedKey(entryID);
     txn.update(getName(), shardedKey, new UpdateFunction()
     {
       @Override
@@ -103,6 +103,30 @@
     });
   }
 
+  void importPut(Importer importer, EntryID entryID, long total)
+  {
+    Reject.ifTrue(entryID.longValue() >= TOTAL_COUNT_ENTRY_ID.longValue(), "EntryID overflow.");
+    importPut0(importer, entryID, total);
+  }
+
+  void importPutTotalCount(Importer importer, long total)
+  {
+    importPut0(importer, TOTAL_COUNT_ENTRY_ID, total);
+  }
+
+  private void importPut0(Importer importer, EntryID entryID, final long delta)
+  {
+    Reject.ifNull(importer, "importer must not be null");
+    final ByteSequence shardedKey = getShardedKey(entryID);
+    importer.put(getName(), shardedKey, ByteString.valueOf(delta));
+  }
+
+  private ByteSequence getShardedKey(EntryID entryID)
+  {
+    final long bucket = (Thread.currentThread().getId() & (SHARD_COUNT - 1));
+    return getKeyFromEntryIDAndBucket(entryID, bucket);
+  }
+
   /**
    * Get the counter value for the specified key
    * @param txn The database transaction
@@ -168,5 +192,4 @@
 
     return counterValue;
   }
-
 }

--
Gitblit v1.10.0