yabola commented on PR #37779:
URL: https://github.com/apache/spark/pull/37779#issuecomment-1254883203

   @mridulm 
   Yes, It is another situation, there are three cases to explain whether 
uncaughtException can catch exceptions.
   
   1. 
   As you said
   ```
   private def receiveLoop() {
         Executors.newSingleThreadExecutor(threadFactory).execute(new 
MessageLoop)
       }
   ```
   uncaughtException will be invoked.
   
   2. 
   If we surrounded with try catch , then uncaughtException won't be invoked.
   ```
   private def receiveLoop() {
       try {
         Executors.newSingleThreadExecutor(threadFactory).execute(new 
MessageLoop)
       } catch {
         case t: Throwable => {
           println("receiveLoop catch the Exception")
         }
       }
     }
   ```
   3.
   Even If we surrounded with try-catch , uncaughtException can be invoked if 
Exception happened in `TestExceptionHandler.MessageLoop#run()`
   But we need to remove the first Exception code in `MessageLoop`( otherwise 
it could not be initialized ).
   
   So it can also explain the behavior in Spark. 
   `org.apache.spark.rpc.netty.MessageLoop#receiveLoop` is surrounded with 
try-catch, so when error happened in Executor init , uncaughtException can't 
catch the fatal error.
   But if Executor initialize successfully, uncaughtException can catch error 
in `org.apache.spark.executor.Executor.TaskRunner#run`
   
   
   
       
   
   


-- 
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