Blob Blame History Raw
diff --git a/shell/src/interpreter.py b/shell/src/interpreter.py
index 011b9a23..625fce88 100644
--- a/shell/src/interpreter.py
+++ b/shell/src/interpreter.py
@@ -3218,11 +3218,13 @@ class DrainReplicas(object):
         self.threadpool = []
 
     def stopThreads(self):
-        self.interpreter.ok('Drain process Stopped, Waiting max 10 seconds for each running thread to end...')
+        self.interpreter.ok('Drain process Stopped, Waiting max 60 seconds + 5 seconds for each running thread')
         for t in self.threadpool:
             t.stop()
+        join_start = time.monotonic()
         for t in self.threadpool:
-            t.join(10)
+            wait = 60 - (time.monotonic() - join_start)
+            t.join(wait if wait > 5 else 5)
         self.printDrainErrors()
 
     def printDrainErrors(self):
@@ -3291,8 +3293,11 @@ class DrainReplicas(object):
 
             for t in self.threadpool:
                 t.stop()
+            self.interpreter.ok("Joining %i threads (wait max 3600s + 5s for each thread)\n" % len(self.threadpool))
+            join_start = time.monotonic()
             for t in self.threadpool:
-                t.join(10)
+                wait = 3600 - (time.monotonic() - join_start)
+                t.join(wait if wait > 5 else 5)
             if self.parameters['move']:
                 self.interpreter.ok("Move Process completed\n")
             else: