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

Nicolas Capponi
02.56.2014 83c3954ccae5d6c59a0239c2c29fbdc9960109f5
OPENDJ-1611 Check serverState before returning a message

Two updates to the fix:
- always checks serverState before returning a message in
MessageHandler.getNextMessage() method
- doesn't exclude source handler from connectedDSs in
ReplicationServerDomain.take() method
2 files modified
22 ■■■■ changed files
opends/src/server/org/opends/server/replication/server/MessageHandler.java 13 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java 9 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/replication/server/MessageHandler.java
@@ -329,8 +329,10 @@
                following = true;
                lateQueue.clear();
                msgQueue.consumeUpTo(msg);
                updateServerState(msg);
                return msg;
                if (updateServerState(msg))
                {
                  return msg;
                }
              }
            }
          }
@@ -343,8 +345,11 @@
          {
            msg = lateQueue.removeFirst();
          }
          updateServerState(msg);
          return msg;
          if (updateServerState(msg))
          {
            return msg;
          }
          continue;
        }
      }
opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
@@ -35,7 +35,6 @@
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.ConcurrentHashMap;
@@ -1294,13 +1293,7 @@
  public UpdateMsg take(ServerHandler sHandler)
  {
    // Next message can only be taken from connected DSs
    final Set<Integer> connectedReplicaIds = new HashSet<Integer>(getConnectedDSs().keySet());
    if (sHandler.isDataServer())
    {
      // Prevents sending to a DS its own messages
      connectedReplicaIds.remove(sHandler.getServerId());
    }
    return sHandler.take(connectedReplicaIds);
    return sHandler.take(new HashSet<Integer>(getConnectedDSs().keySet()));
  }
  /**