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