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

mmarie
08.05.2009 28bfc907cd466f070070ce24b079ee8693e2d7c2
4101 : ChangeNumberGenerator is not adjusted when restarting without preserved state

2 files modified
28 ■■■■ changed files
opends/src/server/org/opends/server/replication/common/ChangeNumberGenerator.java 26 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/replication/service/ReplicationDomain.java 2 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/replication/common/ChangeNumberGenerator.java
@@ -125,15 +125,35 @@
    long rcvdTime = number.getTime();
    short changeServerId = number.getServerId();
    int changeSeqNum = number.getSeqnum();
    /* need to synchronize with NewChangeNumber method so that we
     * protect writing lastTime fields
     */
    synchronized(this)
    {
      if (lastTime > rcvdTime)
        return;
      else
      if (lastTime <= rcvdTime)
      {
        lastTime = ++rcvdTime;
      }
      if ((serverId == changeServerId) && (seqnum < changeSeqNum))
      {
        seqnum = changeSeqNum;
      }
    }
  }
  /**
   * Adjust utility method that takes ServerState as a parameter.
   * @param state the ServerState to adjust with
   */
  public void adjust(ServerState state)
  {
    for (short localServerId : state)
    {
      adjust(state.getMaxChangeNumber(localServerId));
     }
  }
}
opends/src/server/org/opends/server/replication/service/ReplicationDomain.java
@@ -407,6 +407,8 @@
    {
      status = initStatus;
    }
    generator.adjust(state);
    generator.adjust(replicationServerState);
  }
  /**