GitHub user sameeragarwal opened a pull request:

    https://github.com/apache/spark/pull/12234

    [SPARK-14454] Better exception handling while marking tasks as failed

    ## What changes were proposed in this pull request?
    
    This patch adds support for better handling of exceptions inside catch 
blocks if the code within the block throws an exception. For instance here is 
the code in a catch block before this change in `WriterContainer.scala`: 
    
    ```scala
    logError("Aborting task.", cause)
    // call failure callbacks first, so we could have a chance to cleanup the 
writer.
    TaskContext.get().asInstanceOf[TaskContextImpl].markTaskFailed(cause)
    if (currentWriter != null) {
      currentWriter.close()
    }
    abortTask()
    throw new SparkException("Task failed while writing rows.", cause)
    ```
    
    If `markTaskFailed` or `currentWriter.close` throws an exception, we 
currently lose the original cause. This PR fixes this problem by implementing a 
utility function `Utils.tryWithSafeCatch` that suppresses 
(`Throwable.addSuppressed`) the exception that are thrown within the catch 
block and rethrowing the original exception.
    
    ## How was this patch tested?
    
    No new functionality added

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/sameeragarwal/spark fix-exception

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/spark/pull/12234.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #12234
    
----
commit eebd2ef7c566c3a0d2bd14766efbf5d12b831ae6
Author: Sameer Agarwal <[email protected]>
Date:   2016-04-07T06:29:34Z

    Better exception handling while marking tasks as failed

----


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to