This is an automated email from the ASF dual-hosted git repository.
dongjoon pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/master by this push:
new 296d3c50d2b [SPARK-45804][UI] Add
spark.ui.threadDump.flamegraphEnabled config to switch flame graph on/off
296d3c50d2b is described below
commit 296d3c50d2b6212040836b5fe0f86d9890564dc6
Author: Kent Yao <[email protected]>
AuthorDate: Mon Nov 6 20:06:01 2023 -0800
[SPARK-45804][UI] Add spark.ui.threadDump.flamegraphEnabled config to
switch flame graph on/off
### What changes were proposed in this pull request?
Add spark.ui.threadDump.flamegraphEnabled config to switch flame graph
on/off
### Why are the changes needed?
UI stability
### Does this PR introduce _any_ user-facing change?
yes, new spark.ui.threadDump.flamegraphEnabled config
### How was this patch tested?
locally tested
bin/spark-shell -c spark.ui.threadDump.flamegraphEnabled=true

bin/spark-shell -c spark.ui.threadDump.flamegraphEnabled=false

### Was this patch authored or co-authored using generative AI tooling?
no
Closes #43674 from yaooqinn/SPARK-45804.
Authored-by: Kent Yao <[email protected]>
Signed-off-by: Dongjoon Hyun <[email protected]>
---
core/src/main/scala/org/apache/spark/internal/config/UI.scala | 6 ++++++
.../org/apache/spark/ui/exec/ExecutorThreadDumpPage.scala | 10 +++++++++-
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/core/src/main/scala/org/apache/spark/internal/config/UI.scala
b/core/src/main/scala/org/apache/spark/internal/config/UI.scala
index 841d2b494c0..f983308667e 100644
--- a/core/src/main/scala/org/apache/spark/internal/config/UI.scala
+++ b/core/src/main/scala/org/apache/spark/internal/config/UI.scala
@@ -97,6 +97,12 @@ private[spark] object UI {
.booleanConf
.createWithDefault(true)
+ val UI_FLAMEGRAPH_ENABLED =
ConfigBuilder("spark.ui.threadDump.flamegraphEnabled")
+ .doc("Whether to render the Flamegraph for executor thread dumps")
+ .version("4.0.0")
+ .booleanConf
+ .createWithDefault(true)
+
val UI_HEAP_HISTOGRAM_ENABLED =
ConfigBuilder("spark.ui.heapHistogramEnabled")
.version("3.5.0")
.booleanConf
diff --git
a/core/src/main/scala/org/apache/spark/ui/exec/ExecutorThreadDumpPage.scala
b/core/src/main/scala/org/apache/spark/ui/exec/ExecutorThreadDumpPage.scala
index 4a00777c509..328abdb5c5f 100644
--- a/core/src/main/scala/org/apache/spark/ui/exec/ExecutorThreadDumpPage.scala
+++ b/core/src/main/scala/org/apache/spark/ui/exec/ExecutorThreadDumpPage.scala
@@ -22,6 +22,7 @@ import javax.servlet.http.HttpServletRequest
import scala.xml.{Node, Text}
import org.apache.spark.SparkContext
+import org.apache.spark.internal.config.UI.UI_FLAMEGRAPH_ENABLED
import org.apache.spark.status.api.v1.ThreadStackTrace
import org.apache.spark.ui.{SparkUITab, UIUtils, WebUIPage}
import org.apache.spark.ui.UIUtils.prependBaseUri
@@ -31,6 +32,8 @@ private[ui] class ExecutorThreadDumpPage(
parent: SparkUITab,
sc: Option[SparkContext]) extends WebUIPage("threadDump") {
+ private val flamegraphEnabled = sc.isDefined &&
sc.get.conf.get(UI_FLAMEGRAPH_ENABLED)
+
def render(request: HttpServletRequest): Seq[Node] = {
val executorId = Option(request.getParameter("executorId")).map {
executorId =>
UIUtils.decodeURLParameter(executorId)
@@ -70,7 +73,12 @@ private[ui] class ExecutorThreadDumpPage(
<div class="row">
<div class="col-12">
<p>Updated at {UIUtils.formatDate(time)}</p>
- {drawExecutorFlamegraph(request, threadDump)}
+ { if (flamegraphEnabled) {
+ drawExecutorFlamegraph(request, threadDump) }
+ else {
+ Seq.empty
+ }
+ }
{
// scalastyle:off
<p></p>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]