This is an automated email from the ASF dual-hosted git repository.

dahn pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/main by this push:
     new f9588960d43 Refactor: Replace sleep() with wait() (#10504)
f9588960d43 is described below

commit f9588960d43051ff2f921ace07c17ce0d711e963
Author: roopsai <38998304+sroop...@users.noreply.github.com>
AuthorDate: Fri Jul 11 18:50:28 2025 +0530

    Refactor: Replace sleep() with wait() (#10504)
---
 .../cloud/agent/manager/DirectAgentAttache.java    |  3 +-
 .../src/main/java/com/cloud/utils/ThreadUtil.java  | 40 ++++++++++++++++++++++
 2 files changed, 42 insertions(+), 1 deletion(-)

diff --git 
a/engine/orchestration/src/main/java/com/cloud/agent/manager/DirectAgentAttache.java
 
b/engine/orchestration/src/main/java/com/cloud/agent/manager/DirectAgentAttache.java
index 81148c5db30..ed18d1e82b7 100644
--- 
a/engine/orchestration/src/main/java/com/cloud/agent/manager/DirectAgentAttache.java
+++ 
b/engine/orchestration/src/main/java/com/cloud/agent/manager/DirectAgentAttache.java
@@ -23,6 +23,7 @@ import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import com.cloud.utils.ThreadUtil;
 import org.apache.cloudstack.framework.config.ConfigKey;
 import org.apache.cloudstack.managed.context.ManagedContextRunnable;
 
@@ -166,7 +167,7 @@ public class DirectAgentAttache extends AgentAttache {
                     PingCommand cmd = resource.getCurrentStatus(_id);
                     int retried = 0;
                     while (cmd == null && ++retried <= 
_HostPingRetryCount.value()) {
-                        Thread.sleep(1000*_HostPingRetryTimer.value());
+                        ThreadUtil.wait(this, 1000L 
*_HostPingRetryTimer.value(), _id, _uuid, _name);
                         cmd = resource.getCurrentStatus(_id);
                     }
 
diff --git a/utils/src/main/java/com/cloud/utils/ThreadUtil.java 
b/utils/src/main/java/com/cloud/utils/ThreadUtil.java
new file mode 100644
index 00000000000..5421a1fce4d
--- /dev/null
+++ b/utils/src/main/java/com/cloud/utils/ThreadUtil.java
@@ -0,0 +1,40 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+
+package com.cloud.utils;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+public class ThreadUtil {
+
+    protected static Logger LOGGER = 
LogManager.getLogger(AutoCloseableUtil.class);
+
+    public static void wait(Object object, long timeoutInMillis, long id, 
String uuid, String name) {
+        synchronized (object) {
+            try {
+                object.wait(timeoutInMillis);
+            } catch (InterruptedException e) {
+                LOGGER.warn("PingTask interrupted while waiting to retry ping 
[id: {}, uuid: {}, name: {}]", id, uuid, name, e);
+                Thread.currentThread().interrupt(); // Restore interrupted 
status
+            }
+        }
+
+    }
+}

Reply via email to