From fe6725b4cde23ba558393a0687bf93842258e66a Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 13 Nov 2013 16:17:29 +0000
Subject: [PATCH] CompositeDBCursor.java: Fixed another ConcurrentModificationException that I created. *Sigh*

---
 opends/src/server/org/opends/server/replication/server/changelog/je/CompositeDBCursor.java |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/server/changelog/je/CompositeDBCursor.java b/opends/src/server/org/opends/server/replication/server/changelog/je/CompositeDBCursor.java
index 75eb518..f531745 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/je/CompositeDBCursor.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/je/CompositeDBCursor.java
@@ -80,12 +80,12 @@
   public boolean next() throws ChangelogException
   {
     // try to recycle empty cursors in case the underlying ReplicaDBs received
-    // new changes
-    for (Iterator<DBCursor<UpdateMsg>> iter = exhaustedCursors.iterator(); iter
-        .hasNext();)
+    // new changes. Copy the List to avoid ConcurrentModificationExceptions.
+    DBCursor<UpdateMsg>[] copy =
+        exhaustedCursors.toArray(new DBCursor[exhaustedCursors.size()]);
+    exhaustedCursors.clear();
+    for (DBCursor<UpdateMsg> cursor : copy)
     {
-      DBCursor<UpdateMsg> cursor = iter.next();
-      iter.remove();
       cursor.next();
       add(cursor);
     }

--
Gitblit v1.10.0