| | |
| | | */ |
| | | package org.opends.server.tools; |
| | | import org.forgerock.i18n.LocalizableMessage; |
| | | import org.forgerock.i18n.slf4j.LocalizedLogger; |
| | | |
| | | |
| | | |
| | |
| | | import org.opends.server.util.args.LDAPConnectionArgumentParser; |
| | | import org.opends.server.util.cli.CLIException; |
| | | |
| | | import static org.opends.server.loggers.ErrorLogger.*; |
| | | import static org.opends.messages.ToolMessages.*; |
| | | import static org.opends.server.util.ServerConstants.*; |
| | | import static org.opends.server.util.StaticUtils.*; |
| | |
| | | * internally within the server process (e.g., via the tasks interface). |
| | | */ |
| | | public class RestoreDB extends TaskTool { |
| | | |
| | | private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass(); |
| | | |
| | | /** |
| | | * The main method for RestoreDB tool. |
| | | * |
| | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | LocalizableMessage message = ERR_RESTOREDB_CANNOT_READ_BACKUP_DIRECTORY.get( |
| | | backupDirectory.getValue(), getExceptionMessage(e)); |
| | | logError(message); |
| | | logger.error(ERR_RESTOREDB_CANNOT_READ_BACKUP_DIRECTORY, backupDirectory.getValue(), getExceptionMessage(e)); |
| | | return 1; |
| | | } |
| | | |
| | |
| | | BackupInfo backupInfo = backupDir.getLatestBackup(); |
| | | if (backupInfo == null) |
| | | { |
| | | LocalizableMessage message = ERR_RESTOREDB_NO_BACKUPS_IN_DIRECTORY.get( |
| | | backupDirectory.getValue()); |
| | | logError(message); |
| | | logger.error(ERR_RESTOREDB_NO_BACKUPS_IN_DIRECTORY, backupDirectory.getValue()); |
| | | return 1; |
| | | } |
| | | backupID = backupInfo.getBackupID(); |
| | |
| | | backupInfo = backupDir.getBackupInfo(backupID); |
| | | if (backupInfo == null) |
| | | { |
| | | LocalizableMessage message = ERR_RESTOREDB_INVALID_BACKUP_ID.get( |
| | | backupID, backupDirectory.getValue()); |
| | | logError(message); |
| | | logger.error(ERR_RESTOREDB_INVALID_BACKUP_ID, backupID, backupDirectory.getValue()); |
| | | return 1; |
| | | } |
| | | } |
| | | if (backupInfo.isEncrypted() || null != backupInfo.getSignedHash()) { |
| | | LocalizableMessage message = ERR_RESTOREDB_ENCRYPT_OR_SIGN_REQUIRES_ONLINE.get(); |
| | | logError(message); |
| | | logger.error(ERR_RESTOREDB_ENCRYPT_OR_SIGN_REQUIRES_ONLINE); |
| | | return 1; |
| | | } |
| | | } |
| | |
| | | |
| | | if (backend == null) |
| | | { |
| | | LocalizableMessage message = ERR_RESTOREDB_NO_BACKENDS_FOR_DN.get( |
| | | backupDirectory.getValue(), configEntryDN.toString()); |
| | | logError(message); |
| | | logger.error(ERR_RESTOREDB_NO_BACKENDS_FOR_DN, backupDirectory.getValue(), configEntryDN.toString()); |
| | | return 1; |
| | | } |
| | | else if (! backend.supportsRestore()) |
| | | { |
| | | LocalizableMessage message = |
| | | ERR_RESTOREDB_CANNOT_RESTORE.get(backend.getBackendID()); |
| | | logError(message); |
| | | logger.error(ERR_RESTOREDB_CANNOT_RESTORE, backend.getBackendID()); |
| | | return 1; |
| | | } |
| | | |
| | |
| | | StringBuilder failureReason = new StringBuilder(); |
| | | if (! LockFileManager.acquireExclusiveLock(lockFile, failureReason)) |
| | | { |
| | | LocalizableMessage message = ERR_RESTOREDB_CANNOT_LOCK_BACKEND.get( |
| | | backend.getBackendID(), String.valueOf(failureReason)); |
| | | logError(message); |
| | | logger.error(ERR_RESTOREDB_CANNOT_LOCK_BACKEND, backend.getBackendID(), String.valueOf(failureReason)); |
| | | return 1; |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | LocalizableMessage message = ERR_RESTOREDB_CANNOT_LOCK_BACKEND.get( |
| | | backend.getBackendID(), getExceptionMessage(e)); |
| | | logError(message); |
| | | logger.error(ERR_RESTOREDB_CANNOT_LOCK_BACKEND, backend.getBackendID(), getExceptionMessage(e)); |
| | | return 1; |
| | | } |
| | | |
| | |
| | | } |
| | | catch (DirectoryException de) |
| | | { |
| | | LocalizableMessage message = ERR_RESTOREDB_ERROR_DURING_BACKUP.get( |
| | | backupID, backupDir.getPath(), de.getMessageObject()); |
| | | logError(message); |
| | | logger.error(ERR_RESTOREDB_ERROR_DURING_BACKUP, backupID, backupDir.getPath(), de.getMessageObject()); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | LocalizableMessage message = ERR_RESTOREDB_ERROR_DURING_BACKUP.get( |
| | | backupID, backupDir.getPath(), getExceptionMessage(e)); |
| | | logError(message); |
| | | logger.error(ERR_RESTOREDB_ERROR_DURING_BACKUP, backupID, backupDir.getPath(), getExceptionMessage(e)); |
| | | } |
| | | |
| | | |
| | |
| | | StringBuilder failureReason = new StringBuilder(); |
| | | if (! LockFileManager.releaseLock(lockFile, failureReason)) |
| | | { |
| | | LocalizableMessage message = WARN_RESTOREDB_CANNOT_UNLOCK_BACKEND.get( |
| | | backend.getBackendID(), String.valueOf(failureReason)); |
| | | logError(message); |
| | | logger.warn(WARN_RESTOREDB_CANNOT_UNLOCK_BACKEND, backend.getBackendID(), String.valueOf(failureReason)); |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | LocalizableMessage message = WARN_RESTOREDB_CANNOT_UNLOCK_BACKEND.get( |
| | | backend.getBackendID(), getExceptionMessage(e)); |
| | | logError(message); |
| | | logger.warn(WARN_RESTOREDB_CANNOT_UNLOCK_BACKEND, backend.getBackendID(), getExceptionMessage(e)); |
| | | } |
| | | return 0; |
| | | } |