From 443a7bb2635912474bb086501b53553528e6e09f Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 27 Jun 2013 09:43:42 +0000
Subject: [PATCH] DbHandler.java, ReplicationDB.java: Javadoc / code cleanups.
---
opends/src/server/org/opends/server/replication/server/DbHandler.java | 103 +++++++++++++++++++++++++++++----------------------
1 files changed, 58 insertions(+), 45 deletions(-)
diff --git a/opends/src/server/org/opends/server/replication/server/DbHandler.java b/opends/src/server/org/opends/server/replication/server/DbHandler.java
index c175b78..7a7e594 100644
--- a/opends/src/server/org/opends/server/replication/server/DbHandler.java
+++ b/opends/src/server/org/opends/server/replication/server/DbHandler.java
@@ -26,29 +26,29 @@
* Portions copyright 2011-2013 ForgeRock AS
*/
package org.opends.server.replication.server;
-import org.opends.messages.MessageBuilder;
-import static org.opends.server.loggers.ErrorLogger.logError;
import static org.opends.messages.ReplicationMessages.*;
-import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString;
+import static org.opends.server.loggers.ErrorLogger.*;
+import static org.opends.server.util.StaticUtils.*;
import java.util.ArrayList;
import java.util.Date;
-import java.util.List;
import java.util.LinkedList;
+import java.util.List;
+import org.opends.messages.MessageBuilder;
import org.opends.server.admin.std.server.MonitorProviderCfg;
import org.opends.server.api.DirectoryThread;
import org.opends.server.api.MonitorProvider;
import org.opends.server.config.ConfigException;
-import org.opends.server.types.Attribute;
-import org.opends.server.types.Attributes;
-import org.opends.server.types.InitializationException;
-import org.opends.server.util.TimeThread;
import org.opends.server.core.DirectoryServer;
import org.opends.server.replication.common.ChangeNumber;
import org.opends.server.replication.protocol.UpdateMsg;
import org.opends.server.replication.server.ReplicationDB.ReplServerDBCursor;
+import org.opends.server.types.Attribute;
+import org.opends.server.types.Attributes;
+import org.opends.server.types.InitializationException;
+import org.opends.server.util.TimeThread;
import com.sleepycat.je.DatabaseException;
@@ -58,45 +58,54 @@
* It is responsible for efficiently saving the updates that is received from
* each master server into stable storage.
* This class is also able to generate a ReplicationIterator that can be
- * used to read all changes from a given ChangeNUmber.
+ * used to read all changes from a given ChangeNumber.
*
* This class publish some monitoring information below cn=monitor.
- *
*/
public class DbHandler implements Runnable
{
- // The msgQueue holds all the updates not yet saved to stable storage.
- // This list is only used as a temporary placeholder so that the write
- // in the stable storage can be grouped for efficiency reason.
- // Adding an update synchronously add the update to this list.
- // A dedicated thread loops on flush() and trim().
- // flush() : get a number of changes from the in memory list by block
- // and write them to the db.
- // trim() : deletes from the DB a number of changes that are older than a
- // certain date.
- //
- // Changes are not read back by replicationServer threads that are responsible
- // for pushing the changes to other replication server or to LDAP server
- //
+ /**
+ * The msgQueue holds all the updates not yet saved to stable storage.
+ * <p>
+ * This list is only used as a temporary placeholder so that the write in the
+ * stable storage can be grouped for efficiency reason. Adding an update
+ * synchronously add the update to this list. A dedicated thread loops on
+ * flush() and trim().
+ * <dl>
+ * <dt>flush()</dt>
+ * <dd>get a number of changes from the in memory list by block and write them
+ * to the db.</dd>
+ * <dt>trim()</dt>
+ * <dd>deletes from the DB a number of changes that are older than a certain
+ * date.</dd>
+ * </dl>
+ * <p>
+ * Changes are not read back by replicationServer threads that are responsible
+ * for pushing the changes to other replication server or to LDAP server
+ */
private final LinkedList<UpdateMsg> msgQueue =
new LinkedList<UpdateMsg>();
- // The High and low water mark for the max size of the msgQueue.
- // the threads calling add() method will be blocked if the size of
- // msgQueue becomes larger than the queueHimark and will resume
- // only when the size of the msgQueue goes below queueLowmark.
- int queueMaxSize = 5000;
- int queueLowmark = 1000;
- int queueHimark = 4000;
+ /**
+ * The High and low water mark for the max size of the msgQueue. The threads
+ * calling add() method will be blocked if the size of msgQueue becomes larger
+ * than the queueHimark and will resume only when the size of the msgQueue
+ * goes below queueLowmark.
+ */
+ private int queueMaxSize = 5000;
+ private int queueLowmark = 1000;
+ private int queueHimark = 4000;
- // The queue himark and lowmark in bytes, this is set to 100 times the
- // himark and lowmark in number of updates.
- int queueMaxBytes = 100 * queueMaxSize;
- int queueLowmarkBytes = 100 * queueLowmark;
- int queueHimarkBytes = 100 * queueHimark;
+ /**
+ * The queue himark and lowmark in bytes, this is set to 100 times the himark
+ * and lowmark in number of updates.
+ */
+ private int queueMaxBytes = 100 * queueMaxSize;
+ private int queueLowmarkBytes = 100 * queueLowmark;
+ private int queueHimarkBytes = 100 * queueHimark;
- // The number of bytes currently in the queue
- int queueByteSize = 0;
+ /** The number of bytes currently in the queue */
+ private int queueByteSize = 0;
private ReplicationDB db;
private ChangeNumber firstChange = null;
@@ -113,10 +122,8 @@
private long latestTrimDate = 0;
/**
- *
* The trim age in milliseconds. Changes record in the change DB that
* are older than this age are removed.
- *
*/
private long trimAge;
@@ -195,7 +202,9 @@
lastChange = update.getChangeNumber();
}
if (firstChange == null)
+ {
firstChange = update.getChangeNumber();
+ }
}
}
@@ -299,9 +308,11 @@
queueByteSize -= msg.size();
current++;
}
- if ((msgQueue.size() < queueLowmark) &&
- (queueByteSize < queueLowmarkBytes))
+ if ((msgQueue.size() < queueLowmark)
+ && (queueByteSize < queueLowmarkBytes))
+ {
msgQueue.notifyAll();
+ }
}
}
@@ -334,7 +345,9 @@
}
while (msgQueue.size() != 0)
+ {
flush();
+ }
db.shutdown();
DirectoryServer.deregisterMonitorProvider(dbMonitor);
@@ -345,6 +358,7 @@
* Periodically Flushes the ReplicationServerDomain cache from memory to the
* stable storage and trims the old updates.
*/
+ @Override
public void run()
{
while (!shutdown)
@@ -650,16 +664,15 @@
*/
public int getCount(ChangeNumber from, ChangeNumber to)
{
- int c=0;
// Now that we always keep the last ChangeNumber in the DB to avoid
- // expiring cookies to quickly, we need to check if the "to"
+ // expiring cookies too quickly, we need to check if the "to"
// is older than the trim date.
if ((to == null) || !to.older(new ChangeNumber(latestTrimDate, 0, 0)))
{
flush();
- c = db.count(from, to);
+ return db.count(from, to);
}
- return c;
+ return 0;
}
}
--
Gitblit v1.10.0