From 87902b763be28c6f4e833f1ff5c5080539d1b8a4 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 05 Nov 2014 11:29:54 +0000
Subject: [PATCH] Code cleanup
---
opendj3-server-dev/src/server/org/opends/server/backends/jeb/importLDIF/Importer.java | 642 ++++++++++++++++++++++------------------------------------
1 files changed, 246 insertions(+), 396 deletions(-)
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/importLDIF/Importer.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/importLDIF/Importer.java
index a01ca97..c469e76 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/importLDIF/Importer.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/importLDIF/Importer.java
@@ -34,6 +34,7 @@
import java.util.concurrent.atomic.AtomicLong;
import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.LocalizableMessageDescriptor.Arg3;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.ByteString;
@@ -74,17 +75,19 @@
private static final int TIMER_INTERVAL = 10000;
private static final int KB = 1024;
- private static final int MB = (KB * KB);
+ private static final int MB = KB * KB;
private static final String DEFAULT_TMP_DIR = "import-tmp";
private static final String TMPENV_DIR = "tmp-env";
- //Defaults for DB cache.
+ /** Defaults for DB cache. */
private static final int MAX_DB_CACHE_SIZE = 8 * MB;
private static final int MAX_DB_LOG_SIZE = 10 * MB;
private static final int MIN_DB_CACHE_SIZE = 4 * MB;
- //Defaults for LDIF reader buffers, min memory required to import and default
- //size for byte buffers.
+ /**
+ * Defaults for LDIF reader buffers, min memory required to import and default
+ * size for byte buffers.
+ */
private static final int READER_WRITER_BUFFER_SIZE = 8 * KB;
private static final int MIN_DB_CACHE_MEMORY = MAX_DB_CACHE_SIZE
+ MAX_DB_LOG_SIZE;
@@ -209,12 +212,11 @@
private final RebuildIndexManager rebuildManager;
/** Set to true if the backend was cleared. */
- private boolean clearedBackend = false;
+ private final boolean clearedBackend;
/** Used to shutdown import if an error occurs in phase one. */
- private volatile boolean isCanceled = false;
-
- private volatile boolean isPhaseOneDone = false;
+ private volatile boolean isCanceled;
+ private volatile boolean isPhaseOneDone;
/** Number of phase one buffers. */
private int phaseOneBufferCount;
@@ -253,18 +255,19 @@
this.threadCount = 1;
this.rebuildManager = new RebuildIndexManager(rebuildConfig, cfg);
this.indexCount = rebuildManager.getIndexCount();
+ this.clearedBackend = false;
this.scratchFileWriterList =
new ArrayList<ScratchFileWriterTask>(indexCount);
this.scratchFileWriterFutures = new CopyOnWriteArrayList<Future<?>>();
File parentDir;
- if (rebuildConfig.getTmpDirectory() == null)
+ if (rebuildConfig.getTmpDirectory() != null)
{
- parentDir = getFileForPath(DEFAULT_TMP_DIR);
+ parentDir = getFileForPath(rebuildConfig.getTmpDirectory());
}
else
{
- parentDir = getFileForPath(rebuildConfig.getTmpDirectory());
+ parentDir = getFileForPath(DEFAULT_TMP_DIR);
}
this.tempDir = new File(parentDir, cfg.getBackendId());
@@ -313,25 +316,20 @@
// Determine the number of indexes.
this.indexCount = getTotalIndexCount(localDBBackendCfg);
- if (!importConfiguration.appendToExistingData())
- {
- if (importConfiguration.clearBackend()
- || localDBBackendCfg.getBaseDN().size() <= 1)
- {
- this.clearedBackend = true;
- }
- }
+ this.clearedBackend =
+ !importConfiguration.appendToExistingData()
+ && (importConfiguration.clearBackend() || localDBBackendCfg.getBaseDN().size() <= 1);
this.scratchFileWriterList =
new ArrayList<ScratchFileWriterTask>(indexCount);
this.scratchFileWriterFutures = new CopyOnWriteArrayList<Future<?>>();
File parentDir;
- if (importConfiguration.getTmpDirectory() == null)
+ if (importConfiguration.getTmpDirectory() != null)
{
- parentDir = getFileForPath(DEFAULT_TMP_DIR);
+ parentDir = getFileForPath(importConfiguration.getTmpDirectory());
}
else
{
- parentDir = getFileForPath(importConfiguration.getTmpDirectory());
+ parentDir = getFileForPath(DEFAULT_TMP_DIR);
}
this.tempDir = new File(parentDir, localDBBackendCfg.getBackendId());
recursiveDelete(tempDir);
@@ -423,7 +421,7 @@
availableMemory - (indexCount * READER_WRITER_BUFFER_SIZE);
// We need caching when doing DN validation or rebuilding indexes.
- if (!skipDNValidation || (rebuildManager != null))
+ if (!skipDNValidation || rebuildManager != null)
{
// No DN validation: calculate memory for DB cache, DN2ID temporary cache,
// and buffers.
@@ -780,7 +778,8 @@
}
}
- if ((includeBranches.size() == 1) && excludeBranches.isEmpty()
+ if (excludeBranches.isEmpty()
+ && includeBranches.size() == 1
&& includeBranches.get(0).equals(baseDN))
{
// This entire base DN is explicitly included in the import with
@@ -953,7 +952,9 @@
(phaseOneFinishTime - startTime) / 1000,
(phaseTwoFinishTime - phaseTwoTime) / 1000);
if (importTime > 0)
+ {
rate = 1000f * reader.getEntriesRead() / importTime;
+ }
logger.info(NOTE_JEB_IMPORT_FINAL_STATUS, reader.getEntriesRead(), importCount
.get(), reader.getEntriesIgnored(), reader.getEntriesRejected(),
migratedCount, importTime / 1000, rate);
@@ -1257,9 +1258,7 @@
private final class MigrateExcludedTask extends ImportTask
{
- /**
- * {@inheritDoc}
- */
+ /** {@inheritDoc} */
@Override
public Void call() throws Exception
{
@@ -1335,9 +1334,7 @@
private final class MigrateExistingTask extends ImportTask
{
- /**
- * {@inheritDoc}
- */
+ /** {@inheritDoc} */
@Override
public Void call() throws Exception
{
@@ -1438,9 +1435,7 @@
private Entry oldEntry;
private EntryID entryID;
- /**
- * {@inheritDoc}
- */
+ /** {@inheritDoc} */
@Override
public Void call() throws Exception
{
@@ -1488,13 +1483,10 @@
}
if (oldEntry == null)
{
- if (!skipDNValidation)
+ if (!skipDNValidation && !dnSanityCheck(entryDN, entry, suffix))
{
- if (!dnSanityCheck(entryDN, entry, suffix))
- {
- suffix.removePending(entryDN);
- return;
- }
+ suffix.removePending(entryDN);
+ return;
}
suffix.removePending(entryDN);
processDN2ID(suffix, entryDN, entryID);
@@ -1506,13 +1498,13 @@
}
processDN2URI(suffix, oldEntry, entry);
suffix.getID2Entry().put(null, entryID, entry);
- if (oldEntry == null)
+ if (oldEntry != null)
{
- processIndexes(suffix, entry, entryID);
+ processAllIndexes(suffix, entry, entryID);
}
else
{
- processAllIndexes(suffix, entry, entryID);
+ processIndexes(suffix, entry, entryID);
}
importCount.getAndIncrement();
}
@@ -1564,9 +1556,7 @@
private DatabaseEntry keyEntry = new DatabaseEntry(),
valEntry = new DatabaseEntry();
- /**
- * {@inheritDoc}
- */
+ /** {@inheritDoc} */
@Override
public Void call() throws Exception
{
@@ -1606,13 +1596,10 @@
{
DN entryDN = entry.getName();
- if (!skipDNValidation)
+ if (!skipDNValidation && !dnSanityCheck(entryDN, entry, suffix))
{
- if (!dnSanityCheck(entryDN, entry, suffix))
- {
- suffix.removePending(entryDN);
- return;
- }
+ suffix.removePending(entryDN);
+ return;
}
suffix.removePending(entryDN);
processDN2ID(suffix, entryDN, entryID);
@@ -1622,19 +1609,16 @@
importCount.getAndIncrement();
}
- //Examine the DN for duplicates and missing parents.
+ /** Examine the DN for duplicates and missing parents. */
boolean dnSanityCheck(DN entryDN, Entry entry, Suffix suffix)
throws JebException, InterruptedException
{
//Perform parent checking.
DN parentDN = suffix.getEntryContainer().getParentWithinBase(entryDN);
- if (parentDN != null)
+ if (parentDN != null && !suffix.isParentProcessed(parentDN, tmpEnv, clearedBackend))
{
- if (!suffix.isParentProcessed(parentDN, tmpEnv, clearedBackend))
- {
- reader.rejectEntry(entry, ERR_JEB_IMPORT_PARENT_NOT_FOUND.get(parentDN));
- return false;
- }
+ reader.rejectEntry(entry, ERR_JEB_IMPORT_PARENT_NOT_FOUND.get(parentDN));
+ return false;
}
//If the backend was not cleared, then the dn2id needs to checked first
//for DNs that might not exist in the DN cache. If the DN is not in
@@ -1872,16 +1856,16 @@
private final Semaphore permits;
private final int maxPermits;
private final AtomicLong bytesRead = new AtomicLong();
- private long lastBytesRead = 0;
+ private long lastBytesRead;
private final AtomicInteger keyCount = new AtomicInteger();
- private RandomAccessFile bufferFile = null;
- private DataInputStream bufferIndexFile = null;
+ private RandomAccessFile bufferFile;
+ private DataInputStream bufferIndexFile;
private int remainingBuffers;
private volatile int totalBatches;
private AtomicInteger batchNumber = new AtomicInteger();
private int nextBufferID;
private int ownedPermits;
- private volatile boolean isRunning = false;
+ private volatile boolean isRunning;
/**
* Creates a new index DB writer.
@@ -1968,8 +1952,7 @@
batchNumber.incrementAndGet();
// Create all the index buffers for the next batch.
- final NavigableSet<IndexInputBuffer> buffers =
- new TreeSet<IndexInputBuffer>();
+ final NavigableSet<IndexInputBuffer> buffers = new TreeSet<IndexInputBuffer>();
for (int i = 0; i < permitRequest; i++)
{
final long bufferBegin = bufferIndexFile.readLong();
@@ -2018,8 +2001,7 @@
}
if (!isCanceled)
{
- logger.info(NOTE_JEB_IMPORT_LDIF_INDEX_CLOSE, indexMgr
- .getBufferFileName());
+ logger.info(NOTE_JEB_IMPORT_LDIF_INDEX_CLOSE, indexMgr.getBufferFileName());
}
}
}
@@ -2062,9 +2044,7 @@
}
}
- /**
- * {@inheritDoc}
- */
+ /** {@inheritDoc} */
@Override
public Void call() throws Exception, DirectoryException
{
@@ -2192,10 +2172,9 @@
if (!indexMgr.isDN2ID())
{
Index index;
- if ((deleteSet.size() > 0) || (!deleteSet.isDefined()))
+ if (deleteSet.size() > 0 || !deleteSet.isDefined())
{
- dbKey.setData(deleteSet.getKey().array(), 0, deleteSet.getKey()
- .limit());
+ dbKey.setData(deleteSet.getKey().array(), 0, deleteSet.getKey().limit());
index = (Index) idContainerMap.get(indexID);
index.delete(dbKey, deleteSet, dbValue);
if (!indexMap.containsKey(indexID))
@@ -2203,10 +2182,9 @@
indexMap.put(indexID, index);
}
}
- if ((insertSet.size() > 0) || (!insertSet.isDefined()))
+ if (insertSet.size() > 0 || !insertSet.isDefined())
{
- dbKey.setData(insertSet.getKey().array(), 0, insertSet.getKey()
- .limit());
+ dbKey.setData(insertSet.getKey().array(), 0, insertSet.getKey().limit());
index = (Index) idContainerMap.get(indexID);
index.insert(dbKey, insertSet, dbValue);
if (!indexMap.containsKey(indexID))
@@ -2314,8 +2292,7 @@
}
}
- // Why do we still need this if we are checking parents in the first
- // phase?
+ /** Why do we still need this if we are checking parents in the first phase? */
private boolean checkParent(ImportIDSet record) throws DatabaseException
{
dnKey.setData(record.getKey().array(), 0, record.getKey().limit());
@@ -2326,16 +2303,14 @@
entryID = new EntryID(v1);
parentDN = getParent(record.getKey());
- //Bypass the cache for append data, lookup the parent in DN2ID and
- //return.
+ //Bypass the cache for append data, lookup the parent in DN2ID and return.
if (importConfiguration != null
&& importConfiguration.appendToExistingData())
{
//If null is returned than this is a suffix DN.
if (parentDN != null)
{
- DatabaseEntry key =
- new DatabaseEntry(parentDN.array(), 0, parentDN.limit());
+ DatabaseEntry key = new DatabaseEntry(parentDN.array(), 0, parentDN.limit());
DatabaseEntry value = new DatabaseEntry();
OperationStatus status;
status =
@@ -2354,52 +2329,46 @@
}
}
}
+ else if (parentIDMap.isEmpty())
+ {
+ parentIDMap.put(deepCopy(record.getKey(), null), entryID);
+ return true;
+ }
+ else if (lastDN != null && lastDN.equals(parentDN))
+ {
+ parentIDMap.put(deepCopy(lastDN, null), lastID);
+ parentID = lastID;
+ lastDN = deepCopy(record.getKey(), lastDN);
+ lastID = entryID;
+ return true;
+ }
+ else if (parentIDMap.lastKey().equals(parentDN))
+ {
+ parentID = parentIDMap.get(parentDN);
+ lastDN = deepCopy(record.getKey(), lastDN);
+ lastID = entryID;
+ return true;
+ }
+ else if (parentIDMap.containsKey(parentDN))
+ {
+ EntryID newParentID = parentIDMap.get(parentDN);
+ ByteBuffer key = parentIDMap.lastKey();
+ while (!parentDN.equals(key))
+ {
+ parentIDMap.remove(key);
+ key = parentIDMap.lastKey();
+ }
+ parentIDMap.put(deepCopy(record.getKey(), null), entryID);
+ parentID = newParentID;
+ lastDN = deepCopy(record.getKey(), lastDN);
+ lastID = entryID;
+ }
else
{
- if (parentIDMap.isEmpty())
- {
- parentIDMap.put(deepCopy(record.getKey(), null), entryID);
- return true;
- }
- else if (lastDN != null && lastDN.equals(parentDN))
- {
- parentIDMap.put(deepCopy(lastDN, null), lastID);
- parentID = lastID;
- lastDN = deepCopy(record.getKey(), lastDN);
- lastID = entryID;
- return true;
- }
- else if (parentIDMap.lastKey().equals(parentDN))
- {
- parentID = parentIDMap.get(parentDN);
- lastDN = deepCopy(record.getKey(), lastDN);
- lastID = entryID;
- return true;
- }
- else
- {
- if (parentIDMap.containsKey(parentDN))
- {
- EntryID newParentID = parentIDMap.get(parentDN);
- ByteBuffer key = parentIDMap.lastKey();
- while (!parentDN.equals(key))
- {
- parentIDMap.remove(key);
- key = parentIDMap.lastKey();
- }
- parentIDMap.put(deepCopy(record.getKey(), null), entryID);
- parentID = newParentID;
- lastDN = deepCopy(record.getKey(), lastDN);
- lastID = entryID;
- }
- else
- {
- // We have a missing parent. Maybe parent checking was turned off?
- // Just ignore.
- parentID = null;
- return false;
- }
- }
+ // We have a missing parent. Maybe parent checking was turned off?
+ // Just ignore.
+ parentID = null;
+ return false;
}
return true;
}
@@ -2566,10 +2535,10 @@
private final DataOutputStream bufferStream;
private final DataOutputStream bufferIndexStream;
private final byte[] tmpArray = new byte[8];
- private int insertKeyCount = 0, deleteKeyCount = 0;
- private int bufferCount = 0;
+ private int insertKeyCount, deleteKeyCount;
+ private int bufferCount;
private final SortedSet<IndexOutputBuffer> indexSortedSet;
- private boolean poisonSeen = false;
+ private boolean poisonSeen;
public ScratchFileWriterTask(BlockingQueue<IndexOutputBuffer> queue,
IndexManager indexMgr) throws FileNotFoundException
@@ -2585,9 +2554,7 @@
this.indexSortedSet = new TreeSet<IndexOutputBuffer>();
}
- /**
- * {@inheritDoc}
- */
+ /** {@inheritDoc} */
@Override
public Void call() throws IOException, InterruptedException
{
@@ -2757,44 +2724,38 @@
deleteKeyCount++;
}
}
- else
+ else if (!b.compare(saveKey, saveIndexID))
{
- if (!b.compare(saveKey, saveIndexID))
+ bufferLen += writeRecord(saveKey, saveIndexID);
+ insertByteStream.reset();
+ deleteByteStream.reset();
+ insertKeyCount = 0;
+ deleteKeyCount = 0;
+ saveKey = b.getKey();
+ saveIndexID = b.getIndexID();
+ if (b.isInsert(b.getPosition()))
{
- bufferLen += writeRecord(saveKey, saveIndexID);
- insertByteStream.reset();
- deleteByteStream.reset();
- insertKeyCount = 0;
- deleteKeyCount = 0;
- saveKey = b.getKey();
- saveIndexID = b.getIndexID();
- if (b.isInsert(b.getPosition()))
- {
- b.writeID(insertByteStream, b.getPosition());
- insertKeyCount++;
- }
- else
- {
- b.writeID(deleteByteStream, b.getPosition());
- deleteKeyCount++;
- }
+ b.writeID(insertByteStream, b.getPosition());
+ insertKeyCount++;
}
else
{
- if (b.isInsert(b.getPosition()))
- {
- if (insertKeyCount++ <= indexMgr.getLimit())
- {
- b.writeID(insertByteStream, b.getPosition());
- }
- }
- else
- {
- b.writeID(deleteByteStream, b.getPosition());
- deleteKeyCount++;
- }
+ b.writeID(deleteByteStream, b.getPosition());
+ deleteKeyCount++;
}
}
+ else if (b.isInsert(b.getPosition()))
+ {
+ if (insertKeyCount++ <= indexMgr.getLimit())
+ {
+ b.writeID(insertByteStream, b.getPosition());
+ }
+ }
+ else
+ {
+ b.writeID(deleteByteStream, b.getPosition());
+ deleteKeyCount++;
+ }
if (b.hasMoreData())
{
b.getNextRecord();
@@ -2849,8 +2810,7 @@
int packedSize = writeHeader(b.getIndexID(), keySize);
b.writeKey(bufferStream);
packedSize += writeByteStreams();
- return (packedSize + keySize + insertByteStream.size()
- + deleteByteStream.size() + 4);
+ return packedSize + keySize + insertByteStream.size() + deleteByteStream.size() + 4;
}
private int writeRecord(byte[] k, int indexID) throws IOException
@@ -2858,8 +2818,7 @@
int packedSize = writeHeader(indexID, k.length);
bufferStream.write(k);
packedSize += writeByteStreams();
- return (packedSize + k.length + insertByteStream.size()
- + deleteByteStream.size() + 4);
+ return packedSize + k.length + insertByteStream.size() + deleteByteStream.size() + 4;
}
}
@@ -2879,52 +2838,38 @@
this.indexBuffer = indexBuffer;
}
- /**
- * {@inheritDoc}
- */
+ /** {@inheritDoc} */
@Override
public Void call() throws Exception
{
- if (importConfiguration != null && importConfiguration.isCancelled()
+ if ((importConfiguration != null && importConfiguration.isCancelled())
|| isCanceled)
{
isCanceled = true;
return null;
}
indexBuffer.sort();
- if (indexKeyQueMap.containsKey(indexBuffer.getIndexKey()))
- {
- BlockingQueue<IndexOutputBuffer> q =
- indexKeyQueMap.get(indexBuffer.getIndexKey());
- q.add(indexBuffer);
- }
- else
+ if (!indexKeyQueMap.containsKey(indexBuffer.getIndexKey()))
{
createIndexWriterTask(indexBuffer.getIndexKey());
- BlockingQueue<IndexOutputBuffer> q =
- indexKeyQueMap.get(indexBuffer.getIndexKey());
- q.add(indexBuffer);
}
+ BlockingQueue<IndexOutputBuffer> q = indexKeyQueMap.get(indexBuffer.getIndexKey());
+ q.add(indexBuffer);
return null;
}
private void createIndexWriterTask(IndexKey indexKey)
throws FileNotFoundException
{
- boolean isDN = false;
synchronized (synObj)
{
if (indexKeyQueMap.containsKey(indexKey))
{
return;
}
- if (indexKey.getIndexType().equals(ImportIndexType.DN))
- {
- isDN = true;
- }
- IndexManager indexMgr =
- new IndexManager(indexKey.getName(), isDN,
- indexKey.getEntryLimit());
+ boolean isDN = !indexKey.getIndexType().equals(ImportIndexType.DN);
+ IndexManager indexMgr = new IndexManager(
+ indexKey.getName(), isDN, indexKey.getEntryLimit());
if (isDN)
{
DNIndexMgrList.add(indexMgr);
@@ -2935,11 +2880,9 @@
}
BlockingQueue<IndexOutputBuffer> newQue =
new ArrayBlockingQueue<IndexOutputBuffer>(phaseOneBufferCount);
- ScratchFileWriterTask indexWriter =
- new ScratchFileWriterTask(newQue, indexMgr);
+ ScratchFileWriterTask indexWriter = new ScratchFileWriterTask(newQue, indexMgr);
scratchFileWriterList.add(indexWriter);
- scratchFileWriterFutures.add(scratchFileWriterService
- .submit(indexWriter));
+ scratchFileWriterFutures.add(scratchFileWriterService.submit(indexWriter));
indexKeyQueMap.put(indexKey, newQue);
}
}
@@ -2961,8 +2904,8 @@
private long totalDNS;
private final boolean isDN;
private final int limit;
- private int numberOfBuffers = 0;
- private volatile IndexDBWriteTask writer = null;
+ private int numberOfBuffers;
+ private volatile IndexDBWriteTask writer;
private IndexManager(String fileName, boolean isDN, int limit)
{
@@ -2973,14 +2916,7 @@
this.bufferIndexFile = new File(tempDir, bufferIndexFileName);
this.isDN = isDN;
- if (limit > 0)
- {
- this.limit = limit;
- }
- else
- {
- this.limit = Integer.MAX_VALUE;
- }
+ this.limit = limit > 0 ? limit : Integer.MAX_VALUE;
}
private void setIndexDBWriteTask(IndexDBWriteTask writer)
@@ -3061,9 +2997,7 @@
return limit;
}
- /**
- * {@inheritDoc}
- */
+ /** {@inheritDoc} */
@Override
public int compareTo(IndexManager mgr)
{
@@ -3083,39 +3017,39 @@
DiskSpaceMonitorHandler
{
- //Rebuild index configuration.
+ /** Rebuild index configuration. */
private final RebuildConfig rebuildConfig;
- //Local DB backend configuration.
+ /** Local DB backend configuration. */
private final LocalDBBackendCfg cfg;
- //Map of index keys to indexes.
+ /** Map of index keys to indexes. */
private final Map<IndexKey, Index> indexMap =
new LinkedHashMap<IndexKey, Index>();
- //Map of index keys to extensible indexes.
+ /** Map of index keys to extensible indexes. */
private final Map<IndexKey, Collection<Index>> extensibleIndexMap =
new LinkedHashMap<IndexKey, Collection<Index>>();
- //List of VLV indexes.
+ /** List of VLV indexes. */
private final List<VLVIndex> vlvIndexes = new LinkedList<VLVIndex>();
- //The DN2ID index.
- private DN2ID dn2id = null;
+ /** The DN2ID index. */
+ private DN2ID dn2id;
- //The DN2URI index.
- private DN2URI dn2uri = null;
+ /** The DN2URI index. */
+ private DN2URI dn2uri;
- //Total entries to be processed.
- private long totalEntries = 0;
+ /** Total entries to be processed. */
+ private long totalEntries;
- //Total entries processed.
+ /** Total entries processed. */
private final AtomicLong entriesProcessed = new AtomicLong(0);
- //The suffix instance.
- private Suffix suffix = null;
+ /** The suffix instance. */
+ private Suffix suffix;
- //The entry container.
+ /** The entry container. */
private EntryContainer entryContainer;
/**
@@ -3196,7 +3130,7 @@
public void printStopMessage(long startTime)
{
long finishTime = System.currentTimeMillis();
- long totalTime = (finishTime - startTime);
+ long totalTime = finishTime - startTime;
float rate = 0;
if (totalTime > 0)
{
@@ -3210,9 +3144,7 @@
}
}
- /**
- * {@inheritDoc}
- */
+ /** {@inheritDoc} */
@Override
public Void call() throws Exception
{
@@ -3302,25 +3234,24 @@
rebuildIndexMap(false);
// falls through
case DEGRADED:
- if ((mode == RebuildMode.ALL)
- || (!entryContainer.getID2Children().isTrusted() || !entryContainer
- .getID2Subtree().isTrusted()))
+ if (mode == RebuildMode.ALL
+ || !entryContainer.getID2Children().isTrusted()
+ || !entryContainer.getID2Subtree().isTrusted())
{
dn2id = entryContainer.getDN2ID();
}
- if ((mode == RebuildMode.ALL) || entryContainer.getDN2URI() == null)
+ if (mode == RebuildMode.ALL || entryContainer.getDN2URI() == null)
{
dn2uri = entryContainer.getDN2URI();
}
- if ((mode == RebuildMode.DEGRADED)
+ if (mode == RebuildMode.DEGRADED
|| entryContainer.getAttributeIndexes().isEmpty())
{
rebuildIndexMap(true); // only degraded.
}
- if ((mode == RebuildMode.ALL) || vlvIndexes.isEmpty())
+ if (mode == RebuildMode.ALL || vlvIndexes.isEmpty())
{
- vlvIndexes.addAll(new LinkedList<VLVIndex>(entryContainer
- .getVLVIndexes()));
+ vlvIndexes.addAll(new LinkedList<VLVIndex>(entryContainer.getVLVIndexes()));
}
break;
@@ -3348,19 +3279,14 @@
// Get all existing indexes for all && degraded mode.
rebuildAttributeIndexes(attributeIndex, attributeType, onlyDegraded);
}
- else
+ else if (!rebuildList.isEmpty())
{
// Get indexes for user defined index.
- if (!rebuildList.isEmpty())
+ for (final String index : rebuildList)
{
- for (final String index : rebuildList)
+ if (attributeType.getNameOrOID().toLowerCase().equals(index.toLowerCase()))
{
- if (attributeType.getNameOrOID().toLowerCase().equals(
- index.toLowerCase()))
- {
- rebuildAttributeIndexes(attributeIndex, attributeType,
- onlyDegraded);
- }
+ rebuildAttributeIndexes(attributeIndex, attributeType, onlyDegraded);
}
}
}
@@ -3371,118 +3297,63 @@
final AttributeType attrType, final boolean onlyDegraded)
throws DatabaseException
{
- if (attrIndex.getSubstringIndex() != null)
- {
- fillIndexMap(attrType, attrIndex.getSubstringIndex(),
- ImportIndexType.SUBSTRING, onlyDegraded);
- }
- if (attrIndex.getOrderingIndex() != null)
- {
- fillIndexMap(attrType, attrIndex.getOrderingIndex(),
- ImportIndexType.ORDERING, onlyDegraded);
- }
- if (attrIndex.getEqualityIndex() != null)
- {
- fillIndexMap(attrType, attrIndex.getEqualityIndex(),
- ImportIndexType.EQUALITY, onlyDegraded);
- }
- if (attrIndex.getPresenceIndex() != null)
- {
- fillIndexMap(attrType, attrIndex.getPresenceIndex(),
- ImportIndexType.PRESENCE, onlyDegraded);
- }
- if (attrIndex.getApproximateIndex() != null)
- {
- fillIndexMap(attrType, attrIndex.getApproximateIndex(),
- ImportIndexType.APPROXIMATE, onlyDegraded);
- }
- final Map<String, Collection<Index>> extensibleMap =
- attrIndex.getExtensibleIndexes();
+ fillIndexMap(attrType, attrIndex.getSubstringIndex(), ImportIndexType.SUBSTRING, onlyDegraded);
+ fillIndexMap(attrType, attrIndex.getOrderingIndex(), ImportIndexType.ORDERING, onlyDegraded);
+ fillIndexMap(attrType, attrIndex.getEqualityIndex(), ImportIndexType.EQUALITY, onlyDegraded);
+ fillIndexMap(attrType, attrIndex.getPresenceIndex(), ImportIndexType.PRESENCE, onlyDegraded);
+ fillIndexMap(attrType, attrIndex.getApproximateIndex(), ImportIndexType.APPROXIMATE, onlyDegraded);
+
+ final Map<String, Collection<Index>> extensibleMap = attrIndex.getExtensibleIndexes();
if (!extensibleMap.isEmpty())
{
- final Collection<Index> subIndexes =
- attrIndex.getExtensibleIndexes().get(
- EXTENSIBLE_INDEXER_ID_SUBSTRING);
- if (subIndexes != null && !subIndexes.isEmpty())
+ final Collection<Index> subIndexes = extensibleMap.get(EXTENSIBLE_INDEXER_ID_SUBSTRING);
+ fillIndexMap(attrType, subIndexes, ImportIndexType.EX_SUBSTRING, onlyDegraded);
+ final Collection<Index> sharedIndexes = extensibleMap.get(EXTENSIBLE_INDEXER_ID_SHARED);
+ fillIndexMap(attrType, sharedIndexes, ImportIndexType.EX_SHARED, onlyDegraded);
+ }
+ }
+
+ private void fillIndexMap(final AttributeType attrType, final Collection<Index> indexes,
+ final ImportIndexType importIndexType, final boolean onlyDegraded)
+ {
+ if (indexes != null && !indexes.isEmpty())
+ {
+ final List<Index> mutableCopy = new LinkedList<Index>(indexes);
+ for (final Iterator<Index> it = mutableCopy.iterator(); it.hasNext();)
{
- final List<Index> mutableCopy = new LinkedList<Index>(subIndexes);
- final Iterator<Index> i = mutableCopy.iterator();
- while (i.hasNext())
+ final Index sharedIndex = it.next();
+ if (!onlyDegraded || !sharedIndex.isTrusted())
{
- final Index subIndex = i.next();
- if (!onlyDegraded || !subIndex.isTrusted())
+ if (!rebuildConfig.isClearDegradedState() || sharedIndex.getRecordCount() == 0)
{
- if ((rebuildConfig.isClearDegradedState() && subIndex
- .getRecordCount() == 0)
- || !rebuildConfig.isClearDegradedState())
- {
- int id = System.identityHashCode(subIndex);
- idContainerMap.putIfAbsent(id, subIndex);
- }
- }
- else
- {
- // This index is not a candidate for rebuilding.
- i.remove();
+ int id = System.identityHashCode(sharedIndex);
+ idContainerMap.putIfAbsent(id, sharedIndex);
}
}
- if (!mutableCopy.isEmpty())
+ else
{
- extensibleIndexMap.put(new IndexKey(attrType,
- ImportIndexType.EX_SUBSTRING, 0), mutableCopy);
+ // This index is not a candidate for rebuilding.
+ it.remove();
}
}
- final Collection<Index> sharedIndexes =
- attrIndex.getExtensibleIndexes().get(EXTENSIBLE_INDEXER_ID_SHARED);
- if (sharedIndexes != null && !sharedIndexes.isEmpty())
+ if (!mutableCopy.isEmpty())
{
- final List<Index> mutableCopy = new LinkedList<Index>(sharedIndexes);
- final Iterator<Index> i = mutableCopy.iterator();
- while (i.hasNext())
- {
- final Index sharedIndex = i.next();
- if (!onlyDegraded || !sharedIndex.isTrusted())
- {
- if ((rebuildConfig.isClearDegradedState() && sharedIndex
- .getRecordCount() == 0)
- || !rebuildConfig.isClearDegradedState())
- {
- int id = System.identityHashCode(sharedIndex);
- idContainerMap.putIfAbsent(id, sharedIndex);
- }
- }
- else
- {
- // This index is not a candidate for rebuilding.
- i.remove();
- }
- }
- if (!mutableCopy.isEmpty())
- {
- extensibleIndexMap.put(new IndexKey(attrType,
- ImportIndexType.EX_SHARED, 0), mutableCopy);
- }
+ extensibleIndexMap.put(new IndexKey(attrType, importIndexType, 0), mutableCopy);
}
}
}
- private void fillIndexMap(final AttributeType attrType,
- final Index partialAttrIndex, final ImportIndexType importIndexType,
- final boolean onlyDegraded)
+ private void fillIndexMap(final AttributeType attrType, final Index partialAttrIndex,
+ final ImportIndexType importIndexType, final boolean onlyDegraded)
{
- if ((!onlyDegraded || !partialAttrIndex.isTrusted()))
+ if (partialAttrIndex != null
+ && (!onlyDegraded || !partialAttrIndex.isTrusted())
+ && (!rebuildConfig.isClearDegradedState() || partialAttrIndex.getRecordCount() == 0))
{
- if ((rebuildConfig.isClearDegradedState() && partialAttrIndex
- .getRecordCount() == 0)
- || !rebuildConfig.isClearDegradedState())
- {
- final int id = System.identityHashCode(partialAttrIndex);
- idContainerMap.putIfAbsent(id, partialAttrIndex);
- final IndexKey indexKey =
- new IndexKey(attrType, importIndexType, partialAttrIndex
- .getIndexEntryLimit());
- indexMap.put(indexKey, partialAttrIndex);
- }
+ final int id = System.identityHashCode(partialAttrIndex);
+ idContainerMap.putIfAbsent(id, partialAttrIndex);
+ final IndexKey indexKey = new IndexKey(attrType, importIndexType, partialAttrIndex.getIndexEntryLimit());
+ indexMap.put(indexKey, partialAttrIndex);
}
}
@@ -3675,11 +3546,11 @@
for (String index : rebuildList)
{
String lowerName = index.toLowerCase();
- if (lowerName.equals("dn2id"))
+ if ("dn2id".equals(lowerName))
{
indexCount += 3;
}
- else if (lowerName.equals("dn2uri"))
+ else if ("dn2uri".equals(lowerName))
{
indexCount++;
}
@@ -3692,8 +3563,8 @@
}
indexCount++;
}
- else if (lowerName.equals("id2subtree")
- || lowerName.equals("id2children"))
+ else if ("id2subtree".equals(lowerName)
+ || "id2children".equals(lowerName))
{
LocalizableMessage msg = ERR_JEB_ATTRIBUTE_INDEX_NOT_CONFIGURED.get(index);
throw new InitializationException(msg);
@@ -3701,7 +3572,7 @@
else
{
String[] attrIndexParts = lowerName.split("\\.");
- if ((attrIndexParts.length <= 0) || (attrIndexParts.length > 3))
+ if (attrIndexParts.length <= 0 || attrIndexParts.length > 3)
{
LocalizableMessage msg = ERR_JEB_ATTRIBUTE_INDEX_NOT_CONFIGURED.get(index);
throw new InitializationException(msg);
@@ -3718,11 +3589,11 @@
String indexType = attrIndexParts[1];
if (attrIndexParts.length == 2)
{
- if (indexType.equals("presence")
- || indexType.equals("equality")
- || indexType.equals("substring")
- || indexType.equals("ordering")
- || indexType.equals("approximate"))
+ if ("presence".equals(indexType)
+ || "equality".equals(indexType)
+ || "substring".equals(indexType)
+ || "ordering".equals(indexType)
+ || "approximate".equals(indexType))
{
indexCount++;
}
@@ -3778,8 +3649,7 @@
}
if (indexType.contains(EXTENSIBLE))
{
- Set<String> extensibleRules =
- indexCfg.getIndexExtensibleMatchingRule();
+ Set<String> extensibleRules = indexCfg.getIndexExtensibleMatchingRule();
boolean shared = false;
for (final String exRule : extensibleRules)
{
@@ -3951,7 +3821,7 @@
* The number of records that had been processed at the time of the previous
* progress report.
*/
- private long previousProcessed = 0;
+ private long previousProcessed;
/**
* The time in milliseconds of the previous progress report.
@@ -3989,7 +3859,7 @@
return;
}
long entriesProcessed = rebuildManager.getEntriesProcess();
- long deltaCount = (entriesProcessed - previousProcessed);
+ long deltaCount = entriesProcessed - previousProcessed;
float rate = 1000f * deltaCount / deltaTime;
float completed = 0;
if (rebuildManager.getTotEntries() > 0)
@@ -4035,7 +3905,7 @@
* The number of entries that had been read at the time of the previous
* progress report.
*/
- private long previousCount = 0;
+ private long previousCount;
/**
* The time in milliseconds of the previous progress report.
@@ -4047,11 +3917,11 @@
*/
private EnvironmentStats previousStats;
- // Determines if eviction has been detected.
- private boolean evicting = false;
+ /** Determines if eviction has been detected. */
+ private boolean evicting;
- // Entry count when eviction was detected.
- private long evictionEntryCount = 0;
+ /** Entry count when eviction was detected. */
+ private long evictionEntryCount;
/**
* Create a new import progress task.
@@ -4076,7 +3946,7 @@
public void run()
{
long latestCount = reader.getEntriesRead() + 0;
- long deltaCount = (latestCount - previousCount);
+ long deltaCount = latestCount - previousCount;
long latestTime = System.currentTimeMillis();
long deltaTime = latestTime - previousTime;
if (deltaTime == 0)
@@ -4165,7 +4035,7 @@
* The number of entries that had been read at the time of the previous
* progress report.
*/
- private long previousCount = 0;
+ private long previousCount;
/**
* The time in milliseconds of the previous progress report.
@@ -4177,8 +4047,8 @@
*/
private EnvironmentStats previousStats;
- // Determines if eviction has been detected.
- private boolean evicting = false;
+ /** Determines if eviction has been detected. */
+ private boolean evicting;
private long latestCount;
@@ -4208,7 +4078,7 @@
@Override
public void run()
{
- long deltaCount = (latestCount - previousCount);
+ long deltaCount = latestCount - previousCount;
long latestTime = System.currentTimeMillis();
long deltaTime = latestTime - previousTime;
if (deltaTime == 0)
@@ -4488,7 +4358,7 @@
* @throws DatabaseException
* If an error occurs reading the database.
*/
- public boolean contains(DN dn) throws DatabaseException;
+ boolean contains(DN dn) throws DatabaseException;
}
/**
@@ -4537,7 +4407,7 @@
private static final long FNV_INIT = 0xcbf29ce484222325L;
private static final long FNV_PRIME = 0x100000001b3L;
- //Hash the DN bytes. Uses the FNV-1a hash.
+ /** Hash the DN bytes. Uses the FNV-1a hash. */
private byte[] hashCode(byte[] b)
{
long hash = FNV_INIT;
@@ -4623,13 +4493,13 @@
}
}
- //Add the DN to the DNs as because of a hash collision.
+ /** Add the DN to the DNs as because of a hash collision. */
private void addDN(DatabaseEntry val, Cursor cursor, byte[] dnBytes)
throws JebException
{
byte[] bytes = val.getData();
int pLen = PackedInteger.getWriteIntLength(dnBytes.length);
- int totLen = bytes.length + (pLen + dnBytes.length);
+ int totLen = bytes.length + pLen + dnBytes.length;
byte[] newRec = new byte[totLen];
System.arraycopy(bytes, 0, newRec, 0, bytes.length);
int pos = bytes.length;
@@ -4643,8 +4513,9 @@
}
}
- //Return true if the specified DN is in the DNs saved as a result of hash
- //collisions.
+ /**
+ * Return true if the specified DN is in the DNs saved as a result of hash collisions.
+ */
private boolean isDNMatched(DatabaseEntry dns, byte[] dnBytes)
{
int pos = 0;
@@ -4682,13 +4553,8 @@
{
cursor = dnCache.openCursor(null, CursorConfig.DEFAULT);
DatabaseEntry dns = new DatabaseEntry();
- OperationStatus status =
- cursor.getSearchKey(key, dns, LockMode.DEFAULT);
- if (status == OperationStatus.SUCCESS)
- {
- return isDNMatched(dns, dnBytes);
- }
- return false;
+ OperationStatus status = cursor.getSearchKey(key, dns, LockMode.DEFAULT);
+ return status == OperationStatus.SUCCESS && isDNMatched(dns, dnBytes);
}
finally
{
@@ -4712,41 +4578,25 @@
}
}
- /**
- * {@inheritDoc}
- */
+ /** {@inheritDoc} */
@Override
public void diskLowThresholdReached(DiskSpaceMonitor monitor)
{
diskFullThresholdReached(monitor);
}
- /**
- * {@inheritDoc}
- */
+ /** {@inheritDoc} */
@Override
public void diskFullThresholdReached(DiskSpaceMonitor monitor)
{
isCanceled = true;
- LocalizableMessage msg;
- if (!isPhaseOneDone)
- {
- msg =
- ERR_IMPORT_LDIF_LACK_DISK_PHASE_ONE.get(monitor.getDirectory()
- .getPath(), monitor.getFreeSpace(), monitor.getLowThreshold());
- }
- else
- {
- msg =
- ERR_IMPORT_LDIF_LACK_DISK_PHASE_TWO.get(monitor.getDirectory()
- .getPath(), monitor.getFreeSpace(), monitor.getLowThreshold());
- }
- logger.error(msg);
+ Arg3<Object, Number, Number> argMsg = !isPhaseOneDone
+ ? ERR_IMPORT_LDIF_LACK_DISK_PHASE_ONE
+ : ERR_IMPORT_LDIF_LACK_DISK_PHASE_TWO;
+ logger.error(argMsg.get(monitor.getDirectory().getPath(), monitor.getFreeSpace(), monitor.getLowThreshold()));
}
- /**
- * {@inheritDoc}
- */
+ /** {@inheritDoc} */
@Override
public void diskSpaceRestored(DiskSpaceMonitor monitor)
{
--
Gitblit v1.10.0