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