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

pgamba
29.32.2009 f70c357d82774ce2462755e5798e31f553e85610
#4250 Entry not replicated after initializations / not systematic
3 files modified
67 ■■■■■ changed files
opends/src/server/org/opends/server/replication/server/DataServerHandler.java 13 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java 44 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/replication/service/ReplicationDomain.java 10 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/replication/server/DataServerHandler.java
@@ -59,6 +59,10 @@
 */
public class DataServerHandler extends ServerHandler
{
  // Temporay generationId received in handshake/phase1,
  // and used after handshake/phase2
  long tmpGenerationId;
  // Status of this DS (only used if this server handler represents a DS)
  private ServerStatus status = ServerStatus.INVALID_STATUS;
@@ -409,7 +413,7 @@
  public boolean processStartFromRemote(ServerStartMsg serverStartMsg)
  throws DirectoryException
  {
    generationId = serverStartMsg.getGenerationId();
    tmpGenerationId = serverStartMsg.getGenerationId();
    protocolVersion = ProtocolVersion.minWithCurrent(
        serverStartMsg.getVersion());
    serverId = serverStartMsg.getServerId();
@@ -474,6 +478,9 @@
      boolean sessionInitiatorSSLEncryption =
        processStartFromRemote(inServerStartMsg);
      // lock with no timeout
      lockDomain(false);
      localGenerationId = replicationServerDomain.getGenerationId();
      oldGenerationId = localGenerationId;
@@ -490,9 +497,6 @@
        return;
      }
      // lock with no timeout
      lockDomain(false);
      //
      ReplServerStartMsg outReplServerStartMsg = null;
      try
@@ -652,6 +656,7 @@
     *   (unsaved yet on disk . will be set with the 1rst change
     * received)
     */
    generationId = tmpGenerationId;
    if (localGenerationId > 0)
    {
      if (generationId != localGenerationId)
opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
@@ -1835,20 +1835,23 @@
  {
    for (DataServerHandler handler : directoryServers.values())
    {
      if ((notThisOne == null) || // All DSs requested
        ((notThisOne != null) && (handler != notThisOne)))
      // All except passed one
      if (handler.getStatus() != ServerStatus.NOT_CONNECTED_STATUS)
      {
        TopologyMsg topoMsg = createTopologyMsgForDS(handler.getServerId());
        try
        if ((notThisOne == null) || // All DSs requested
          ((notThisOne != null) && (handler != notThisOne)))
        // All except passed one
        {
          handler.sendTopoInfo(topoMsg);
        } catch (IOException e)
        {
          Message message = ERR_EXCEPTION_SENDING_TOPO_INFO.get(
          TopologyMsg topoMsg = createTopologyMsgForDS(handler.getServerId());
          try
          {
            handler.sendTopoInfo(topoMsg);
          } catch (IOException e)
          {
            Message message = ERR_EXCEPTION_SENDING_TOPO_INFO.get(
            baseDn.toString(),
            "directory", Short.toString(handler.getServerId()), e.getMessage());
          logError(message);
            logError(message);
          }
        }
      }
    }
@@ -1863,16 +1866,19 @@
    TopologyMsg topoMsg = createTopologyMsgForRS();
    for (ReplicationServerHandler handler : replicationServers.values())
    {
      try
      if (handler.getStatus() != ServerStatus.NOT_CONNECTED_STATUS)
      {
        handler.sendTopoInfo(topoMsg);
      } catch (IOException e)
      {
        Message message = ERR_EXCEPTION_SENDING_TOPO_INFO.get(
          baseDn.toString(),
          "replication", Short.toString(handler.getServerId()),
          e.getMessage());
        logError(message);
        try
        {
          handler.sendTopoInfo(topoMsg);
        } catch (IOException e)
        {
          Message message = ERR_EXCEPTION_SENDING_TOPO_INFO.get(
            baseDn.toString(),
            "replication", Short.toString(handler.getServerId()),
            e.getMessage());
          logError(message);
        }
      }
    }
  }
opends/src/server/org/opends/server/replication/service/ReplicationDomain.java
@@ -1938,6 +1938,16 @@
      genIdMessage = new ResetGenerationIdMsg(generationIdNewValue);
    }
    broker.publish(genIdMessage);
    // check that at least one ReplicationServer did change its generation-id
    if (generationIdNewValue == null)
    {
      checkGenerationID(this.getGenerationID());
    }
    else
    {
      checkGenerationID(generationIdNewValue);
    }
  }