From a465378dd21226dd26665300c5aadb1eedef5caa Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 11 Mar 2015 13:37:19 +0000
Subject: [PATCH] OPENDJ-1708 Persistit: no rebuild-index support
---
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/Importer.java | 64 ++++++++++++++-----------------
1 files changed, 29 insertions(+), 35 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/Importer.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/Importer.java
index 92f0268..6ded735 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/Importer.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/Importer.java
@@ -1181,6 +1181,7 @@
// Ensure that there are minimum two threads available for parallel
// processing of smaller indexes.
dbThreads = Math.max(2, dbThreads);
+ dbThreads = 1; // FIXME JNR
logger.info(NOTE_JEB_IMPORT_LDIF_PHASE_TWO_MEM_REPORT, availableMemory, readAheadSize, buffers);
@@ -1765,7 +1766,6 @@
private final IndexManager indexMgr;
private final int cacheSize;
private final Map<Integer, DNState> dnStateMap = new HashMap<Integer, DNState>();
- private final Map<Integer, Index> indexMap = new HashMap<Integer, Index>();
private final Semaphore permits;
private final int maxPermits;
private final AtomicLong bytesRead = new AtomicLong();
@@ -1993,9 +1993,9 @@
{
final Index index = idContainerMap.get(indexID);
int limit = index.getIndexEntryLimit();
- boolean doCount = index.getMaintainCount();
- insertIDSet = new ImportIDSet(1, limit, doCount);
- deleteIDSet = new ImportIDSet(1, limit, doCount);
+ boolean maintainCount = index.getMaintainCount();
+ insertIDSet = new ImportIDSet(1, limit, maintainCount);
+ deleteIDSet = new ImportIDSet(1, limit, maintainCount);
}
key = ByteBuffer.allocate(b.getKeyLen());
@@ -2009,7 +2009,7 @@
}
else if (b.compare(key, indexID) != 0)
{
- addToDB(insertIDSet, deleteIDSet, indexID);
+ addToDB(indexID, insertIDSet, deleteIDSet);
keyCount.incrementAndGet();
indexID = b.getIndexID();
@@ -2023,9 +2023,9 @@
{
final Index index = idContainerMap.get(indexID);
int limit = index.getIndexEntryLimit();
- boolean doCount = index.getMaintainCount();
- insertIDSet = new ImportIDSet(1, limit, doCount);
- deleteIDSet = new ImportIDSet(1, limit, doCount);
+ boolean maintainCount = index.getMaintainCount();
+ insertIDSet = new ImportIDSet(1, limit, maintainCount);
+ deleteIDSet = new ImportIDSet(1, limit, maintainCount);
}
key.clear();
@@ -2056,7 +2056,7 @@
if (key != null)
{
- addToDB(insertIDSet, deleteIDSet, indexID);
+ addToDB(indexID, insertIDSet, deleteIDSet);
}
}
return null;
@@ -2072,11 +2072,11 @@
}
}
- private void addToDB(ImportIDSet insertSet, ImportIDSet deleteSet, int indexID) throws DirectoryException
+ private void addToDB(int indexID, ImportIDSet insertSet, ImportIDSet deleteSet) throws DirectoryException
{
if (indexMgr.isDN2ID())
{
- addDN2ID(insertSet, indexID);
+ addDN2ID(indexID, insertSet);
}
else
{
@@ -2085,25 +2085,17 @@
ByteString key = deleteSet.keyToByteString();
final Index index = idContainerMap.get(indexID);
index.delete(txn, key, deleteSet);
- if (!indexMap.containsKey(indexID))
- {
- indexMap.put(indexID, index);
- }
}
if (insertSet.size() > 0 || !insertSet.isDefined())
{
ByteString key = insertSet.keyToByteString();
final Index index = idContainerMap.get(indexID);
index.insert(txn, key, insertSet);
- if (!indexMap.containsKey(indexID))
- {
- indexMap.put(indexID, index);
- }
}
}
}
- private void addDN2ID(ImportIDSet record, Integer indexID) throws DirectoryException
+ private void addDN2ID(int indexID, ImportIDSet record) throws DirectoryException
{
DNState dnState;
if (!dnStateMap.containsKey(indexID))
@@ -2402,7 +2394,9 @@
private final int DRAIN_TO = 3;
private final IndexManager indexMgr;
private final BlockingQueue<IndexOutputBuffer> queue;
+ /** Stream where to output insert ImportIDSet data. */
private final ByteArrayOutputStream insertByteStream = new ByteArrayOutputStream(2 * bufferSize);
+ /** Stream where to output delete ImportIDSet data. */
private final ByteArrayOutputStream deleteByteStream = new ByteArrayOutputStream(2 * bufferSize);
private final DataOutputStream bufferStream;
private final DataOutputStream bufferIndexStream;
@@ -2511,7 +2505,7 @@
insertOrDeleteKey(indexBuffer, i);
continue;
}
- if (!indexBuffer.compare(i))
+ if (!indexBuffer.byteArraysEqual(i))
{
bufferLen += writeRecord(indexBuffer);
indexBuffer.setPosition(i);
@@ -2556,7 +2550,7 @@
saveIndexID = b.getIndexID();
insertOrDeleteKey(b, b.getPosition());
}
- else if (!b.compare(saveKey, saveIndexID))
+ else if (!b.recordsEqual(saveKey, saveIndexID))
{
bufferLen += writeRecord(saveKey, saveIndexID);
resetStreams();
@@ -2589,32 +2583,32 @@
deleteKeyCount = 0;
}
- private void insertOrDeleteKey(IndexOutputBuffer indexBuffer, int i)
+ private void insertOrDeleteKey(IndexOutputBuffer indexBuffer, int position)
{
- if (indexBuffer.isInsertRecord(i))
+ if (indexBuffer.isInsertRecord(position))
{
- indexBuffer.writeID(insertByteStream, i);
+ indexBuffer.writeEntryID(insertByteStream, position);
insertKeyCount++;
}
else
{
- indexBuffer.writeID(deleteByteStream, i);
+ indexBuffer.writeEntryID(deleteByteStream, position);
deleteKeyCount++;
}
}
- private void insertOrDeleteKeyCheckEntryLimit(IndexOutputBuffer indexBuffer, int i)
+ private void insertOrDeleteKeyCheckEntryLimit(IndexOutputBuffer indexBuffer, int position)
{
- if (indexBuffer.isInsertRecord(i))
+ if (indexBuffer.isInsertRecord(position))
{
if (insertKeyCount++ <= indexMgr.getLimit())
{
- indexBuffer.writeID(insertByteStream, i);
+ indexBuffer.writeEntryID(insertByteStream, position);
}
}
else
{
- indexBuffer.writeID(deleteByteStream, i);
+ indexBuffer.writeEntryID(deleteByteStream, position);
deleteKeyCount++;
}
}
@@ -2628,15 +2622,15 @@
insertByteStream.write(-1);
}
- int insertSize = 4;
+ int insertSize = INT_SIZE;
bufferStream.writeInt(insertKeyCount);
if (insertByteStream.size() > 0)
{
insertByteStream.writeTo(bufferStream);
}
- int deleteSize = 4;
- bufferStream.write(deleteKeyCount);
+ int deleteSize = INT_SIZE;
+ bufferStream.writeInt(deleteKeyCount);
if (deleteByteStream.size() > 0)
{
deleteByteStream.writeTo(bufferStream);
@@ -2657,7 +2651,7 @@
int headerSize = writeHeader(b.getIndexID(), keySize);
b.writeKey(bufferStream);
int bodySize = writeByteStreams();
- return headerSize + bodySize + keySize;
+ return headerSize + keySize + bodySize;
}
private int writeRecord(byte[] k, int indexID) throws IOException
@@ -2666,7 +2660,7 @@
int headerSize = writeHeader(indexID, keySize);
bufferStream.write(k);
int bodySize = writeByteStreams();
- return headerSize + bodySize + keySize;
+ return headerSize + keySize + bodySize;
}
/** {@inheritDoc} */
--
Gitblit v1.10.0