From 67649485a8b644abfc3f0ab7890df02d6e9fe2e8 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 22 Aug 2013 14:13:20 +0000
Subject: [PATCH] ReplicationIterator.java: Renamed releaseCursor() to close(). Now extends Closeable.
---
opends/src/server/org/opends/server/util/StaticUtils.java | 53 +-----
opends/src/server/org/opends/server/replication/server/MessageHandler.java | 23 --
opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/DbHandlerTest.java | 62 +++----
opends/src/server/org/opends/server/replication/server/changelog/api/ReplicationIterator.java | 7
opends/src/server/org/opends/server/replication/server/changelog/je/JEReplicationIterator.java | 4
opends/src/server/org/opends/server/replication/server/ReplicationBackend.java | 279 ++++++++++++----------------------
opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java | 11 -
7 files changed, 151 insertions(+), 288 deletions(-)
diff --git a/opends/src/server/org/opends/server/replication/server/MessageHandler.java b/opends/src/server/org/opends/server/replication/server/MessageHandler.java
index 2e4c5d2..d63b92e 100644
--- a/opends/src/server/org/opends/server/replication/server/MessageHandler.java
+++ b/opends/src/server/org/opends/server/replication/server/MessageHandler.java
@@ -42,11 +42,13 @@
import org.opends.server.replication.common.ChangeNumber;
import org.opends.server.replication.common.ServerState;
import org.opends.server.replication.protocol.UpdateMsg;
-import org.opends.server.replication.server.changelog.api.*;
+import org.opends.server.replication.server.changelog.api.ReplicationIterator;
+import org.opends.server.replication.server.changelog.api.ReplicationIteratorComparator;
import org.opends.server.types.*;
import static org.opends.messages.ReplicationMessages.*;
import static org.opends.server.loggers.debug.DebugLogger.*;
+import static org.opends.server.util.StaticUtils.*;
/**
* This class implements a buffering/producer/consumer mechanism of
@@ -308,7 +310,7 @@
}
finally
{
- releaseAllIterators(iteratorSortedSet);
+ close(iteratorSortedSet);
}
/*
@@ -411,7 +413,7 @@
}
else
{
- iter.releaseCursor();
+ close(iter);
}
}
@@ -461,7 +463,7 @@
result = null;
} finally
{
- releaseAllIterators(iteratorSortedSet);
+ close(iteratorSortedSet);
}
}
}
@@ -495,24 +497,13 @@
}
else
{
- iter.releaseCursor();
+ close(iter);
}
}
}
return results;
}
- private void releaseAllIterators(SortedSet<ReplicationIterator> iterators)
- {
- if (iterators != null)
- {
- for (ReplicationIterator iter : iterators)
- {
- iter.releaseCursor();
- }
- }
- }
-
/**
* Get the count of updates sent to this server.
* @return The count of update sent to this server.
diff --git a/opends/src/server/org/opends/server/replication/server/ReplicationBackend.java b/opends/src/server/org/opends/server/replication/server/ReplicationBackend.java
index f1b4c56..f693b33 100644
--- a/opends/src/server/org/opends/server/replication/server/ReplicationBackend.java
+++ b/opends/src/server/org/opends/server/replication/server/ReplicationBackend.java
@@ -27,15 +27,6 @@
*/
package org.opends.server.replication.server;
-import static org.opends.messages.BackendMessages.*;
-import static org.opends.messages.JebMessages.*;
-import static org.opends.messages.ReplicationMessages.*;
-import static org.opends.server.config.ConfigConstants.*;
-import static org.opends.server.loggers.ErrorLogger.*;
-import static org.opends.server.loggers.debug.DebugLogger.*;
-import static org.opends.server.util.ServerConstants.*;
-import static org.opends.server.util.StaticUtils.*;
-
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -45,69 +36,31 @@
import org.opends.messages.Message;
import org.opends.server.admin.Configuration;
import org.opends.server.admin.server.ServerManagementContext;
-import org.opends.server.admin.std.server.BackendCfg;
-import org.opends.server.admin.std.server.ReplicationServerCfg;
-import org.opends.server.admin.std.server.ReplicationSynchronizationProviderCfg;
-import org.opends.server.admin.std.server.RootCfg;
-import org.opends.server.admin.std.server.SynchronizationProviderCfg;
+import org.opends.server.admin.std.server.*;
import org.opends.server.api.Backend;
import org.opends.server.api.SynchronizationProvider;
import org.opends.server.backends.jeb.BackupManager;
import org.opends.server.config.ConfigException;
-import org.opends.server.core.AddOperation;
-import org.opends.server.core.DeleteOperation;
-import org.opends.server.core.DirectoryServer;
-import org.opends.server.core.ModifyDNOperation;
-import org.opends.server.core.ModifyOperation;
-import org.opends.server.core.SearchOperation;
+import org.opends.server.core.*;
import org.opends.server.loggers.debug.DebugTracer;
import org.opends.server.protocols.internal.InternalClientConnection;
import org.opends.server.protocols.internal.InternalSearchOperation;
import org.opends.server.replication.common.ChangeNumber;
import org.opends.server.replication.plugin.MultimasterReplication;
import org.opends.server.replication.plugin.ReplicationServerListener;
-import org.opends.server.replication.protocol.AddMsg;
-import org.opends.server.replication.protocol.DeleteMsg;
-import org.opends.server.replication.protocol.LDAPUpdateMsg;
-import org.opends.server.replication.protocol.ModifyDNMsg;
-import org.opends.server.replication.protocol.ModifyMsg;
-import org.opends.server.replication.protocol.UpdateMsg;
+import org.opends.server.replication.protocol.*;
import org.opends.server.replication.server.changelog.api.ReplicationIterator;
-import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeBuilder;
-import org.opends.server.types.AttributeType;
-import org.opends.server.types.Attributes;
-import org.opends.server.types.BackupConfig;
-import org.opends.server.types.BackupDirectory;
-import org.opends.server.types.ByteString;
-import org.opends.server.types.CanceledOperationException;
-import org.opends.server.types.ConditionResult;
-import org.opends.server.types.Control;
-import org.opends.server.types.DN;
-import org.opends.server.types.DebugLogLevel;
-import org.opends.server.types.DirectoryException;
-import org.opends.server.types.DereferencePolicy;
-import org.opends.server.types.Entry;
-import org.opends.server.types.FilterType;
-import org.opends.server.types.IndexType;
-import org.opends.server.types.InitializationException;
-import org.opends.server.types.LDIFExportConfig;
-import org.opends.server.types.LDIFImportConfig;
-import org.opends.server.types.LDIFImportResult;
-import org.opends.server.types.RawAttribute;
-import org.opends.server.types.RestoreConfig;
-import org.opends.server.types.ResultCode;
-import org.opends.server.types.SearchFilter;
-import org.opends.server.types.SearchScope;
-import org.opends.server.types.SearchResultEntry;
-import org.opends.server.types.ObjectClass;
-import org.opends.server.util.AddChangeRecordEntry;
-import org.opends.server.util.DeleteChangeRecordEntry;
-import org.opends.server.util.LDIFReader;
-import org.opends.server.util.LDIFWriter;
-import org.opends.server.util.ModifyChangeRecordEntry;
-import org.opends.server.util.ModifyDNChangeRecordEntry;
-import org.opends.server.util.Validator;
+import org.opends.server.types.*;
+import org.opends.server.util.*;
+
+import static org.opends.messages.BackendMessages.*;
+import static org.opends.messages.JebMessages.*;
+import static org.opends.messages.ReplicationMessages.*;
+import static org.opends.server.config.ConfigConstants.*;
+import static org.opends.server.loggers.ErrorLogger.*;
+import static org.opends.server.loggers.debug.DebugLogger.*;
+import static org.opends.server.util.ServerConstants.*;
+import static org.opends.server.util.StaticUtils.*;
/**
* This class defines a backend that stores its information in an
@@ -370,35 +323,33 @@
@Override()
public synchronized Entry getEntry(DN entryDN)
{
- Entry e = null;
try {
- if(baseDNSet.contains(entryDN)) {
+ if (baseDNSet.contains(entryDN)) {
return new Entry(entryDN, rootObjectclasses, attributes,
operationalAttributes);
- } else {
- InternalClientConnection conn =
- InternalClientConnection.getRootConnection();
- SearchFilter filter=
- SearchFilter.createFilterFromString("(changetype=*)");
- InternalSearchOperation searchOperation =
- new InternalSearchOperation(conn,
- InternalClientConnection.nextOperationID(),
- InternalClientConnection.nextMessageID(), null, entryDN,
- SearchScope.BASE_OBJECT,
- DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
- filter, null, null);
- search(searchOperation);
- LinkedList<SearchResultEntry> resultEntries =
- searchOperation.getSearchEntries();
- if(resultEntries.size() != 0) {
- e=resultEntries.getFirst();
- }
}
- } catch (DirectoryException ex) {
- e=null;
- }
- return e;
+ InternalClientConnection conn =
+ InternalClientConnection.getRootConnection();
+ SearchFilter filter =
+ SearchFilter.createFilterFromString("(changetype=*)");
+ InternalSearchOperation searchOp = new InternalSearchOperation(conn,
+ InternalClientConnection.nextOperationID(),
+ InternalClientConnection.nextMessageID(),
+ null, entryDN, SearchScope.BASE_OBJECT,
+ DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
+ filter, null, null);
+ search(searchOp);
+ List<SearchResultEntry> resultEntries = searchOp.getSearchEntries();
+ if (resultEntries.size() != 0)
+ {
+ return resultEntries.get(0);
+ }
+ }
+ catch (DirectoryException ignored)
+ {
+ }
+ return null;
}
@@ -547,9 +498,9 @@
exportRootChanges(exportContainers, exportConfig, ldifWriter);
- // Iterate through the containers.
try
{
+ // Iterate through the containers.
for (ReplicationServerDomain exportContainer : exportContainers)
{
if (exportConfig.isCancelled())
@@ -563,18 +514,7 @@
{
timer.cancel();
- // Close the LDIF writer
- try
- {
- ldifWriter.close();
- }
- catch (Exception e)
- {
- if (debugEnabled())
- {
- TRACER.debugCaught(DebugLogLevel.ERROR, e);
- }
- }
+ close(ldifWriter);
}
long finishTime = System.currentTimeMillis();
@@ -628,7 +568,7 @@
* Exports the root changes of the export, and one entry by domain.
*/
private void exportRootChanges(List<ReplicationServerDomain> exportContainers,
- LDIFExportConfig exportConfig, LDIFWriter ldifWriter)
+ final LDIFExportConfig exportConfig, LDIFWriter ldifWriter)
{
AttributeType ocType = DirectoryServer.getObjectClassAttributeType();
AttributeBuilder builder = new AttributeBuilder(ocType);
@@ -645,47 +585,49 @@
try
{
- AddChangeRecordEntry changeRecord =
- new AddChangeRecordEntry(DN.decode(BASE_DN),
- attrs);
+ ChangeRecordEntry changeRecord =
+ new AddChangeRecordEntry(DN.decode(BASE_DN), attrs);
ldifWriter.writeChangeRecord(changeRecord);
}
catch (Exception e) { /* do nothing */ }
+ if (exportConfig == null)
+ {
+ return;
+ }
+
for (ReplicationServerDomain exportContainer : exportContainers)
{
- if (exportConfig != null && exportConfig.isCancelled())
+ if (exportConfig.isCancelled())
{
break;
}
attrs.clear();
+ // TODO JNR these multiple calls to clear() are more than suspect!
ldapAttrList.clear();
ldapAttrList.add(ocAttr);
attrs.put(ocType, ldapAttrList);
TRACER.debugInfo("State=" +
exportContainer.getDbServerState());
- Attribute stateAttr = Attributes.create("state", exportContainer
- .getDbServerState().toString());
+ Attribute stateAttr = Attributes.create("state",
+ exportContainer.getDbServerState().toString());
ldapAttrList.clear();
ldapAttrList.add(stateAttr);
attrs.put(stateAttr.getAttributeType(), ldapAttrList);
- Attribute genidAttr = Attributes.create("generation-id", String
- .valueOf(exportContainer.getGenerationId())
- + exportContainer.getBaseDn());
+ Attribute genidAttr = Attributes.create("generation-id",
+ exportContainer.getGenerationId() + exportContainer.getBaseDn());
ldapAttrList.clear();
ldapAttrList.add(genidAttr);
attrs.put(genidAttr.getAttributeType(), ldapAttrList);
try
{
- AddChangeRecordEntry changeRecord =
- new AddChangeRecordEntry(DN.decode(
- exportContainer.getBaseDn() + "," + BASE_DN),
- attrs);
+ ChangeRecordEntry changeRecord = new AddChangeRecordEntry(
+ DN.decode(exportContainer.getBaseDn() + "," + BASE_DN), attrs);
ldifWriter.writeChangeRecord(changeRecord);
}
catch (Exception e)
@@ -709,7 +651,6 @@
LDIFExportConfig exportConfig, LDIFWriter ldifWriter,
SearchOperation searchOperation)
{
- // Walk through the servers
for (int serverId : rsd.getServers())
{
if (exportConfig != null && exportConfig.isCancelled())
@@ -742,7 +683,6 @@
ReplicationIterator ri = rsd.getChangelogIterator(serverId,
previousChangeNumber);
-
if (ri != null)
{
try
@@ -794,7 +734,7 @@
}
finally
{
- ri.releaseCursor();
+ close(ri);
}
}
}
@@ -815,7 +755,6 @@
DirectoryServer.getDefaultAttributeType(CHANGE_NUMBER);
FilterType filterType = filter.getFilterType();
-
if ( (filterType.equals(FilterType.GREATER_OR_EQUAL) ||
filterType.equals(FilterType.EQUALITY) ) &&
filter.getAttributeType().equals(changeNumberAttrType))
@@ -904,7 +843,7 @@
if (exportConfig != null)
{
- AddChangeRecordEntry changeRecord =
+ ChangeRecordEntry changeRecord =
new AddChangeRecordEntry(dn, attrs);
ldifWriter.writeChangeRecord(changeRecord);
}
@@ -915,76 +854,31 @@
}
else if (msg instanceof DeleteMsg)
{
- DeleteMsg delMsg = (DeleteMsg)msg;
+ dn = computeDN(msg);
- dn = DN.decode("uuid=" + msg.getEntryUUID() + "," +
- CHANGE_NUMBER + "=" + delMsg.getChangeNumber() + "," +
- msg.getDn() +","+ BASE_DN);
-
- DeleteChangeRecordEntry changeRecord =
- new DeleteChangeRecordEntry(dn);
- if (exportConfig != null)
- {
- ldifWriter.writeChangeRecord(changeRecord);
- }
- else
- {
- Writer writer = new Writer();
- LDIFWriter ldifWriter2 = writer.getLDIFWriter();
- ldifWriter2.writeChangeRecord(changeRecord);
- LDIFReader reader = writer.getLDIFReader();
- entry = reader.readEntry();
- }
+ ChangeRecordEntry changeRecord = new DeleteChangeRecordEntry(dn);
+ entry = writeChangeRecord(exportConfig, ldifWriter, changeRecord);
}
else if (msg instanceof ModifyMsg)
{
ModifyOperation op = (ModifyOperation)msg.createOperation(conn);
-
- dn = DN.decode("uuid=" + msg.getEntryUUID() + "," +
- CHANGE_NUMBER + "=" + msg.getChangeNumber() + "," +
- msg.getDn() +","+ BASE_DN);
op.setInternalOperation(true);
- ModifyChangeRecordEntry changeRecord =
+ dn = computeDN(msg);
+ ChangeRecordEntry changeRecord =
new ModifyChangeRecordEntry(dn, op.getRawModifications());
- if (exportConfig != null)
- {
- ldifWriter.writeChangeRecord(changeRecord);
- }
- else
- {
- Writer writer = new Writer();
- LDIFWriter ldifWriter2 = writer.getLDIFWriter();
- ldifWriter2.writeChangeRecord(changeRecord);
- LDIFReader reader = writer.getLDIFReader();
- entry = reader.readEntry();
- }
+ entry = writeChangeRecord(exportConfig, ldifWriter, changeRecord);
}
else if (msg instanceof ModifyDNMsg)
{
ModifyDNOperation op = (ModifyDNOperation)msg.createOperation(conn);
-
- dn = DN.decode("uuid=" + msg.getEntryUUID() + "," +
- CHANGE_NUMBER + "=" + msg.getChangeNumber() + "," +
- msg.getDn() +","+ BASE_DN);
op.setInternalOperation(true);
- ModifyDNChangeRecordEntry changeRecord =
+ dn = computeDN(msg);
+ ChangeRecordEntry changeRecord =
new ModifyDNChangeRecordEntry(dn, op.getNewRDN(), op.deleteOldRDN(),
op.getNewSuperior());
-
- if (exportConfig != null)
- {
- ldifWriter.writeChangeRecord(changeRecord);
- }
- else
- {
- Writer writer = new Writer();
- LDIFWriter ldifWriter2 = writer.getLDIFWriter();
- ldifWriter2.writeChangeRecord(changeRecord);
- LDIFReader reader = writer.getLDIFReader();
- entry = reader.readEntry();
- }
+ entry = writeChangeRecord(exportConfig, ldifWriter, changeRecord);
}
if (exportConfig != null)
@@ -1009,9 +903,8 @@
SearchScope scope = searchOperation.getScope();
SearchFilter filter = searchOperation.getFilter();
- boolean ms = entry.matchesBaseAndScope(searchBaseDN, scope);
- boolean mf = filter.matchesEntry(entry);
- if ( ms && mf )
+ if (entry.matchesBaseAndScope(searchBaseDN, scope)
+ && filter.matchesEntry(entry))
{
searchOperation.returnEntry(entry, new LinkedList<Control>());
}
@@ -1025,7 +918,6 @@
{
TRACER.debugCaught(DebugLogLevel.ERROR, e);
}
- Message message;
String dnStr;
if (dn == null)
{
@@ -1035,6 +927,7 @@
{
dnStr = dn.toNormalizedString();
}
+ Message message;
if (exportConfig != null)
{
message = ERR_BACKEND_EXPORT_ENTRY.get(
@@ -1049,6 +942,30 @@
}
}
+
+ private DN computeDN(LDAPUpdateMsg msg) throws DirectoryException
+ {
+ return DN.decode("uuid=" + msg.getEntryUUID() + "," + CHANGE_NUMBER + "="
+ + msg.getChangeNumber() + "," + msg.getDn() + "," + BASE_DN);
+ }
+
+ private Entry writeChangeRecord(LDIFExportConfig exportConfig,
+ LDIFWriter ldifWriter, ChangeRecordEntry changeRecord)
+ throws IOException, LDIFException
+ {
+ if (exportConfig != null)
+ {
+ ldifWriter.writeChangeRecord(changeRecord);
+ return null;
+ }
+
+ final Writer writer = new Writer();
+ final LDIFWriter ldifWriter2 = writer.getLDIFWriter();
+ ldifWriter2.writeChangeRecord(changeRecord);
+ final LDIFReader ldifReader = writer.getLDIFReader();
+ return ldifReader.readEntry();
+ }
+
/**
* Add an attribute to a provided Map of attribute.
*
@@ -1326,20 +1243,16 @@
if (server==null)
{
server = getReplicationServer();
-
if (server == null)
{
- if (baseDNSet.contains(searchBaseDN))
+ if (!baseDNSet.contains(searchBaseDN))
{
- return;
- }
- else
- {
- Message message = ERR_REPLICATIONBACKEND_ENTRY_DOESNT_EXIST.
- get(String.valueOf(searchBaseDN));
+ Message message = ERR_REPLICATIONBACKEND_ENTRY_DOESNT_EXIST.get(
+ String.valueOf(searchBaseDN));
throw new DirectoryException(
ResultCode.NO_SUCH_OBJECT, message, null, null);
}
+ return;
}
}
diff --git a/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java b/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
index 3b50887..7afb0d0 100644
--- a/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
+++ b/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
@@ -1311,7 +1311,7 @@
if (!it.next())
{
- it.releaseCursor();
+ close(it);
return null;
}
@@ -1867,11 +1867,6 @@
}
}
- private void sleep(int millis)
- {
- try { Thread.sleep(millis); } catch (InterruptedException e) {}
- }
-
/**
* Creates a TopologyMsg filled with information to be sent to a remote RS.
* We send remote RS the info of every DS that are directly connected to us
@@ -2717,9 +2712,7 @@
// there's no change older than eligibleCN (case of s3/cn31)
result.update(new ChangeNumber(0, 0, serverId));
} finally {
- if (ri != null) {
- ri.releaseCursor();
- }
+ close(ri);
}
} else {
// for this serverId, all changes in the ChangelogDb are holder
diff --git a/opends/src/server/org/opends/server/replication/server/changelog/api/ReplicationIterator.java b/opends/src/server/org/opends/server/replication/server/changelog/api/ReplicationIterator.java
index b44c16c..90383b3 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/api/ReplicationIterator.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/api/ReplicationIterator.java
@@ -26,13 +26,15 @@
*/
package org.opends.server.replication.server.changelog.api;
+import java.io.Closeable;
+
import org.opends.server.replication.protocol.UpdateMsg;
/**
* This interface allows to iterate through the changes received from a given
* LDAP Server Identifier.
*/
-public interface ReplicationIterator
+public interface ReplicationIterator extends Closeable
{
/**
@@ -55,6 +57,7 @@
* called when the iterator is no longer used. Failure to do it could cause DB
* deadlock.
*/
- void releaseCursor();
+ @Override
+ void close();
}
diff --git a/opends/src/server/org/opends/server/replication/server/changelog/je/JEReplicationIterator.java b/opends/src/server/org/opends/server/replication/server/changelog/je/JEReplicationIterator.java
index e8dae9f..8fc4d80 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/je/JEReplicationIterator.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/je/JEReplicationIterator.java
@@ -133,7 +133,7 @@
/** {@inheritDoc} */
@Override
- public void releaseCursor()
+ public void close()
{
synchronized (this)
{
@@ -155,6 +155,6 @@
@Override
protected void finalize()
{
- releaseCursor();
+ close();
}
}
diff --git a/opends/src/server/org/opends/server/util/StaticUtils.java b/opends/src/server/org/opends/server/util/StaticUtils.java
index 2ced84c..94df1c0 100644
--- a/opends/src/server/org/opends/server/util/StaticUtils.java
+++ b/opends/src/server/org/opends/server/util/StaticUtils.java
@@ -27,42 +27,16 @@
*/
package org.opends.server.util;
-import java.io.BufferedReader;
-import java.io.Closeable;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.UnsupportedEncodingException;
+import java.io.*;
import java.lang.reflect.InvocationTargetException;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.NetworkInterface;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.SocketException;
-import java.net.UnknownHostException;
+import java.net.*;
import java.nio.ByteBuffer;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.SocketChannel;
import java.text.ParseException;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Date;
-import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.RandomAccess;
-import java.util.StringTokenizer;
-import java.util.TimeZone;
+import java.util.*;
import javax.naming.NamingException;
import javax.naming.ldap.InitialLdapContext;
@@ -74,19 +48,7 @@
import org.opends.server.api.ClientConnection;
import org.opends.server.core.DirectoryServer;
import org.opends.server.loggers.debug.DebugTracer;
-import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeBuilder;
-import org.opends.server.types.AttributeType;
-import org.opends.server.types.AttributeValue;
-import org.opends.server.types.ByteSequence;
-import org.opends.server.types.DN;
-import org.opends.server.types.DebugLogLevel;
-import org.opends.server.types.DirectoryException;
-import org.opends.server.types.Entry;
-import org.opends.server.types.IdentifiedException;
-import org.opends.server.types.ObjectClass;
-import org.opends.server.types.RDN;
-import org.opends.server.types.ResultCode;
+import org.opends.server.types.*;
import org.opends.server.util.args.Argument;
import org.opends.server.util.args.ArgumentException;
@@ -4639,7 +4601,7 @@
* @param closeables
* The closeables to be closed, which may be <code>null</code>.
*/
- public static void close(Collection<Closeable> closeables)
+ public static void close(Collection<? extends Closeable> closeables)
{
if (closeables == null)
{
@@ -4655,7 +4617,10 @@
}
catch (IOException ignored)
{
- // Ignore.
+ if (debugEnabled())
+ {
+ TRACER.debugCaught(DebugLogLevel.ERROR, ignored);
+ }
}
}
}
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/DbHandlerTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/DbHandlerTest.java
index f36531c..bff653e 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/DbHandlerTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/DbHandlerTest.java
@@ -41,6 +41,7 @@
import org.opends.server.replication.server.ReplServerFakeConfiguration;
import org.opends.server.replication.server.ReplicationServer;
import org.opends.server.replication.server.changelog.api.ReplicationIterator;
+import org.opends.server.util.StaticUtils;
import org.testng.annotations.Test;
import static org.opends.server.TestCaseUtils.*;
@@ -86,9 +87,7 @@
testRoot = createDirectory(path);
dbEnv = new ReplicationDbEnv(path, replicationServer);
-
- handler = new DbHandler(1, TEST_ROOT_DN_STRING,
- replicationServer, dbEnv, 5000);
+ handler = new DbHandler(1, TEST_ROOT_DN_STRING, replicationServer, dbEnv, 5000);
ChangeNumberGenerator gen = new ChangeNumberGenerator( 1, 0);
ChangeNumber changeNumber1 = gen.newChangeNumber();
@@ -182,8 +181,7 @@
private String getReplicationDbPath()
{
String buildRoot = System.getProperty(TestCaseUtils.PROPERTY_BUILD_ROOT);
- String path =
- System.getProperty(TestCaseUtils.PROPERTY_BUILD_DIR, buildRoot
+ String path = System.getProperty(TestCaseUtils.PROPERTY_BUILD_DIR, buildRoot
+ File.separator + "build");
return path + File.separator + "unit-tests" + File.separator + "dbHandler";
}
@@ -199,43 +197,51 @@
return testRoot;
}
- private ReplicationIterator assertFoundInOrder(DbHandler handler,
+ private void assertFoundInOrder(DbHandler handler,
ChangeNumber... changeNumbers) throws Exception
{
if (changeNumbers.length == 0)
{
- return null;
+ return;
}
ReplicationIterator it = handler.generateIterator(changeNumbers[0]);
- for (int i = 1; i < changeNumbers.length; i++)
+ try
{
- assertTrue(it.next());
- final ChangeNumber cn = it.getChange().getChangeNumber();
- final boolean equals = cn.compareTo(changeNumbers[i]) == 0;
- assertTrue(equals, "Actual change number=" + cn
- + ", Expected change number=" + changeNumbers[i]);
+ for (int i = 1; i < changeNumbers.length; i++)
+ {
+ assertTrue(it.next());
+ final ChangeNumber cn = it.getChange().getChangeNumber();
+ final boolean equals = cn.compareTo(changeNumbers[i]) == 0;
+ assertTrue(equals, "Actual change number=" + cn
+ + ", Expected change number=" + changeNumbers[i]);
+ }
+ assertFalse(it.next());
+ assertNull(it.getChange(), "Actual change number=" + it.getChange()
+ + ", Expected null");
}
- assertFalse(it.next());
- assertNull(it.getChange(), "Actual change number=" + it.getChange()
- + ", Expected null");
-
- it.releaseCursor();
- return it;
+ finally
+ {
+ StaticUtils.close(it);
+ }
}
private void assertNotFound(DbHandler handler, ChangeNumber changeNumber)
{
+ ReplicationIterator iter = null;
try
{
- ReplicationIterator iter = handler.generateIterator(changeNumber);
- iter.releaseCursor();
+ iter = handler.generateIterator(changeNumber);
fail("Expected exception");
}
catch (Exception e)
{
assertEquals(e.getLocalizedMessage(), "ChangeNumber not available");
}
+ finally
+ {
+ StaticUtils.close(iter);
+ }
}
/**
@@ -261,10 +267,7 @@
testRoot = createDirectory(path);
dbEnv = new ReplicationDbEnv(path, replicationServer);
-
- handler =
- new DbHandler( 1, TEST_ROOT_DN_STRING,
- replicationServer, dbEnv, 5000);
+ handler = new DbHandler(1, TEST_ROOT_DN_STRING, replicationServer, dbEnv, 5000);
// Creates changes added to the dbHandler
ChangeNumberGenerator gen = new ChangeNumberGenerator( 1, 0);
@@ -365,10 +368,7 @@
dbEnv = new ReplicationDbEnv(path, replicationServer);
- // Create the handler
- handler =
- new DbHandler( 1, TEST_ROOT_DN_STRING,
- replicationServer, dbEnv, 10);
+ handler = new DbHandler(1, TEST_ROOT_DN_STRING, replicationServer, dbEnv, 10);
handler.setCounterWindowSize(counterWindow);
// Populate the db with 'max' msg
@@ -465,9 +465,7 @@
debugInfo(tn,"SHUTDOWN handler and recreate");
handler.shutdown();
- handler =
- new DbHandler( 1, TEST_ROOT_DN_STRING,
- replicationServer, dbEnv, 10);
+ handler = new DbHandler(1, TEST_ROOT_DN_STRING, replicationServer, dbEnv, 10);
handler.setCounterWindowSize(counterWindow);
// Test first and last
--
Gitblit v1.10.0