| | |
| | | { |
| | | // Replication server is missing some of our changes: let's |
| | | // send them to him. |
| | | logError(DEBUG_GOING_TO_SEARCH_FOR_CHANGES.get()); |
| | | logger.trace(DEBUG_GOING_TO_SEARCH_FOR_CHANGES.get()); |
| | | |
| | | /* |
| | | * Get all the changes that have not been seen by this |
| | |
| | | { |
| | | if (buildAndPublishMissingChanges(startCSN, broker, shutdown)) |
| | | { |
| | | logError(DEBUG_CHANGES_SENT.get()); |
| | | logger.trace(DEBUG_CHANGES_SENT.get()); |
| | | synchronized(replayOperations) |
| | | { |
| | | replayOperations.clear(); |
| | |
| | | * Log an error for the repair tool |
| | | * that will need to re-synchronize the servers. |
| | | */ |
| | | logError(ERR_CANNOT_RECOVER_CHANGES.get(getBaseDNString())); |
| | | logger.error(ERR_CANNOT_RECOVER_CHANGES.get(getBaseDNString())); |
| | | } |
| | | } catch (Exception e) |
| | | { |
| | |
| | | * Log an error for the repair tool |
| | | * that will need to re-synchronize the servers. |
| | | */ |
| | | logError(ERR_CANNOT_RECOVER_CHANGES.get(getBaseDNString())); |
| | | logger.error(ERR_CANNOT_RECOVER_CHANGES.get(getBaseDNString())); |
| | | } |
| | | finally |
| | | { |
| | |
| | | } |
| | | catch (DirectoryException e) |
| | | { |
| | | logError(ERR_LOADING_GENERATION_ID.get( |
| | | logger.error(ERR_LOADING_GENERATION_ID.get( |
| | | getBaseDNString(), stackTraceToSingleLineString(e))); |
| | | } |
| | | |
| | |
| | | // Should not happen as normally already called without problem in |
| | | // isConfigurationChangeAcceptable or isConfigurationAcceptable |
| | | // if we come up to this method |
| | | logError(NOTE_ERR_FRACTIONAL.get(getBaseDNString(), |
| | | logger.error(NOTE_ERR_FRACTIONAL.get(getBaseDNString(), |
| | | stackTraceToSingleLineString(e))); |
| | | return; |
| | | } |
| | |
| | | catch (ConfigException e) |
| | | { |
| | | // Should not happen |
| | | logError(NOTE_ERR_FRACTIONAL.get(getBaseDNString(), |
| | | logger.error(NOTE_ERR_FRACTIONAL.get(getBaseDNString(), |
| | | stackTraceToSingleLineString(e))); |
| | | return; |
| | | } |
| | |
| | | if (search.getResultCode() != ResultCode.SUCCESS |
| | | && search.getResultCode() != ResultCode.NO_SUCH_OBJECT) |
| | | { |
| | | logError(ERR_SEARCHING_GENERATION_ID.get( |
| | | logger.error(ERR_SEARCHING_GENERATION_ID.get( |
| | | search.getResultCode().getResultCodeName() + " " + |
| | | search.getErrorMessage(), |
| | | getBaseDNString())); |
| | |
| | | } |
| | | if (attr.size() > 1) |
| | | { |
| | | logError(ERR_LOADING_GENERATION_ID.get(getBaseDNString(), |
| | | logger.error(ERR_LOADING_GENERATION_ID.get(getBaseDNString(), |
| | | "#Values=" + attr.size() + " Must be exactly 1 in entry " |
| | | + resultEntry.toLDIFString())); |
| | | } |
| | |
| | | { |
| | | // Should not happen as configuration in domain root entry is flushed |
| | | // from valid configuration in local variables |
| | | logError(NOTE_ERR_FRACTIONAL.get( |
| | | logger.error(NOTE_ERR_FRACTIONAL.get( |
| | | fractionalConfig.getBaseDn().toString(), |
| | | stackTraceToSingleLineString(e))); |
| | | return false; |
| | |
| | | // Should not happen as configuration in domain root entry is flushed |
| | | // from valid configuration in local variables so both should have already |
| | | // been checked |
| | | logError(NOTE_ERR_FRACTIONAL.get( |
| | | logger.error(NOTE_ERR_FRACTIONAL.get( |
| | | fractionalConfig.getBaseDn().toString(), |
| | | stackTraceToSingleLineString(e))); |
| | | return false; |
| | |
| | | } |
| | | catch(DirectoryException e) |
| | | { |
| | | logError(NOTE_ERR_FRACTIONAL.get(getBaseDNString(), |
| | | logger.error(NOTE_ERR_FRACTIONAL.get(getBaseDNString(), |
| | | stackTraceToSingleLineString(e))); |
| | | return FRACTIONAL_HAS_NO_FRACTIONAL_FILTERED_ATTRIBUTES; |
| | | } |
| | |
| | | } |
| | | catch (NoSuchElementException e) |
| | | { |
| | | logError(ERR_OPERATION_NOT_FOUND_IN_PENDING.get( |
| | | logger.error(ERR_OPERATION_NOT_FOUND_IN_PENDING.get( |
| | | op.toString(), curCSN.toString())); |
| | | return; |
| | | } |
| | |
| | | * It should never happen. |
| | | */ |
| | | pendingChanges.remove(curCSN); |
| | | logError(ERR_UNKNOWN_TYPE.get(op.getOperationType().toString())); |
| | | logger.error(ERR_UNKNOWN_TYPE.get(op.getOperationType().toString())); |
| | | return; |
| | | } |
| | | |
| | |
| | | } |
| | | catch (NoSuchElementException e) |
| | | { |
| | | logError(ERR_OPERATION_NOT_FOUND_IN_PENDING.get( |
| | | logger.error(ERR_OPERATION_NOT_FOUND_IN_PENDING.get( |
| | | op.toString(), curCSN.toString())); |
| | | return; |
| | | } |
| | |
| | | } catch (TimeoutException ex) |
| | | { |
| | | // This exception may only be raised if assured replication is enabled |
| | | logError(NOTE_DS_ACK_TIMEOUT.get(getBaseDNString(), |
| | | logger.error(NOTE_DS_ACK_TIMEOUT.get(getBaseDNString(), |
| | | Long.toString(getAssuredTimeout()), msg.toString())); |
| | | } |
| | | } |
| | |
| | | ResultCode res = newOp.getResultCode(); |
| | | if (res != ResultCode.SUCCESS) |
| | | { |
| | | logError(ERR_COULD_NOT_SOLVE_CONFLICT.get( |
| | | logger.error(ERR_COULD_NOT_SOLVE_CONFLICT.get( |
| | | entryDN.toString(), res.toString())); |
| | | } |
| | | } |
| | |
| | | // Let the repair tool know about this. |
| | | LocalizableMessage message = ERR_LOOP_REPLAYING_OPERATION.get(op.toString(), |
| | | op.getErrorMessage().toString()); |
| | | logError(message); |
| | | logger.error(message); |
| | | numUnresolvedNamingConflicts.incrementAndGet(); |
| | | replayErrorMsg = message.toString(); |
| | | updateError(csn); |
| | |
| | | * to be inconsistent. |
| | | * Let the repair tool know about this. |
| | | */ |
| | | LocalizableMessage message = ERR_EXCEPTION_REPLAYING_OPERATION.get( |
| | | stackTraceToSingleLineString(e), op.toString()); |
| | | logError(message); |
| | | LocalizableMessage message = |
| | | ERR_EXCEPTION_REPLAYING_OPERATION.get( |
| | | stackTraceToSingleLineString(e), op.toString()); |
| | | replayErrorMsg = message.toString(); |
| | | updateError(csn); |
| | | } else |
| | |
| | | |
| | | private String logDecodingOperationError(LDAPUpdateMsg msg, Exception e) |
| | | { |
| | | LocalizableMessage message = ERR_EXCEPTION_DECODING_OPERATION.get( |
| | | String.valueOf(msg) + " " + stackTraceToSingleLineString(e)); |
| | | logError(message); |
| | | LocalizableMessage message = |
| | | ERR_EXCEPTION_DECODING_OPERATION.get(String.valueOf(msg) + " " |
| | | + stackTraceToSingleLineString(e)); |
| | | logger.error(message); |
| | | return message.toString(); |
| | | } |
| | | |
| | |
| | | { |
| | | // The other type of errors can not be caused by naming conflicts. |
| | | // Log a message for the repair tool. |
| | | logError(ERR_ERROR_REPLAYING_OPERATION.get( |
| | | logger.error(ERR_ERROR_REPLAYING_OPERATION.get( |
| | | op.toString(), ctx.getCSN().toString(), |
| | | result.toString(), op.getErrorMessage().toString())); |
| | | return true; |
| | |
| | | { |
| | | // The other type of errors can not be caused by naming conflicts. |
| | | // Log a message for the repair tool. |
| | | logError(ERR_ERROR_REPLAYING_OPERATION.get( |
| | | logger.error(ERR_ERROR_REPLAYING_OPERATION.get( |
| | | op.toString(), ctx.getCSN().toString(), |
| | | result.toString(), op.getErrorMessage().toString())); |
| | | return true; |
| | |
| | | { |
| | | // The other type of errors can not be caused by naming conflicts. |
| | | // Log a message for the repair tool. |
| | | logError(ERR_ERROR_REPLAYING_OPERATION.get( |
| | | logger.error(ERR_ERROR_REPLAYING_OPERATION.get( |
| | | op.toString(), ctx.getCSN().toString(), |
| | | result.toString(), op.getErrorMessage().toString())); |
| | | return true; |
| | |
| | | { |
| | | // The other type of errors can not be caused by naming conflicts. |
| | | // log a message for the repair tool. |
| | | logError(ERR_ERROR_REPLAYING_OPERATION.get( |
| | | logger.error(ERR_ERROR_REPLAYING_OPERATION.get( |
| | | op.toString(), ctx.getCSN().toString(), |
| | | result.toString(), op.getErrorMessage().toString())); |
| | | return true; |
| | |
| | | mb.append(String.valueOf(conflictOp)); |
| | | mb.append(" "); |
| | | mb.append(String.valueOf(op.getResultCode())); |
| | | logError(mb.toMessage()); |
| | | logger.error(mb.toMessage()); |
| | | } |
| | | } catch (DirectoryException e) |
| | | { |
| | |
| | | mb.append(String.valueOf(conflictOp)); |
| | | mb.append(" "); |
| | | mb.append(stackTraceToSingleLineString(e)); |
| | | logError(mb.toMessage()); |
| | | logger.error(mb.toMessage()); |
| | | } |
| | | |
| | | return conflict; |
| | |
| | | mb.append(String.valueOf(conflictOp)); |
| | | mb.append(" "); |
| | | mb.append(String.valueOf(newOp.getResultCode())); |
| | | logError(mb.toMessage()); |
| | | logger.error(mb.toMessage()); |
| | | } |
| | | } |
| | | |
| | |
| | | mb.append(String.valueOf(op)); |
| | | mb.append(" "); |
| | | mb.append(String.valueOf(newOp.getResultCode())); |
| | | logError(mb.toMessage()); |
| | | logger.error(mb.toMessage()); |
| | | } |
| | | |
| | | // Generate an alert to let the administration know that some |
| | |
| | | * not available, log an error and retry upon timeout |
| | | * should we stop the modifications ? |
| | | */ |
| | | logError(ERR_LOADING_GENERATION_ID.get( |
| | | logger.error(ERR_LOADING_GENERATION_ID.get( |
| | | getBaseDNString(), stackTraceToSingleLineString(e))); |
| | | return; |
| | | } |
| | |
| | | |
| | | if (result != ResultCode.SUCCESS) |
| | | { |
| | | logError(ERR_UPDATING_GENERATION_ID.get( |
| | | logger.error(ERR_UPDATING_GENERATION_ID.get( |
| | | result.getResultCodeName(), getBaseDNString())); |
| | | } |
| | | } |
| | |
| | | { |
| | | if (search.getResultCode() != ResultCode.NO_SUCH_OBJECT) |
| | | { |
| | | logError(ERR_SEARCHING_GENERATION_ID.get( |
| | | logger.error(ERR_SEARCHING_GENERATION_ID.get( |
| | | search.getResultCode().getResultCodeName() + " " + |
| | | search.getErrorMessage(), |
| | | getBaseDNString())); |
| | |
| | | Attribute attr = attrs.get(0); |
| | | if (attr.size()>1) |
| | | { |
| | | logError(ERR_LOADING_GENERATION_ID.get( |
| | | logger.error(ERR_LOADING_GENERATION_ID.get( |
| | | getBaseDNString(), "#Values=" + attr.size() + |
| | | " Must be exactly 1 in entry " + resultEntry.toLDIFString())); |
| | | } |
| | |
| | | } |
| | | catch(Exception e) |
| | | { |
| | | logError(ERR_LOADING_GENERATION_ID.get( |
| | | logger.error(ERR_LOADING_GENERATION_ID.get( |
| | | getBaseDNString(), stackTraceToSingleLineString(e))); |
| | | } |
| | | } |
| | |
| | | StringBuilder failureReason = new StringBuilder(); |
| | | if (! LockFileManager.acquireSharedLock(lockFile, failureReason)) |
| | | { |
| | | LocalizableMessage message = ERR_LDIFEXPORT_CANNOT_LOCK_BACKEND.get( |
| | | backend.getBackendID(), String.valueOf(failureReason)); |
| | | logError(message); |
| | | LocalizableMessage message = |
| | | ERR_LDIFEXPORT_CANNOT_LOCK_BACKEND.get(backend.getBackendID(), |
| | | String.valueOf(failureReason)); |
| | | logger.error(message); |
| | | throw new DirectoryException(ResultCode.OTHER, message); |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | LocalizableMessage message = ERR_LDIFEXPORT_CANNOT_LOCK_BACKEND.get( |
| | | backend.getBackendID(), stackTraceToSingleLineString(e)); |
| | | logError(message); |
| | | LocalizableMessage message = |
| | | ERR_LDIFEXPORT_CANNOT_LOCK_BACKEND.get(backend.getBackendID(), |
| | | stackTraceToSingleLineString(e)); |
| | | logger.error(message); |
| | | throw new DirectoryException(ResultCode.OTHER, message); |
| | | } |
| | | |
| | |
| | | if (ros == null || |
| | | ros.getNumExportedEntries() < entryCount) |
| | | { |
| | | LocalizableMessage message = |
| | | ERR_LDIFEXPORT_ERROR_DURING_EXPORT.get(de.getMessageObject()); |
| | | logError(message); |
| | | LocalizableMessage message = ERR_LDIFEXPORT_ERROR_DURING_EXPORT.get(de.getMessageObject()); |
| | | logger.error(message); |
| | | throw new DirectoryException(ResultCode.OTHER, message); |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | LocalizableMessage message = ERR_LDIFEXPORT_ERROR_DURING_EXPORT.get( |
| | | stackTraceToSingleLineString(e)); |
| | | logError(message); |
| | | LocalizableMessage message = ERR_LDIFEXPORT_ERROR_DURING_EXPORT.get(stackTraceToSingleLineString(e)); |
| | | logger.error(message); |
| | | throw new DirectoryException(ResultCode.OTHER, message); |
| | | } |
| | | finally |
| | |
| | | StringBuilder failureReason = new StringBuilder(); |
| | | if (! LockFileManager.releaseLock(lockFile, failureReason)) |
| | | { |
| | | LocalizableMessage message = WARN_LDIFEXPORT_CANNOT_UNLOCK_BACKEND.get( |
| | | backend.getBackendID(), String.valueOf(failureReason)); |
| | | logError(message); |
| | | LocalizableMessage message = |
| | | WARN_LDIFEXPORT_CANNOT_UNLOCK_BACKEND.get(backend.getBackendID(), |
| | | String.valueOf(failureReason)); |
| | | logger.warn(message); |
| | | throw new DirectoryException(ResultCode.OTHER, message); |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | LocalizableMessage message = WARN_LDIFEXPORT_CANNOT_UNLOCK_BACKEND.get( |
| | | backend.getBackendID(), stackTraceToSingleLineString(e)); |
| | | logError(message); |
| | | LocalizableMessage message = |
| | | WARN_LDIFEXPORT_CANNOT_UNLOCK_BACKEND.get(backend.getBackendID(), |
| | | stackTraceToSingleLineString(e)); |
| | | logger.warn(message); |
| | | throw new DirectoryException(ResultCode.OTHER, message); |
| | | } |
| | | } |
| | |
| | | StringBuilder failureReason = new StringBuilder(); |
| | | if (! LockFileManager.acquireExclusiveLock(lockFile, failureReason)) |
| | | { |
| | | LocalizableMessage message = ERR_INIT_CANNOT_LOCK_BACKEND.get( |
| | | backend.getBackendID(), |
| | | String.valueOf(failureReason)); |
| | | logError(message); |
| | | LocalizableMessage message = ERR_INIT_CANNOT_LOCK_BACKEND.get(backend.getBackendID(), |
| | | String.valueOf(failureReason)); |
| | | logger.error(message); |
| | | throw new DirectoryException(ResultCode.OTHER, message); |
| | | } |
| | | } |
| | |
| | | // Release lock |
| | | if (!LockFileManager.releaseLock(lockFile, failureReason)) |
| | | { |
| | | LocalizableMessage message = WARN_LDIFIMPORT_CANNOT_UNLOCK_BACKEND.get( |
| | | backend.getBackendID(), String.valueOf(failureReason)); |
| | | logError(message); |
| | | LocalizableMessage message = |
| | | WARN_LDIFIMPORT_CANNOT_UNLOCK_BACKEND.get(backend.getBackendID(), |
| | | String.valueOf(failureReason)); |
| | | logger.warn(message); |
| | | throw new DirectoryException(ResultCode.OTHER, message); |
| | | } |
| | | |
| | |
| | | catch(Exception e) |
| | | { |
| | | logger.traceException(e); |
| | | logError(ERR_CHECK_CREATE_REPL_BACKEND_FAILED.get( |
| | | logger.error(ERR_CHECK_CREATE_REPL_BACKEND_FAILED.get( |
| | | stackTraceToSingleLineString(e))); |
| | | } |
| | | } |
| | |
| | | } |
| | | catch (DirectoryException de) |
| | | { |
| | | logError(NOTE_ERR_UNABLE_TO_ENABLE_ECL.get( |
| | | logger.error(NOTE_ERR_UNABLE_TO_ENABLE_ECL.get( |
| | | "Replication Domain on " + getBaseDNString(), |
| | | stackTraceToSingleLineString(de))); |
| | | // and go on |
| | |
| | | // Go into bad data set status |
| | | setNewStatus(StatusMachineEvent.TO_BAD_GEN_ID_STATUS_EVENT); |
| | | broker.signalStatusChange(status); |
| | | logError(NOTE_FRACTIONAL_BAD_DATA_SET_NEED_RESYNC.get(getBaseDNString())); |
| | | logger.error(NOTE_FRACTIONAL_BAD_DATA_SET_NEED_RESYNC.get(getBaseDNString())); |
| | | return; // Do not send changes to the replication server |
| | | } |
| | | |
| | |
| | | } |
| | | } catch (Exception e) |
| | | { |
| | | logError(ERR_PUBLISHING_FAKE_OPS.get(getBaseDNString(), |
| | | logger.error(ERR_PUBLISHING_FAKE_OPS.get(getBaseDNString(), |
| | | stackTraceToSingleLineString(e))); |
| | | } |
| | | } |
| | |
| | | if (!backend.supportsLDIFExport()) |
| | | { |
| | | LocalizableMessage msg = ERR_INIT_EXPORT_NOT_SUPPORTED.get(backend.getBackendID()); |
| | | logError(msg); |
| | | logger.error(msg); |
| | | throw new DirectoryException(ResultCode.OTHER, msg); |
| | | } |
| | | |
| | |
| | | mb.append(String.valueOf(newOp)); |
| | | mb.append(" "); |
| | | mb.append(String.valueOf(newOp.getResultCode())); |
| | | logError(mb.toMessage()); |
| | | logger.error(mb.toMessage()); |
| | | } |
| | | else if (task != null) |
| | | { |