opends/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java
@@ -753,11 +753,10 @@ if (search.getResultCode() != ResultCode.SUCCESS && search.getResultCode() != ResultCode.NO_SUCH_OBJECT) { Message message = ERR_SEARCHING_GENERATION_ID.get( logError(ERR_SEARCHING_GENERATION_ID.get( search.getResultCode().getResultCodeName() + " " + search.getErrorMessage(), getBaseDNString()); logError(message); getBaseDNString())); return false; } @@ -807,10 +806,9 @@ } if (attr.size() > 1) { Message message = ERR_LOADING_GENERATION_ID.get(getBaseDNString(), logError(ERR_LOADING_GENERATION_ID.get(getBaseDNString(), "#Values=" + attr.size() + " Must be exactly 1 in entry " + resultEntry.toLDIFString()); logError(message); + resultEntry.toLDIFString())); } } } @@ -2109,9 +2107,8 @@ } catch (NoSuchElementException e) { Message message = ERR_OPERATION_NOT_FOUND_IN_PENDING.get( op.toString(), curCSN.toString()); logError(message); logError(ERR_OPERATION_NOT_FOUND_IN_PENDING.get( op.toString(), curCSN.toString())); return; } } @@ -2128,9 +2125,7 @@ * It should never happen. */ pendingChanges.remove(curCSN); Message message = ERR_UNKNOWN_TYPE.get(op.getOperationType().toString()); logError(message); logError(ERR_UNKNOWN_TYPE.get(op.getOperationType().toString())); return; } @@ -2154,11 +2149,10 @@ { // will be caught at publish time. } catch (NoSuchElementException e) catch (NoSuchElementException e) { Message message = ERR_OPERATION_NOT_FOUND_IN_PENDING.get( op.toString(), curCSN.toString()); logError(message); logError(ERR_OPERATION_NOT_FOUND_IN_PENDING.get( op.toString(), curCSN.toString())); return; } // If assured replication is enabled, this will wait for the matching @@ -2169,11 +2163,9 @@ waitForAckIfAssuredEnabled(msg); } catch (TimeoutException ex) { // This exception may only be raised if assured replication is // enabled Message errorMsg = NOTE_DS_ACK_TIMEOUT.get(getBaseDNString(), Long.toString(getAssuredTimeout()), msg.toString()); logError(errorMsg); // This exception may only be raised if assured replication is enabled logError(NOTE_DS_ACK_TIMEOUT.get(getBaseDNString(), Long.toString(getAssuredTimeout()), msg.toString())); } } @@ -2274,9 +2266,8 @@ ResultCode res = newOp.getResultCode(); if (res != ResultCode.SUCCESS) { Message message = ERR_COULD_NOT_SOLVE_CONFLICT.get(entryDN.toString(), res.toString()); logError(message); logError(ERR_COULD_NOT_SOLVE_CONFLICT.get( entryDN.toString(), res.toString())); } } } @@ -2804,10 +2795,9 @@ { // The other type of errors can not be caused by naming conflicts. // Log a message for the repair tool. Message message = ERR_ERROR_REPLAYING_OPERATION.get( logError(ERR_ERROR_REPLAYING_OPERATION.get( op.toString(), ctx.getCSN().toString(), result.toString(), op.getErrorMessage().toString()); logError(message); result.toString(), op.getErrorMessage().toString())); return true; } } @@ -2874,10 +2864,9 @@ { // The other type of errors can not be caused by naming conflicts. // Log a message for the repair tool. Message message = ERR_ERROR_REPLAYING_OPERATION.get( logError(ERR_ERROR_REPLAYING_OPERATION.get( op.toString(), ctx.getCSN().toString(), result.toString(), op.getErrorMessage().toString()); logError(message); result.toString(), op.getErrorMessage().toString())); return true; } } @@ -2995,10 +2984,9 @@ { // The other type of errors can not be caused by naming conflicts. // Log a message for the repair tool. Message message = ERR_ERROR_REPLAYING_OPERATION.get( logError(ERR_ERROR_REPLAYING_OPERATION.get( op.toString(), ctx.getCSN().toString(), result.toString(), op.getErrorMessage().toString()); logError(message); result.toString(), op.getErrorMessage().toString())); return true; } } @@ -3094,10 +3082,9 @@ { // The other type of errors can not be caused by naming conflicts. // log a message for the repair tool. Message message = ERR_ERROR_REPLAYING_OPERATION.get( logError(ERR_ERROR_REPLAYING_OPERATION.get( op.toString(), ctx.getCSN().toString(), result.toString(), op.getErrorMessage().toString()); logError(message); result.toString(), op.getErrorMessage().toString())); return true; } } @@ -3544,12 +3531,11 @@ if (search.getResultCode() != ResultCode.SUCCESS) { if (search.getResultCode() != ResultCode.NO_SUCH_OBJECT) { // This is an error. Message message = ERR_SEARCHING_GENERATION_ID.get( { logError(ERR_SEARCHING_GENERATION_ID.get( search.getResultCode().getResultCodeName() + " " + search.getErrorMessage(), getBaseDNString()); logError(message); getBaseDNString())); } } else @@ -3567,14 +3553,13 @@ Attribute attr = attrs.get(0); if (attr.size()>1) { Message message = ERR_LOADING_GENERATION_ID.get( logError(ERR_LOADING_GENERATION_ID.get( getBaseDNString(), "#Values=" + attr.size() + " Must be exactly 1 in entry " + resultEntry.toLDIFString()); logError(message); " Must be exactly 1 in entry " + resultEntry.toLDIFString())); } else if (attr.size() == 1) { found=true; found = true; try { aGenerationId = Long.decode(attr.iterator().next().toString()); @@ -4260,18 +4245,13 @@ /** {@inheritDoc} */ @Override public void sessionInitiated( ServerStatus initStatus, ServerState replicationServerState, long generationID, Session session) public void sessionInitiated(ServerStatus initStatus, ServerState rsState) { // Check domain fractional configuration consistency with local // configuration variables forceBadDataSet = !isBackendFractionalConfigConsistent(); super.sessionInitiated( initStatus, replicationServerState,generationID, session); super.sessionInitiated(initStatus, rsState); // Now that we are connected , we can enable ECL if : // 1/ RS must in the same JVM and created an ECL_WORKFLOW_ELEMENT @@ -4314,7 +4294,7 @@ * Check that the ReplicationServer has seen all our previous * changes. */ CSN replServerMaxCSN = replicationServerState.getCSN(getServerId()); CSN replServerMaxCSN = rsState.getCSN(getServerId()); // 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 opends/src/server/org/opends/server/replication/service/ReplicationBroker.java
@@ -162,7 +162,7 @@ /** * String reported under CSN=monitor when there is no connected RS. */ public final static String NO_CONNECTED_SERVER = "Not connected"; public static final String NO_CONNECTED_SERVER = "Not connected"; private final ServerState state; private Semaphore sendWindow; private int maxSendWindow; @@ -1020,8 +1020,7 @@ if (domain != null) { domain.sessionInitiated(initStatus, rsInfo.getServerState(), rsInfo.getGenerationId(), rs.session); domain.sessionInitiated(initStatus, rsInfo.getServerState()); } final byte groupId = getGroupId(); @@ -1500,13 +1499,11 @@ @Override public String toString() { return new StringBuilder() .append("Current best replication server Ids: ").append( this.bestRSs.keySet()).append( ", Evaluation of connected replication servers").append( " (ServerId => Evaluation): ").append(this.rsEvals.keySet()) .append(", Any replication server not appearing here").append( " could not be contacted.").toString(); return "Current best replication server Ids: " + bestRSs.keySet() + ", Evaluation of connected replication servers" + " (ServerId => Evaluation): " + rsEvals.keySet() + ", Any replication server not appearing here" + " could not be contacted."; } } @@ -2166,16 +2163,8 @@ arrived on the new RS. But we should disconnect if we reach the perfect balance (both values are 0). */ MathContext roundMc = new MathContext(6, RoundingMode.DOWN); BigDecimal potentialCurrentRsNewLoadDistanceBdRounded = potentialCurrentRsNewLoadDistanceBd.round(roundMc); BigDecimal potentialNewSumOfLoadDistancesOfOtherRSsBdRounded = potentialNewSumOfLoadDistancesOfOtherRSsBd.round(roundMc); if ((potentialCurrentRsNewLoadDistanceBdRounded.compareTo( BigDecimal.ZERO) != 0) && (potentialCurrentRsNewLoadDistanceBdRounded.equals( potentialNewSumOfLoadDistancesOfOtherRSsBdRounded.negate()))) if (mustAvoidYoyoEffect(potentialCurrentRsNewLoadDistanceBd, potentialNewSumOfLoadDistancesOfOtherRSsBd)) { // Avoid the yoyo effect, and keep the local DS connected to its // current RS @@ -2219,6 +2208,18 @@ } } private static boolean mustAvoidYoyoEffect(BigDecimal rsNewLoadDistance, BigDecimal otherRSsNewSumOfLoadDistances) { final MathContext roundCtx = new MathContext(6, RoundingMode.DOWN); final BigDecimal rsLoadDistance = rsNewLoadDistance.round(roundCtx); final BigDecimal otherRSsSumOfLoadDistances = otherRSsNewSumOfLoadDistances.round(roundCtx); return rsLoadDistance.compareTo(BigDecimal.ZERO) != 0 && rsLoadDistance.compareTo(otherRSsSumOfLoadDistances.negate()) == 0; } /** * Returns whether the local DS is overloading the RS. * <p> opends/src/server/org/opends/server/replication/service/ReplicationDomain.java
@@ -379,31 +379,23 @@ * that don't need to perform additional computing. * * @param initStatus The status to enter the state machine with. * @param replicationServerState The ServerState of the ReplicationServer * @param rsState The ServerState of the ReplicationServer * with which the session was established. * @param generationID The current generationID of the * ReplicationServer with which the session * was established. * @param session The Session that is currently used. */ public void sessionInitiated( ServerStatus initStatus, ServerState replicationServerState, long generationID, Session session) public void sessionInitiated(ServerStatus initStatus, ServerState rsState) { // Sanity check: is it a valid initial status? if (!isValidInitialStatus(initStatus)) { Message msg = ERR_DS_INVALID_INIT_STATUS.get(initStatus.toString(), getBaseDNString(), Integer.toString(serverID)); logError(msg); } else logError(ERR_DS_INVALID_INIT_STATUS.get(initStatus.toString(), getBaseDNString(), Integer.toString(serverID))); } else { status = initStatus; } generator.adjust(state); generator.adjust(replicationServerState); generator.adjust(rsState); } /** @@ -424,9 +416,8 @@ StatusMachineEvent event = StatusMachineEvent.statusToEvent(reqStatus); if (event == StatusMachineEvent.INVALID_EVENT) { Message msg = ERR_DS_INVALID_REQUESTED_STATUS.get(reqStatus.toString(), getBaseDNString(), Integer.toString(serverID)); logError(msg); logError(ERR_DS_INVALID_REQUESTED_STATUS.get(reqStatus.toString(), getBaseDNString(), Integer.toString(serverID))); return; } @@ -958,10 +949,9 @@ Some problems detected: message did not correctly reach every requested servers. Log problem */ Message errorMsg = NOTE_DS_RECEIVED_ACK_ERROR.get( logError(NOTE_DS_RECEIVED_ACK_ERROR.get( getBaseDNString(), Integer.toString(serverID), update.toString(), ack.errorsToString()); logError(errorMsg); update.toString(), ack.errorsToString())); List<Integer> failedServers = ack.getFailedServers(); @@ -1428,9 +1418,8 @@ if (serverToInitialize == RoutableMsg.ALL_SERVERS) { Message msg = NOTE_FULL_UPDATE_ENGAGED_FOR_REMOTE_START_ALL.get( countEntries(), getBaseDNString(), serverID); logError(msg); logError(NOTE_FULL_UPDATE_ENGAGED_FOR_REMOTE_START_ALL.get( countEntries(), getBaseDNString(), serverID)); for (DSInfo dsi : getReplicasList()) { @@ -1448,9 +1437,8 @@ } else { Message msg = NOTE_FULL_UPDATE_ENGAGED_FOR_REMOTE_START.get( countEntries(), getBaseDNString(), serverID, serverToInitialize); logError(msg); logError(NOTE_FULL_UPDATE_ENGAGED_FOR_REMOTE_START.get( countEntries(), getBaseDNString(), serverID, serverToInitialize)); ieContext.startList.add(serverToInitialize); @@ -2294,9 +2282,8 @@ try { // Log starting Message msg = NOTE_FULL_UPDATE_ENGAGED_FROM_REMOTE_START.get( getBaseDNString(), initTargetMsgReceived.getSenderID(), serverID); logError(msg); logError(NOTE_FULL_UPDATE_ENGAGED_FROM_REMOTE_START.get( getBaseDNString(), initTargetMsgReceived.getSenderID(), serverID)); // Go into full update status setNewStatus(StatusMachineEvent.TO_FULL_UPDATE_STATUS_EVENT); @@ -2468,14 +2455,11 @@ */ protected void setNewStatus(StatusMachineEvent event) { ServerStatus newStatus = StatusMachine.computeNewStatus(status, event); ServerStatus newStatus = StatusMachine.computeNewStatus(status, event); if (newStatus == ServerStatus.INVALID_STATUS) { Message msg = ERR_DS_CANNOT_CHANGE_STATUS.get(getBaseDNString(), Integer.toString(serverID), status.toString(), event.toString()); logError(msg); logError(ERR_DS_CANNOT_CHANGE_STATUS.get(getBaseDNString(), Integer.toString(serverID), status.toString(), event.toString())); return; } @@ -3251,10 +3235,8 @@ } else if (assuredMode != AssuredMode.SAFE_DATA_MODE) { Message errorMsg = ERR_DS_UNKNOWN_ASSURED_MODE.get(Integer.toString(serverID), msgAssuredMode.toString(), getBaseDNString(), msg.toString()); logError(errorMsg); logError(ERR_DS_UNKNOWN_ASSURED_MODE.get(Integer.toString(serverID), msgAssuredMode.toString(), getBaseDNString(), msg.toString())); } // Nothing to do in Assured safe data mode, only RS ack updates. } @@ -3455,17 +3437,15 @@ try { /* If assured replication is enabled, this will wait for the matching ack or time out. If assured replication is disabled, this returns immediately If assured replication is enabled, this will wait for the matching ack or time out. If assured replication is disabled, this returns immediately */ waitForAckIfAssuredEnabled(update); } catch (TimeoutException ex) { // This exception may only be raised if assured replication is enabled Message errorMsg = NOTE_DS_ACK_TIMEOUT.get(getBaseDNString(), Long.toString(assuredTimeout), update.toString()); logError(errorMsg); logError(NOTE_DS_ACK_TIMEOUT.get(getBaseDNString(), Long.toString(assuredTimeout), update.toString())); } }