LuciferYang commented on code in PR #46028: URL: https://github.com/apache/spark/pull/46028#discussion_r1566864828
########## core/src/main/scala/org/apache/spark/util/ThreadUtils.scala: ########## @@ -261,31 +261,50 @@ private[spark] object ThreadUtils { exception match { case Some(realException) => - // Remove the part of the stack that shows method calls into this helper method - // This means drop everything from the top until the stack element - // ThreadUtils.runInNewThread(), and then drop that as well (hence the `drop(1)`). - val baseStackTrace = Thread.currentThread().getStackTrace().dropWhile( - ! _.getClassName.contains(this.getClass.getSimpleName)).drop(1) - - // Remove the part of the new thread stack that shows methods call from this helper method - val extraStackTrace = realException.getStackTrace.takeWhile( - ! _.getClassName.contains(this.getClass.getSimpleName)) - - // Combine the two stack traces, with a place holder just specifying that there - // was a helper method used, without any further details of the helper - val placeHolderStackElem = new StackTraceElement( - s"... run in separate thread using ${ThreadUtils.getClass.getName.stripSuffix("$")} ..", - " ", "", -1) - val finalStackTrace = extraStackTrace ++ Seq(placeHolderStackElem) ++ baseStackTrace - - // Update the stack trace and rethrow the exception in the caller thread - realException.setStackTrace(finalStackTrace) - throw realException + throw wrapCallerStacktrace(realException, dropStacks = 2) case None => result } } + /** + * Adjust exception stack stace to wrap with caller side thread stack trace. + * The exception stack traces will be like the following Review Comment: ```suggestion * The exception stack traces will be like the following: ``` -- 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