This is an automated email from the ASF dual-hosted git repository.
bstoyanov pushed a commit to branch 4.22
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.22 by this push:
new 7786cf93c28 Veeam: Use restore timeout as an interval as opposed to a
counter (#11772)
7786cf93c28 is described below
commit 7786cf93c28fec5e5baf5d069f4f4d08e1750ab8
Author: Pearl Dsilva <[email protected]>
AuthorDate: Wed Jan 28 09:13:56 2026 -0500
Veeam: Use restore timeout as an interval as opposed to a counter (#11772)
* Veeam: Use restore timeout as a time interval as opposed to a counter
* fix log
* fix unit test
* remove unused imports
* fix comment
* unused import
* change to while - issure refactoring
---
.../main/java/org/apache/cloudstack/backup/veeam/VeeamClient.java | 7 +++++--
.../java/org/apache/cloudstack/backup/veeam/VeeamClientTest.java | 5 ++---
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git
a/plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/veeam/VeeamClient.java
b/plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/veeam/VeeamClient.java
index fe3633dab16..8a111f92868 100644
---
a/plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/veeam/VeeamClient.java
+++
b/plugins/backup/veeam/src/main/java/org/apache/cloudstack/backup/veeam/VeeamClient.java
@@ -364,7 +364,9 @@ public class VeeamClient {
* that is used to wait for the restore to complete before throwing a
{@link CloudRuntimeException}.
*/
protected void checkIfRestoreSessionFinished(String type, String path)
throws IOException {
- for (int j = 0; j < restoreTimeout; j++) {
+ long startTime = System.currentTimeMillis();
+ long timeoutMs = restoreTimeout * 1000L;
+ while (System.currentTimeMillis() - startTime < timeoutMs) {
HttpResponse relatedResponse = get(path);
RestoreSession session =
parseRestoreSessionResponse(relatedResponse);
if (session.getResult().equals("Success")) {
@@ -378,7 +380,8 @@ public class VeeamClient {
getRestoreVmErrorDescription(StringUtils.substringAfterLast(sessionUid, ":"))));
throw new CloudRuntimeException(String.format("Restore job
[%s] failed.", sessionUid));
}
- logger.debug(String.format("Waiting %s seconds, out of a total of
%s seconds, for the restore backup process to finish.", j, restoreTimeout));
+ logger.debug("Waiting {} seconds, out of a total of {} seconds,
for the restore backup process to finish.",
+ (System.currentTimeMillis() - startTime) / 1000,
restoreTimeout);
try {
Thread.sleep(1000);
diff --git
a/plugins/backup/veeam/src/test/java/org/apache/cloudstack/backup/veeam/VeeamClientTest.java
b/plugins/backup/veeam/src/test/java/org/apache/cloudstack/backup/veeam/VeeamClientTest.java
index 0c70c75939e..333c3e16053 100644
---
a/plugins/backup/veeam/src/test/java/org/apache/cloudstack/backup/veeam/VeeamClientTest.java
+++
b/plugins/backup/veeam/src/test/java/org/apache/cloudstack/backup/veeam/VeeamClientTest.java
@@ -25,7 +25,6 @@ import static
com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor;
import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
import static com.github.tomakehurst.wiremock.client.WireMock.verify;
import static org.junit.Assert.fail;
-import static org.mockito.Mockito.times;
import java.io.ByteArrayInputStream;
import java.io.IOException;
@@ -157,7 +156,7 @@ public class VeeamClientTest {
@Test
public void checkIfRestoreSessionFinishedTestTimeoutException() throws
IOException {
try {
- ReflectionTestUtils.setField(mockClient, "restoreTimeout", 10);
+ ReflectionTestUtils.setField(mockClient, "restoreTimeout", 2);
RestoreSession restoreSession = Mockito.mock(RestoreSession.class);
HttpResponse httpResponse = Mockito.mock(HttpResponse.class);
Mockito.when(mockClient.get(Mockito.anyString())).thenReturn(httpResponse);
@@ -169,7 +168,7 @@ public class VeeamClientTest {
} catch (Exception e) {
Assert.assertEquals("Related job type: RestoreTest was not
successful", e.getMessage());
}
- Mockito.verify(mockClient, times(10)).get(Mockito.anyString());
+ Mockito.verify(mockClient,
Mockito.atLeastOnce()).get(Mockito.anyString());
}
@Test