From 7313588e280915ed5ce879761e16ad398488f54c Mon Sep 17 00:00:00 2001
From: Valery Kharseko <vharseko@3a-systems.ru>
Date: Tue, 22 Sep 2026 09:22:17 +0000
Subject: [PATCH] [#1025] Stop a restore which cannot lock its backend instead of completing it (#1027)
---
opendj-server-legacy/src/main/java/org/opends/server/tasks/RestoreTask.java | 52 ++++++++++++++++++++++++++++------------------------
1 files changed, 28 insertions(+), 24 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tasks/RestoreTask.java b/opendj-server-legacy/src/main/java/org/opends/server/tasks/RestoreTask.java
index 8568d35..e678e1d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tasks/RestoreTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tasks/RestoreTask.java
@@ -289,35 +289,39 @@
}
}
- // Acquire an exclusive lock for the backend.
- if (verifyOnly || lockBackend(backend))
+ // Acquire an exclusive lock for the backend. Without it nothing is restored, and the
+ // task must say so rather than complete as if it had.
+ if (!verifyOnly && !lockBackend(backend))
{
- // From here we must make sure to release the backend exclusive lock.
+ errorsEncountered = true;
+ return TaskState.STOPPED_BY_ERROR;
+ }
+
+ // From here we must make sure to release the backend exclusive lock.
+ try
+ {
+ // Perform the restore.
try
{
- // Perform the restore.
- try
- {
- backend.restoreBackup(restoreConfig);
- }
- catch (DirectoryException de)
- {
- logger.error(ERR_RESTOREDB_ERROR_DURING_BACKUP, backupID, backupDir.getPath(), de.getMessageObject());
- errorsEncountered = true;
- }
- catch (Exception e)
- {
- logger.error(ERR_RESTOREDB_ERROR_DURING_BACKUP, backupID, backupDir.getPath(), getExceptionMessage(e));
- errorsEncountered = true;
- }
+ backend.restoreBackup(restoreConfig);
}
- finally
+ catch (DirectoryException de)
{
- // Release the exclusive lock on the backend.
- if (!verifyOnly && !unlockBackend(backend))
- {
- errorsEncountered = true;
- }
+ logger.error(ERR_RESTOREDB_ERROR_DURING_BACKUP, backupID, backupDir.getPath(), de.getMessageObject());
+ errorsEncountered = true;
+ }
+ catch (Exception e)
+ {
+ logger.error(ERR_RESTOREDB_ERROR_DURING_BACKUP, backupID, backupDir.getPath(), getExceptionMessage(e));
+ errorsEncountered = true;
+ }
+ }
+ finally
+ {
+ // Release the exclusive lock on the backend.
+ if (!verifyOnly && !unlockBackend(backend))
+ {
+ errorsEncountered = true;
}
}
}
--
Gitblit v1.10.0