From 0bd57577bb85119b2b4495c5ef525ba189d8d17c Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Wed, 04 Mar 2015 23:14:55 +0000
Subject: [PATCH] OPENDJ-1848: in-line and remove various storage related access methods from DatabaseContainer.
---
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java | 69 ++++++++++++++++------------------
1 files changed, 32 insertions(+), 37 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java
index e2a6827..4dc06d5 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java
@@ -747,7 +747,7 @@
@Override
public Long run(ReadableStorage txn) throws Exception
{
- EntryID entryID = dn2id.get(txn, entryDN, false);
+ EntryID entryID = dn2id.get(txn, entryDN);
if (entryID != null)
{
ByteString key = entryID.toByteString();
@@ -928,7 +928,7 @@
if (entryIDList.size() > IndexFilter.FILTER_CANDIDATE_THRESHOLD)
{
// Read the ID from dn2id.
- EntryID baseID = dn2id.get(txn, aBaseDN, false);
+ EntryID baseID = dn2id.get(txn, aBaseDN);
if (baseID == null)
{
LocalizableMessage message = ERR_JEB_SEARCH_NO_SUCH_OBJECT.get(aBaseDN);
@@ -1313,7 +1313,7 @@
return cacheEntry;
}
- final Entry entry = id2entry.get(txn, entryID, false);
+ final Entry entry = id2entry.get(txn, entryID);
if (entry != null)
{
// Put the entry in the cache making sure not to overwrite a newer copy
@@ -1518,7 +1518,7 @@
try
{
// Check whether the entry already exists.
- if (dn2id.get(txn, entry.getName(), false) != null)
+ if (dn2id.get(txn, entry.getName()) != null)
{
throw new DirectoryException(ResultCode.ENTRY_ALREADY_EXISTS, ERR_JEB_ADD_ENTRY_ALREADY_EXISTS.get(entry
.getName()));
@@ -1532,7 +1532,7 @@
dn2uri.targetEntryReferrals(txn, entry.getName(), null);
// Read the parent ID from dn2id.
- parentID = dn2id.get(txn, parentDN, false);
+ parentID = dn2id.get(txn, parentDN);
if (parentID == null)
{
LocalizableMessage message = ERR_JEB_ADD_NO_SUCH_OBJECT.get(entry.getName());
@@ -1586,7 +1586,7 @@
for (DN dn = getParentWithinBase(parentDN); dn != null; dn = getParentWithinBase(dn))
{
// Read the ID from dn2id.
- EntryID nodeID = dn2id.get(txn, dn, false);
+ EntryID nodeID = dn2id.get(txn, dn);
if (nodeID == null)
{
throw new StorageRuntimeException(ERR_JEB_MISSING_DN2ID_RECORD.get(dn).toString());
@@ -1697,7 +1697,7 @@
int subordinateEntriesDeleted = 0;
- Cursor cursor = dn2id.openCursor(txn);
+ Cursor cursor = txn.openCursor(dn2id.getName());
try
{
// Step forward until we pass the ending value.
@@ -1722,7 +1722,7 @@
// Invoke any subordinate delete plugins on the entry.
if (deleteOperation != null && !deleteOperation.isSynchronizationOperation())
{
- Entry subordinateEntry = id2entry.get(txn, entryID, false);
+ Entry subordinateEntry = id2entry.get(txn, entryID);
SubordinateDelete pluginResult =
getPluginConfigManager().invokeSubordinateDeletePlugins(deleteOperation, subordinateEntry);
@@ -1825,7 +1825,7 @@
{
leafDNKey = dnToDNKey(targetDN, baseDN.size());
}
- ByteString value = dn2id.read(txn, leafDNKey, true);
+ ByteString value = txn.getRMW(dn2id.getName(), leafDNKey);
if (value == null)
{
LocalizableMessage message = ERR_JEB_DELETE_NO_SUCH_OBJECT.get(targetDN);
@@ -1836,7 +1836,7 @@
}
// Remove from dn2id.
- if (!dn2id.delete(txn, leafDNKey))
+ if (!txn.delete(dn2id.getName(), leafDNKey))
{
// Do not expect to ever come through here.
LocalizableMessage message = ERR_JEB_DELETE_NO_SUCH_OBJECT.get(leafDNKey);
@@ -1845,7 +1845,7 @@
}
// Check that the entry exists in id2entry and read its contents.
- Entry entry = id2entry.get(txn, leafID, true);
+ Entry entry = id2entry.getRMW(txn, leafID);
if (entry == null)
{
throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
@@ -1881,7 +1881,7 @@
parentDN = getParentWithinBase(parentDN))
{
// Read the ID from dn2id.
- EntryID parentID = dn2id.get(txn, parentDN, false);
+ EntryID parentID = dn2id.get(txn, parentDN);
if (parentID == null)
{
throw new StorageRuntimeException(ERR_JEB_MISSING_DN2ID_RECORD.get(parentDN).toString());
@@ -1932,7 +1932,7 @@
@Override
public Boolean run(ReadableStorage txn) throws Exception
{
- EntryID id = dn2id.get(null, entryDN, false);
+ EntryID id = dn2id.get(null, entryDN);
return id != null;
}
});
@@ -1995,7 +1995,7 @@
try
{
// Read dn2id.
- EntryID entryID = dn2id.get(txn, entryDN, false);
+ EntryID entryID = dn2id.get(txn, entryDN);
if (entryID == null)
{
// The entryDN does not exist.
@@ -2005,7 +2005,7 @@
}
// Read id2entry.
- final Entry entry = id2entry.get(txn, entryID, false);
+ final Entry entry = id2entry.get(txn, entryID);
if (entry == null)
{
// The entryID does not exist.
@@ -2055,7 +2055,7 @@
try
{
// Read dn2id.
- EntryID entryID = dn2id.get(txn, newEntry.getName(), true);
+ EntryID entryID = dn2id.getRMW(txn, newEntry.getName());
if (entryID == null)
{
// The entry does not exist.
@@ -2201,13 +2201,13 @@
try
{
// Check whether the renamed entry already exists.
- if (!currentDN.equals(entry.getName()) && dn2id.get(txn, entry.getName(), false) != null)
+ if (!currentDN.equals(entry.getName()) && dn2id.get(txn, entry.getName()) != null)
{
LocalizableMessage message = ERR_JEB_MODIFYDN_ALREADY_EXISTS.get(entry.getName());
throw new DirectoryException(ResultCode.ENTRY_ALREADY_EXISTS, message);
}
- EntryID oldApexID = dn2id.get(txn, currentDN, false);
+ EntryID oldApexID = dn2id.get(txn, currentDN);
if (oldApexID == null)
{
// Check for referral entries above the target entry.
@@ -2218,7 +2218,7 @@
throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, message, matchedDN, null);
}
- Entry oldApexEntry = id2entry.get(txn, oldApexID, false);
+ Entry oldApexEntry = id2entry.get(txn, oldApexID);
if (oldApexEntry == null)
{
throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), ERR_JEB_MISSING_ID2ENTRY_RECORD
@@ -2238,7 +2238,7 @@
* greater than its parent, since search results are returned in
* ID order.
*/
- EntryID newSuperiorID = dn2id.get(txn, newSuperiorDN, false);
+ EntryID newSuperiorID = dn2id.get(txn, newSuperiorDN);
if (newSuperiorID == null)
{
LocalizableMessage msg = ERR_JEB_NEW_SUPERIOR_NO_SUCH_OBJECT.get(newSuperiorDN);
@@ -2297,7 +2297,7 @@
{
// We have found a subordinate entry.
EntryID oldID = new EntryID(cursor.getValue());
- Entry oldEntry = id2entry.get(txn, oldID, false);
+ Entry oldEntry = id2entry.get(txn, oldID);
// Construct the new DN of the entry.
DN newDN = modDN(oldEntry.getName(), currentDN.size(), entry.getName());
@@ -2429,7 +2429,7 @@
for (DN dn = getParentWithinBase(newEntry.getName()); dn != null;
dn = getParentWithinBase(dn))
{
- EntryID parentID = dn2id.get(txn, dn, false);
+ EntryID parentID = dn2id.get(txn, dn);
ByteString parentIDKeyBytes = parentID.toByteString();
if(isParent)
{
@@ -2474,7 +2474,7 @@
boolean isParent = true;
for (DN dn = oldSuperiorDN; dn != null; dn = getParentWithinBase(dn))
{
- EntryID parentID = dn2id.get(txn, dn, false);
+ EntryID parentID = dn2id.get(txn, dn);
ByteString parentIDKeyBytes = parentID.toByteString();
if(isParent)
{
@@ -2580,7 +2580,7 @@
// Remove the old ID from id2subtree of old apex superior entries.
for (DN dn = oldSuperiorDN; dn != null; dn = getParentWithinBase(dn))
{
- EntryID parentID = dn2id.get(txn, dn, false);
+ EntryID parentID = dn2id.get(txn, dn);
ByteString parentIDKeyBytes = parentID.toByteString();
id2subtree.removeID(buffer, parentIDKeyBytes, oldID);
}
@@ -2726,7 +2726,7 @@
*/
long getEntryCount(ReadableStorage txn) throws StorageRuntimeException
{
- final EntryID entryID = dn2id.get(txn, baseDN, false);
+ final EntryID entryID = dn2id.get(txn, baseDN);
if (entryID != null)
{
final EntryIDSet entryIDSet = id2subtree.readKey(entryID.toByteString(), txn);
@@ -2893,6 +2893,7 @@
try
{
+ // Rename in transaction.
storage.write(new WriteOperation()
{
@Override
@@ -2906,19 +2907,13 @@
}
}
});
- storage.write(new WriteOperation()
+ // Only rename the containers if the txn succeeded.
+ for (DatabaseContainer db : databases)
{
- @Override
- public void run(WriteableStorage txn) throws Exception
- {
- for (DatabaseContainer db : databases)
- {
- TreeName oldName = db.getName();
- TreeName newName = oldName.replaceBaseDN(newBaseDN);
- db.setName(newName);
- }
- }
- });
+ TreeName oldName = db.getName();
+ TreeName newName = oldName.replaceBaseDN(newBaseDN);
+ db.setName(newName);
+ }
}
catch (Exception e)
{
--
Gitblit v1.10.0