From 70d13956bc76d9f3ef4f651239ada1a00cacb85c Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Thu, 18 Sep 2014 08:23:40 +0000
Subject: [PATCH] Add missing synchronization on replicaCursors in FileChangelogDB class

---
 opends/src/server/org/opends/server/replication/server/changelog/file/FileChangelogDB.java |   20 +++++++++++++-------
 1 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/server/changelog/file/FileChangelogDB.java b/opends/src/server/org/opends/server/replication/server/changelog/file/FileChangelogDB.java
index 15fe16c..b588dd1 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/file/FileChangelogDB.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/file/FileChangelogDB.java
@@ -785,10 +785,13 @@
     else if (cursor instanceof ReplicaCursor)
     {
       final ReplicaCursor replicaCursor = (ReplicaCursor) cursor;
-      final List<ReplicaCursor> cursors = replicaCursors.get(replicaCursor.getReplicaID());
-      if (cursors != null)
+      synchronized (replicaCursors)
       {
-        cursors.remove(cursor);
+        final List<ReplicaCursor> cursors = replicaCursors.get(replicaCursor.getReplicaID());
+        if (cursors != null)
+        {
+          cursors.remove(cursor);
+        }
       }
     }
   }
@@ -851,12 +854,15 @@
 
   private void updateCursorsWithOfflineCSN(final DN baseDN, final int serverId, final CSN offlineCSN)
   {
-    final List<ReplicaCursor> cursors = replicaCursors.get(Pair.of(baseDN, serverId));
-    if (cursors != null)
+    synchronized (replicaCursors)
     {
-      for (ReplicaCursor cursor : cursors)
+      final List<ReplicaCursor> cursors = replicaCursors.get(Pair.of(baseDN, serverId));
+      if (cursors != null)
       {
-        cursor.setOfflineCSN(offlineCSN);
+        for (ReplicaCursor cursor : cursors)
+        {
+          cursor.setOfflineCSN(offlineCSN);
+        }
       }
     }
   }

--
Gitblit v1.10.0