Rename ServerState.getMaxChangeNumber(int) to ServerState.getChangeNumber(int).
| | |
| | | this.lastTime = TimeThread.getTime(); |
| | | for (int stateId : state) |
| | | { |
| | | if (this.lastTime < state.getMaxChangeNumber(stateId).getTime()) |
| | | this.lastTime = state.getMaxChangeNumber(stateId).getTime(); |
| | | if (this.lastTime < state.getChangeNumber(stateId).getTime()) |
| | | this.lastTime = state.getChangeNumber(stateId).getTime(); |
| | | if (stateId == id) |
| | | this.seqnum = state.getMaxChangeNumber(id).getSeqnum(); |
| | | this.seqnum = state.getChangeNumber(id).getSeqnum(); |
| | | } |
| | | this.serverId = id; |
| | | |
| | |
| | | { |
| | | for (int localServerId : state) |
| | | { |
| | | adjust(state.getMaxChangeNumber(localServerId)); |
| | | adjust(state.getChangeNumber(localServerId)); |
| | | } |
| | | } |
| | | } |
| | |
| | | if (oldServerState == null) |
| | | oldServerState = new ServerState(); |
| | | |
| | | if (changeNumber.newer(oldServerState.getMaxChangeNumber(serverId))) |
| | | if (changeNumber.newer(oldServerState.getChangeNumber(serverId))) |
| | | { |
| | | oldServerState.update(changeNumber); |
| | | list.put(baseDN, oldServerState); |
| | |
| | | clear(); |
| | | for (Integer serverId : serverState) |
| | | { |
| | | ChangeNumber maxChangeNumber = serverState.getMaxChangeNumber(serverId); |
| | | ChangeNumber maxChangeNumber = serverState.getChangeNumber(serverId); |
| | | if (update(maxChangeNumber)) |
| | | { |
| | | result = true; |
| | |
| | | } |
| | | |
| | | /** |
| | | * Get the largest ChangeNumber seen for a given LDAP server ID. |
| | | * Returns the {@code ChangeNumber} contained in this server state which |
| | | * corresponds to the provided server ID. |
| | | * |
| | | * @param serverId2 : the server ID |
| | | * @return the largest ChangeNumber seen |
| | | * @param serverId |
| | | * The server ID. |
| | | * @return The {@code ChangeNumber} contained in this server state which |
| | | * corresponds to the provided server ID. |
| | | */ |
| | | public ChangeNumber getMaxChangeNumber(int serverId2) |
| | | public ChangeNumber getChangeNumber(int serverId) |
| | | { |
| | | return serverIdToChangeNumber.get(serverId2); |
| | | return serverIdToChangeNumber.get(serverId); |
| | | } |
| | | |
| | | /** |
| | | * Get the largest ChangeNumber. |
| | | * @return the largest ChangeNumber |
| | | * Returns the largest (most recent) {@code ChangeNumber} in this server |
| | | * state. |
| | | * |
| | | * @return The largest (most recent) {@code ChangeNumber} in this server |
| | | * state. |
| | | */ |
| | | public ChangeNumber getMaxChangeNumber() |
| | | { |
| | |
| | | * changes. |
| | | */ |
| | | ChangeNumber replServerMaxChangeNumber = |
| | | replicationServerState.getMaxChangeNumber(serverId); |
| | | replicationServerState.getChangeNumber(serverId); |
| | | |
| | | // we don't want to update from here (a DS) an empty RS because |
| | | // normally the RS should have been updated by other RSes except for |
| | |
| | | // maxCn stored in the serverState |
| | | synchronized (this) |
| | | { |
| | | serverStateMaxCn = state.getMaxChangeNumber(serverId); |
| | | serverStateMaxCn = state.getChangeNumber(serverId); |
| | | |
| | | if (serverStateMaxCn == null) |
| | | return; |
| | |
| | | */ |
| | | public ChangeNumber getMaxChangeNumber(int serverID) |
| | | { |
| | | return state.getMaxChangeNumber(serverID); |
| | | return state.getChangeNumber(serverID); |
| | | } |
| | | } |
| | |
| | | // reading |
| | | domain.getEligibleState(crossDomainEligibleCN); |
| | | |
| | | ChangeNumber fcn = startState.getMaxChangeNumber(cn |
| | | ChangeNumber fcn = startState.getChangeNumber(cn |
| | | .getServerId()); |
| | | |
| | | int currentKey = cursor.currentKey(); |
| | |
| | | } |
| | | |
| | | if ((cnVector == null) |
| | | || ((cnVector.getMaxChangeNumber(cn.getServerId()) != null) |
| | | || ((cnVector.getChangeNumber(cn.getServerId()) != null) |
| | | && !cnVector.cover(startState))) |
| | | { |
| | | cursor.delete(); |
| | |
| | | for (int serverId : rsDomain.getStartState()) |
| | | { |
| | | ChangeNumber dbOldestChange = |
| | | rsDomain.getStartState().getMaxChangeNumber(serverId); |
| | | ChangeNumber providedChange = cookie.getMaxChangeNumber(serverId); |
| | | rsDomain.getStartState().getChangeNumber(serverId); |
| | | ChangeNumber providedChange = cookie.getChangeNumber(serverId); |
| | | if (providedChange != null |
| | | && providedChange.older(dbOldestChange)) |
| | | { |
| | |
| | | for (int serverId : replicationServerDomain.getServers()) |
| | | { |
| | | ChangeNumber lastCsn = serverState |
| | | .getMaxChangeNumber(serverId); |
| | | .getChangeNumber(serverId); |
| | | ReplicationIterator iterator = replicationServerDomain |
| | | .getChangelogIterator(serverId, lastCsn); |
| | | if (iterator != null) |
| | |
| | | for (int serverId : replicationServerDomain.getServers()) |
| | | { |
| | | // get the last already sent CN from that server |
| | | ChangeNumber lastCsn = serverState.getMaxChangeNumber(serverId); |
| | | ChangeNumber lastCsn = serverState.getChangeNumber(serverId); |
| | | // get an iterator in this server db from that last change |
| | | ReplicationIterator iterator = |
| | | replicationServerDomain.getChangelogIterator(serverId, lastCsn); |
| | |
| | | if (lsiState != null) { |
| | | for (Integer lsjSid : this.maxCNs.keySet()) { |
| | | ChangeNumber lsjMaxCN = this.maxCNs.get(lsjSid); |
| | | ChangeNumber lsiLastCN = lsiState.getMaxChangeNumber(lsjSid); |
| | | ChangeNumber lsiLastCN = lsiState.getChangeNumber(lsjSid); |
| | | |
| | | int missingChangesLsiLsj = |
| | | ChangeNumber.diffSeqNum(lsjMaxCN, lsiLastCN); |
| | |
| | | { |
| | | for (Integer lsjSid : this.maxCNs.keySet()) { |
| | | ChangeNumber lsjMaxCN = this.maxCNs.get(lsjSid); |
| | | ChangeNumber lsiLastCN = lsiState.getMaxChangeNumber(lsjSid); |
| | | ChangeNumber lsiLastCN = lsiState.getChangeNumber(lsjSid); |
| | | |
| | | int missingChangesLsiLsj = |
| | | ChangeNumber.diffSeqNum(lsjMaxCN, lsiLastCN); |
| | |
| | | public void setMaxCNs(ServerState state) |
| | | { |
| | | for (Integer sid : state) { |
| | | ChangeNumber newCN = state.getMaxChangeNumber(sid); |
| | | ChangeNumber newCN = state.getChangeNumber(sid); |
| | | setMaxCN(sid, newCN); |
| | | } |
| | | } |
| | |
| | | .duplicate(); |
| | | |
| | | // the max CN sent by that LS also comes from the SH |
| | | ChangeNumber maxcn = dsState.getMaxChangeNumber(serverID); |
| | | ChangeNumber maxcn = dsState.getChangeNumber(serverID); |
| | | if (maxcn == null) |
| | | { |
| | | // This directly connected LS has never produced any change |
| | |
| | | pendingMonitorData.setRSState(replicationServer.getServerId(), |
| | | dbServerState); |
| | | for (int sid : dbServerState) { |
| | | ChangeNumber storedCN = dbServerState.getMaxChangeNumber(sid); |
| | | ChangeNumber storedCN = dbServerState.getChangeNumber(sid); |
| | | pendingMonitorData.setMaxCN(sid, storedCN); |
| | | } |
| | | } |
| | |
| | | { |
| | | for (int sid : dbState) { |
| | | DbHandler h = sourceDbHandlers.get(sid); |
| | | ChangeNumber mostRecentDbCN = dbState.getMaxChangeNumber(sid); |
| | | ChangeNumber mostRecentDbCN = dbState.getChangeNumber(sid); |
| | | try { |
| | | // Is the most recent change in the Db newer than eligible CN ? |
| | | // if yes (like cn15 in the example above, then we have to go back |
| | |
| | | |
| | | // Should it be considered for eligibility ? |
| | | ChangeNumber heartbeatLastDN = |
| | | getChangeTimeHeartbeatState().getMaxChangeNumber(sid); |
| | | getChangeTimeHeartbeatState().getChangeNumber(sid); |
| | | |
| | | // If the most recent UpdateMsg or CLHeartbeatMsg received is very old |
| | | // then the domain is considered down and not considered for eligibility |
| | |
| | | for (int sid : dbState) { |
| | | // process one sid |
| | | ChangeNumber startCN = null; |
| | | if (startState.getMaxChangeNumber(sid) != null) |
| | | startCN = startState.getMaxChangeNumber(sid); |
| | | if (startState.getChangeNumber(sid) != null) |
| | | startCN = startState.getChangeNumber(sid); |
| | | long sidRes = getCount(sid, startCN, endCN); |
| | | |
| | | // The startPoint is excluded when counting the ECL eligible changes |
| | |
| | | |
| | | // Extract the change number of the latest change generated by the local |
| | | // server |
| | | ChangeNumber myChangeNumber = localState.getMaxChangeNumber(localServerId); |
| | | ChangeNumber myChangeNumber = localState.getChangeNumber(localServerId); |
| | | if (myChangeNumber == null) |
| | | { |
| | | myChangeNumber = new ChangeNumber(0, 0, localServerId); |
| | |
| | | { |
| | | ReplicationServerInfo replicationServerInfo = bestServers.get(rsId); |
| | | ServerState rsState = replicationServerInfo.getServerState(); |
| | | ChangeNumber rsChangeNumber = rsState.getMaxChangeNumber(localServerId); |
| | | ChangeNumber rsChangeNumber = rsState.getChangeNumber(localServerId); |
| | | if (rsChangeNumber == null) |
| | | { |
| | | rsChangeNumber = new ChangeNumber(0, 0, localServerId); |
| | |
| | | */ |
| | | public ChangeNumber getLastLocalChange() |
| | | { |
| | | return state.getMaxChangeNumber(serverID); |
| | | return state.getChangeNumber(serverID); |
| | | } |
| | | } |
| | |
| | | ReplicationServerDomain rsd = |
| | | replicationServer.getReplicationServerDomain(TEST_ROOT_DN_STRING, false); |
| | | ServerState startState = rsd.getStartState(); |
| | | assertTrue(startState.getMaxChangeNumber(s1test.getServerId()).getSeqnum()==1); |
| | | assertTrue(startState.getMaxChangeNumber(s2test.getServerId()) != null); |
| | | assertTrue(startState.getMaxChangeNumber(s2test.getServerId()).getSeqnum()==7); |
| | | assertTrue(startState.getChangeNumber(s1test.getServerId()).getSeqnum()==1); |
| | | assertTrue(startState.getChangeNumber(s2test.getServerId()) != null); |
| | | assertTrue(startState.getChangeNumber(s2test.getServerId()).getSeqnum()==7); |
| | | |
| | | rsd = |
| | | replicationServer.getReplicationServerDomain(TEST_ROOT_DN_STRING2, false); |
| | | startState = rsd.getStartState(); |
| | | assertTrue(startState.getMaxChangeNumber(s2test2.getServerId()).getSeqnum()==2); |
| | | assertTrue(startState.getMaxChangeNumber(s1test2.getServerId()).getSeqnum()==6); |
| | | assertTrue(startState.getChangeNumber(s2test2.getServerId()).getSeqnum()==2); |
| | | assertTrue(startState.getChangeNumber(s1test2.getServerId()).getSeqnum()==6); |
| | | |
| | | // |
| | | // Test lastExternalChangelogCookie attribute of the ECL |
| | |
| | | // TODO Check the value |
| | | |
| | | // Check getMaxChangeNumber |
| | | assertEquals(cn2.compareTo(serverState.getMaxChangeNumber(cn2.getServerId())),0); |
| | | assertEquals(cn3.compareTo(serverState.getMaxChangeNumber(cn3.getServerId())),0); |
| | | assertEquals(cn2.compareTo(serverState.getChangeNumber(cn2.getServerId())),0); |
| | | assertEquals(cn3.compareTo(serverState.getChangeNumber(cn3.getServerId())),0); |
| | | |
| | | // Check the toString |
| | | String stringRep = serverState.toString(); |
| | |
| | | assertEquals(msg.getServerURL(), newMsg.getServerURL()); |
| | | assertEquals(msg.getBaseDn(), newMsg.getBaseDn()); |
| | | assertEquals(msg.getWindowSize(), newMsg.getWindowSize()); |
| | | assertEquals(msg.getServerState().getMaxChangeNumber(1), |
| | | newMsg.getServerState().getMaxChangeNumber(1)); |
| | | assertEquals(msg.getServerState().getChangeNumber(1), |
| | | newMsg.getServerState().getChangeNumber(1)); |
| | | assertEquals(msg.getSSLEncryption(), newMsg.getSSLEncryption()); |
| | | |
| | | // Check default value for only post V1 fields |
| | |
| | | assertEquals(msg.getServerURL(), vlastMsg.getServerURL()); |
| | | assertEquals(msg.getBaseDn(), vlastMsg.getBaseDn()); |
| | | assertEquals(msg.getWindowSize(), vlastMsg.getWindowSize()); |
| | | assertEquals(msg.getServerState().getMaxChangeNumber(1), |
| | | vlastMsg.getServerState().getMaxChangeNumber(1)); |
| | | assertEquals(msg.getServerState().getChangeNumber(1), |
| | | vlastMsg.getServerState().getChangeNumber(1)); |
| | | assertEquals(msg.getSSLEncryption(), vlastMsg.getSSLEncryption()); |
| | | assertEquals(msg.getGroupId(), vlastMsg.getGroupId()); |
| | | assertEquals(msg.getDegradedStatusThreshold(), vlastMsg.getDegradedStatusThreshold()); |
| | |
| | | assertEquals(msg.getWindowSize(), newMsg.getWindowSize()); |
| | | assertEquals(msg.getHeartbeatInterval(), newMsg.getHeartbeatInterval()); |
| | | assertEquals(msg.getSSLEncryption(), newMsg.getSSLEncryption()); |
| | | assertEquals(msg.getServerState().getMaxChangeNumber(1), |
| | | newMsg.getServerState().getMaxChangeNumber(1)); |
| | | assertEquals(msg.getServerState().getChangeNumber(1), |
| | | newMsg.getServerState().getChangeNumber(1)); |
| | | assertEquals(newMsg.getVersion(), getCurrentVersion()); |
| | | assertEquals(msg.getGenerationId(), newMsg.getGenerationId()); |
| | | assertTrue(msg.getGroupId() == newMsg.getGroupId()); |
| | |
| | | assertEquals(msg.getServerURL(), newMsg.getServerURL()); |
| | | assertEquals(msg.getBaseDn(), newMsg.getBaseDn()); |
| | | assertEquals(msg.getWindowSize(), newMsg.getWindowSize()); |
| | | assertEquals(msg.getServerState().getMaxChangeNumber(1), |
| | | newMsg.getServerState().getMaxChangeNumber(1)); |
| | | assertEquals(msg.getServerState().getChangeNumber(1), |
| | | newMsg.getServerState().getChangeNumber(1)); |
| | | assertEquals(newMsg.getVersion(), getCurrentVersion()); |
| | | assertEquals(msg.getGenerationId(), newMsg.getGenerationId()); |
| | | assertEquals(msg.getSSLEncryption(), newMsg.getSSLEncryption()); |
| | |
| | | assertEquals(msg.getServerURL(), newMsg.getServerURL()); |
| | | assertEquals(msg.getBaseDn(), newMsg.getBaseDn()); |
| | | assertEquals(msg.getWindowSize(), newMsg.getWindowSize()); |
| | | assertEquals(msg.getServerState().getMaxChangeNumber(1), |
| | | newMsg.getServerState().getMaxChangeNumber(1)); |
| | | assertEquals(msg.getServerState().getChangeNumber(1), |
| | | newMsg.getServerState().getChangeNumber(1)); |
| | | assertEquals(newMsg.getVersion(), getCurrentVersion()); |
| | | assertEquals(msg.getGenerationId(), newMsg.getGenerationId()); |
| | | assertEquals(msg.getSSLEncryption(), newMsg.getSSLEncryption()); |
| | |
| | | assertEquals(msg.getWindowSize(), newMsg.getWindowSize()); |
| | | assertEquals(msg.getHeartbeatInterval(), newMsg.getHeartbeatInterval()); |
| | | assertEquals(msg.getSSLEncryption(), newMsg.getSSLEncryption()); |
| | | assertEquals(msg.getServerState().getMaxChangeNumber(1), |
| | | newMsg.getServerState().getMaxChangeNumber(1)); |
| | | assertEquals(msg.getServerState().getChangeNumber(1), |
| | | newMsg.getServerState().getChangeNumber(1)); |
| | | assertEquals(newMsg.getVersion(), getCurrentVersion()); |
| | | assertEquals(msg.getGenerationId(), newMsg.getGenerationId()); |
| | | assertTrue(msg.getGroupId() == newMsg.getGroupId()); |