mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Nicolas Capponi
18.23.2014 70d13956bc76d9f3ef4f651239ada1a00cacb85c
Add missing synchronization on replicaCursors in FileChangelogDB class
1 files modified
20 ■■■■■ changed files
opends/src/server/org/opends/server/replication/server/changelog/file/FileChangelogDB.java 20 ●●●●● patch | view | raw | blame | history
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);
        }
      }
    }
  }