vrozov commented on code in PR #50594:
URL: https://github.com/apache/spark/pull/50594#discussion_r2057294906


##########
core/src/main/scala/org/apache/spark/util/UninterruptibleThread.scala:
##########
@@ -69,10 +75,22 @@ private[spark] class UninterruptibleThread(
     }
 
     uninterruptibleLock.synchronized {
+      uninterruptible = true
+    }
+
+    while (uninterruptibleLock.synchronized {
       // Clear the interrupted status if it's set.
       shouldInterruptThread = Thread.interrupted() || shouldInterruptThread
-      uninterruptible = true
+      // wait for super.interrupt() to be called
+      !shouldInterruptThread && awaitInterruptThread }) {
+      try {
+        Thread.sleep(100)

Review Comment:
   We can't move forward until `super.interrupt()` is called. 
   
   I don't see any difference between awaiting on `CountDownLatch` and 
`Thread.sleep()`. Both would block till `super.interrupt()` is called and in 
your solution `await()` would exit on `InterruptedException`, not because 
`countDown()` was called and may be blocked for 100 milliseconds or longer in 
the similar way.
   
   It is also quite unlikely that sleep would block for 100 milliseconds unless 
the thread that calls `super.interrupt()` is starved.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org
For additional commands, e-mail: reviews-h...@spark.apache.org

Reply via email to