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

Reply via email to