You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by do...@apache.org on 2022/04/03 17:36:05 UTC
[spark] branch branch-3.1 updated: [SPARK-38446][CORE] Fix deadlock between ExecutorClassLoader and FileDownloadCallback caused by Log4j
This is an automated email from the ASF dual-hosted git repository.
dongjoon pushed a commit to branch branch-3.1
in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/branch-3.1 by this push:
new 1a7b3a4 [SPARK-38446][CORE] Fix deadlock between ExecutorClassLoader and FileDownloadCallback caused by Log4j
1a7b3a4 is described below
commit 1a7b3a44e7a3d2151aa426cc668d1da265b87b51
Author: Kent Yao <ya...@apache.org>
AuthorDate: Sun Apr 3 10:30:38 2022 -0700
[SPARK-38446][CORE] Fix deadlock between ExecutorClassLoader and FileDownloadCallback caused by Log4j
### What changes were proposed in this pull request?
While `log4j.ignoreTCL/log4j2.ignoreTCL` is false, which is the default, it uses the context ClassLoader for the current Thread, see `org.apache.logging.log4j.util.LoaderUtil.loadClass`. While ExecutorClassLoader try to loadClass through remotely though the FileDownload, if error occurs, we will long on debug level, and `log4j...LoaderUtil` will be blocked by ExecutorClassLoader acquired classloading lock.
Fortunately, it only happens when ThresholdFilter's level is `debug`.
or we can set `log4j.ignoreTCL/log4j2.ignoreTCL` to true, but I don't know what else it will cause.
So in this PR, I simply remove the debug log which cause this deadlock
### Why are the changes needed?
fix deadlock
### Does this PR introduce _any_ user-facing change?
no
### How was this patch tested?
https://github.com/apache/incubator-kyuubi/pull/2046#discussion_r821414439, with a ut in kyuubi project, resolved(https://github.com/apache/incubator-kyuubi/actions/runs/1950222737)
### Additional Resources
[ut.jstack.txt](https://github.com/apache/spark/files/8206457/ut.jstack.txt)
Closes #35765 from yaooqinn/SPARK-38446.
Authored-by: Kent Yao <ya...@apache.org>
Signed-off-by: Dongjoon Hyun <do...@apache.org>
(cherry picked from commit aef674564ff12e78bd2f30846e3dcb69988249ae)
Signed-off-by: Dongjoon Hyun <do...@apache.org>
---
core/src/main/scala/org/apache/spark/rpc/netty/NettyRpcEnv.scala | 1 -
1 file changed, 1 deletion(-)
diff --git a/core/src/main/scala/org/apache/spark/rpc/netty/NettyRpcEnv.scala b/core/src/main/scala/org/apache/spark/rpc/netty/NettyRpcEnv.scala
index 5864e9e..464b6cb 100644
--- a/core/src/main/scala/org/apache/spark/rpc/netty/NettyRpcEnv.scala
+++ b/core/src/main/scala/org/apache/spark/rpc/netty/NettyRpcEnv.scala
@@ -451,7 +451,6 @@ private[netty] class NettyRpcEnv(
}
override def onFailure(streamId: String, cause: Throwable): Unit = {
- logDebug(s"Error downloading stream $streamId.", cause)
source.setError(cause)
sink.close()
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org