| | |
| | | * Portions Copyright 2014 ForgeRock AS |
| | | */ |
| | | package org.opends.server.tasks; |
| | | import org.opends.messages.Message; |
| | | import org.forgerock.i18n.LocalizableMessage; |
| | | import org.opends.messages.TaskMessages; |
| | | |
| | | import static org.opends.server.config.ConfigConstants.*; |
| | |
| | | /** |
| | | * Stores mapping between configuration attribute name and its label. |
| | | */ |
| | | static private Map<String,Message> argDisplayMap = |
| | | new HashMap<String,Message>(); |
| | | static private Map<String,LocalizableMessage> argDisplayMap = |
| | | new HashMap<String,LocalizableMessage>(); |
| | | static { |
| | | argDisplayMap.put( |
| | | ATTR_TASK_BACKUP_ALL, |
| | |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public Message getDisplayName() { |
| | | public LocalizableMessage getDisplayName() { |
| | | return INFO_TASK_BACKUP_NAME.get(); |
| | | } |
| | | |
| | |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public Message getAttributeDisplayName(String attrName) { |
| | | public LocalizableMessage getAttributeDisplayName(String attrName) { |
| | | return argDisplayMap.get(attrName); |
| | | } |
| | | |
| | |
| | | ClientConnection clientConnection = operation.getClientConnection(); |
| | | if (! clientConnection.hasPrivilege(Privilege.BACKEND_BACKUP, operation)) |
| | | { |
| | | Message message = ERR_TASK_BACKUP_INSUFFICIENT_PRIVILEGES.get(); |
| | | LocalizableMessage message = ERR_TASK_BACKUP_INSUFFICIENT_PRIVILEGES.get(); |
| | | throw new DirectoryException(ResultCode.INSUFFICIENT_ACCESS_RIGHTS, |
| | | message); |
| | | } |
| | |
| | | { |
| | | if (!backendIDList.isEmpty()) |
| | | { |
| | | Message message = ERR_BACKUPDB_CANNOT_MIX_BACKUP_ALL_AND_BACKEND_ID.get( |
| | | LocalizableMessage message = ERR_BACKUPDB_CANNOT_MIX_BACKUP_ALL_AND_BACKEND_ID.get( |
| | | ATTR_TASK_BACKUP_ALL, ATTR_TASK_BACKUP_BACKEND_ID); |
| | | logError(message); |
| | | return false; |
| | |
| | | } |
| | | else if (backendIDList.isEmpty()) |
| | | { |
| | | Message message = ERR_BACKUPDB_NEED_BACKUP_ALL_OR_BACKEND_ID.get( |
| | | LocalizableMessage message = ERR_BACKUPDB_NEED_BACKUP_ALL_OR_BACKEND_ID.get( |
| | | ATTR_TASK_BACKUP_ALL, ATTR_TASK_BACKUP_BACKEND_ID); |
| | | logError(message); |
| | | return false; |
| | |
| | | { |
| | | if (! incremental) |
| | | { |
| | | Message message = ERR_BACKUPDB_INCREMENTAL_BASE_REQUIRES_INCREMENTAL. |
| | | LocalizableMessage message = ERR_BACKUPDB_INCREMENTAL_BASE_REQUIRES_INCREMENTAL. |
| | | get(ATTR_TASK_BACKUP_INCREMENTAL_BASE_ID, |
| | | ATTR_TASK_BACKUP_INCREMENTAL); |
| | | logError(message); |
| | |
| | | // was given. |
| | | if (signHash && (! hash)) |
| | | { |
| | | Message message = ERR_BACKUPDB_SIGN_REQUIRES_HASH.get( |
| | | LocalizableMessage message = ERR_BACKUPDB_SIGN_REQUIRES_HASH.get( |
| | | ATTR_TASK_BACKUP_SIGN_HASH, ATTR_TASK_BACKUP_HASH); |
| | | logError(message); |
| | | return false; |
| | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | Message message = ERR_BACKUPDB_CANNOT_CREATE_BACKUP_DIR.get( |
| | | LocalizableMessage message = ERR_BACKUPDB_CANNOT_CREATE_BACKUP_DIR.get( |
| | | backupDirectory.getPath(), getExceptionMessage(e)); |
| | | System.err.println(message); |
| | | return false; |
| | |
| | | Backend b = DirectoryServer.getBackend(id); |
| | | if (b == null || configEntries.get(id) == null) |
| | | { |
| | | Message message = ERR_BACKUPDB_NO_BACKENDS_FOR_ID.get(id); |
| | | LocalizableMessage message = ERR_BACKUPDB_NO_BACKENDS_FOR_ID.get(id); |
| | | logError(message); |
| | | } |
| | | else if (! b.supportsBackup()) |
| | | { |
| | | Message message = |
| | | LocalizableMessage message = |
| | | WARN_BACKUPDB_BACKUP_NOT_SUPPORTED.get(b.getBackendID()); |
| | | logError(message); |
| | | } |
| | |
| | | // If there are no backends to archive, then print an error and exit. |
| | | if (backendsToArchive.isEmpty()) |
| | | { |
| | | Message message = WARN_BACKUPDB_NO_BACKENDS_TO_ARCHIVE.get(); |
| | | LocalizableMessage message = WARN_BACKUPDB_NO_BACKENDS_TO_ARCHIVE.get(); |
| | | logError(message); |
| | | return false; |
| | | } |
| | |
| | | // backend |
| | | if (! backupDir.getConfigEntryDN().equals(cfg.dn())) |
| | | { |
| | | Message message = ERR_BACKUPDB_CANNOT_BACKUP_IN_DIRECTORY.get( |
| | | LocalizableMessage message = ERR_BACKUPDB_CANNOT_BACKUP_IN_DIRECTORY.get( |
| | | b.getBackendID(),backupLocation.getPath(), |
| | | backupDir.getConfigEntryDN().rdn(). |
| | | getAttributeValue(0).toString()); |
| | |
| | | } |
| | | catch (ConfigException ce) |
| | | { |
| | | Message message = ERR_BACKUPDB_CANNOT_PARSE_BACKUP_DESCRIPTOR.get( |
| | | LocalizableMessage message = ERR_BACKUPDB_CANNOT_PARSE_BACKUP_DESCRIPTOR.get( |
| | | descriptorPath, ce.getMessage()); |
| | | logError(message); |
| | | return false; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | Message message = ERR_BACKUPDB_CANNOT_PARSE_BACKUP_DESCRIPTOR.get( |
| | | LocalizableMessage message = ERR_BACKUPDB_CANNOT_PARSE_BACKUP_DESCRIPTOR.get( |
| | | descriptorPath, getExceptionMessage(e)); |
| | | logError(message); |
| | | return false; |
| | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | Message message = ERR_BACKUPDB_CANNOT_CREATE_BACKUP_DIR.get( |
| | | LocalizableMessage message = ERR_BACKUPDB_CANNOT_CREATE_BACKUP_DIR.get( |
| | | backupLocation.getPath(), getExceptionMessage(e)); |
| | | logError(message); |
| | | return false; |
| | |
| | | catch (DirectoryException de) |
| | | { |
| | | DirectoryServer.notifyBackupEnded(b, backupConfig, false); |
| | | Message message = ERR_BACKUPDB_ERROR_DURING_BACKUP.get( |
| | | LocalizableMessage message = ERR_BACKUPDB_ERROR_DURING_BACKUP.get( |
| | | b.getBackendID(), de.getMessageObject()); |
| | | logError(message); |
| | | return false; |
| | |
| | | catch (Exception e) |
| | | { |
| | | DirectoryServer.notifyBackupEnded(b, backupConfig, false); |
| | | Message message = ERR_BACKUPDB_ERROR_DURING_BACKUP.get( |
| | | LocalizableMessage message = ERR_BACKUPDB_ERROR_DURING_BACKUP.get( |
| | | b.getBackendID(), getExceptionMessage(e)); |
| | | logError(message); |
| | | return false; |
| | |
| | | StringBuilder failureReason = new StringBuilder(); |
| | | if (! LockFileManager.acquireSharedLock(lockFile, failureReason)) |
| | | { |
| | | Message message = ERR_BACKUPDB_CANNOT_LOCK_BACKEND.get( |
| | | LocalizableMessage message = ERR_BACKUPDB_CANNOT_LOCK_BACKEND.get( |
| | | b.getBackendID(), String.valueOf(failureReason)); |
| | | logError(message); |
| | | return false; |
| | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | Message message = ERR_BACKUPDB_CANNOT_LOCK_BACKEND.get( |
| | | LocalizableMessage message = ERR_BACKUPDB_CANNOT_LOCK_BACKEND.get( |
| | | b.getBackendID(), getExceptionMessage(e)); |
| | | logError(message); |
| | | return false; |
| | |
| | | StringBuilder failureReason = new StringBuilder(); |
| | | if (! LockFileManager.releaseLock(lockFile, failureReason)) |
| | | { |
| | | Message message = WARN_BACKUPDB_CANNOT_UNLOCK_BACKEND.get( |
| | | LocalizableMessage message = WARN_BACKUPDB_CANNOT_UNLOCK_BACKEND.get( |
| | | b.getBackendID(), String.valueOf(failureReason)); |
| | | logError(message); |
| | | return false; |
| | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | Message message = WARN_BACKUPDB_CANNOT_UNLOCK_BACKEND.get( |
| | | LocalizableMessage message = WARN_BACKUPDB_CANNOT_UNLOCK_BACKEND.get( |
| | | b.getBackendID(), getExceptionMessage(e)); |
| | | logError(message); |
| | | return false; |
| | |
| | | * {@inheritDoc} |
| | | */ |
| | | @Override |
| | | public void interruptTask(TaskState interruptState, Message interruptReason) |
| | | public void interruptTask(TaskState interruptState, LocalizableMessage interruptReason) |
| | | { |
| | | if (TaskState.STOPPED_BY_ADMINISTRATOR.equals(interruptState) && |
| | | backupConfig != null) |
| | |
| | | |
| | | try |
| | | { |
| | | Message message = NOTE_BACKUPDB_STARTING_BACKUP.get(b.getBackendID()); |
| | | LocalizableMessage message = NOTE_BACKUPDB_STARTING_BACKUP.get(b.getBackendID()); |
| | | logError(message); |
| | | |
| | | |
| | |
| | | // completed at least for one of the backends. |
| | | if (errorsEncountered) |
| | | { |
| | | Message message = NOTE_BACKUPDB_COMPLETED_WITH_ERRORS.get(); |
| | | LocalizableMessage message = NOTE_BACKUPDB_COMPLETED_WITH_ERRORS.get(); |
| | | logError(message); |
| | | return TaskState.STOPPED_BY_ERROR; |
| | | } |
| | | else if (isCancelled()) |
| | | { |
| | | Message message = NOTE_BACKUPDB_CANCELLED.get(); |
| | | LocalizableMessage message = NOTE_BACKUPDB_CANCELLED.get(); |
| | | logError(message); |
| | | return getTaskInterruptState(); |
| | | } |
| | | else |
| | | { |
| | | Message message = NOTE_BACKUPDB_COMPLETED_SUCCESSFULLY.get(); |
| | | LocalizableMessage message = NOTE_BACKUPDB_COMPLETED_SUCCESSFULLY.get(); |
| | | logError(message); |
| | | return TaskState.COMPLETED_SUCCESSFULLY; |
| | | } |