From 76f2a2ef93cd517239bc209e3fa46e5661e4321c Mon Sep 17 00:00:00 2001 From: Yimin Date: Thu, 17 Mar 2022 10:44:25 +0800 Subject: [PATCH 1/4] fixed npe --- .../apache/spark/status/api/v1/sql/SqlResource.scala | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/sql/core/src/main/scala/org/apache/spark/status/api/v1/sql/SqlResource.scala b/sql/core/src/main/scala/org/apache/spark/status/api/v1/sql/SqlResource.scala index c7599f864dd97..52ab3f9211301 100644 --- a/sql/core/src/main/scala/org/apache/spark/status/api/v1/sql/SqlResource.scala +++ b/sql/core/src/main/scala/org/apache/spark/status/api/v1/sql/SqlResource.scala @@ -21,6 +21,7 @@ import java.util.Date import javax.ws.rs._ import javax.ws.rs.core.MediaType +import scala.collection.immutable.HashMap import scala.util.{Failure, Success, Try} import org.apache.spark.JobExecutionStatus @@ -94,7 +95,15 @@ private[v1] class SqlResource extends BaseAppResource { val duration = exec.completionTime.getOrElse(new Date()).getTime - exec.submissionTime val planDetails = if (planDescription) exec.physicalPlanDescription else "" - val nodes = if (details) printableMetrics(graph.allNodes, exec.metricValues) else Seq.empty + val nodes = if (details) { + if (exec.metricValues != null) { + printableMetrics(graph.allNodes, exec.metricValues) + } else { + printableMetrics(graph.allNodes, new HashMap[Long, String]) + } + } else { + Seq.empty + } val edges = if (details) graph.edges else Seq.empty new ExecutionData( From eb2475d9628e0c283739f6f7294c33724dc72cb0 Mon Sep 17 00:00:00 2001 From: Yimin Date: Mon, 21 Mar 2022 09:41:43 +0800 Subject: [PATCH 2/4] update --- .../apache/spark/status/api/v1/sql/SqlResource.scala | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/sql/core/src/main/scala/org/apache/spark/status/api/v1/sql/SqlResource.scala b/sql/core/src/main/scala/org/apache/spark/status/api/v1/sql/SqlResource.scala index 52ab3f9211301..60e7b573721ee 100644 --- a/sql/core/src/main/scala/org/apache/spark/status/api/v1/sql/SqlResource.scala +++ b/sql/core/src/main/scala/org/apache/spark/status/api/v1/sql/SqlResource.scala @@ -21,7 +21,6 @@ import java.util.Date import javax.ws.rs._ import javax.ws.rs.core.MediaType -import scala.collection.immutable.HashMap import scala.util.{Failure, Success, Try} import org.apache.spark.JobExecutionStatus @@ -95,15 +94,8 @@ private[v1] class SqlResource extends BaseAppResource { val duration = exec.completionTime.getOrElse(new Date()).getTime - exec.submissionTime val planDetails = if (planDescription) exec.physicalPlanDescription else "" - val nodes = if (details) { - if (exec.metricValues != null) { - printableMetrics(graph.allNodes, exec.metricValues) - } else { - printableMetrics(graph.allNodes, new HashMap[Long, String]) - } - } else { - Seq.empty - } + val nodes = if (details) printableMetrics(graph.allNodes, + Option(exec.metricValues).getOrElse(Map())) else Seq.empty val edges = if (details) graph.edges else Seq.empty new ExecutionData( From 4a82e035bb1b9842b1f37342b558bc8492c9ce49 Mon Sep 17 00:00:00 2001 From: Yimin Date: Tue, 22 Mar 2022 15:47:46 +0800 Subject: [PATCH 3/4] update --- .../scala/org/apache/spark/status/api/v1/sql/SqlResource.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/core/src/main/scala/org/apache/spark/status/api/v1/sql/SqlResource.scala b/sql/core/src/main/scala/org/apache/spark/status/api/v1/sql/SqlResource.scala index 60e7b573721ee..988e29f6a6d92 100644 --- a/sql/core/src/main/scala/org/apache/spark/status/api/v1/sql/SqlResource.scala +++ b/sql/core/src/main/scala/org/apache/spark/status/api/v1/sql/SqlResource.scala @@ -95,7 +95,7 @@ private[v1] class SqlResource extends BaseAppResource { val duration = exec.completionTime.getOrElse(new Date()).getTime - exec.submissionTime val planDetails = if (planDescription) exec.physicalPlanDescription else "" val nodes = if (details) printableMetrics(graph.allNodes, - Option(exec.metricValues).getOrElse(Map())) else Seq.empty + Option(exec.metricValues).getOrElse(Map.empty)) else Seq.empty val edges = if (details) graph.edges else Seq.empty new ExecutionData( From 73cdf03125c4b6391b49c3847ce32979dbb8f00c Mon Sep 17 00:00:00 2001 From: Yimin Date: Tue, 22 Mar 2022 18:15:35 +0800 Subject: [PATCH 4/4] update --- .../org/apache/spark/status/api/v1/sql/SqlResource.scala | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sql/core/src/main/scala/org/apache/spark/status/api/v1/sql/SqlResource.scala b/sql/core/src/main/scala/org/apache/spark/status/api/v1/sql/SqlResource.scala index 988e29f6a6d92..4dd96e5ae252b 100644 --- a/sql/core/src/main/scala/org/apache/spark/status/api/v1/sql/SqlResource.scala +++ b/sql/core/src/main/scala/org/apache/spark/status/api/v1/sql/SqlResource.scala @@ -94,8 +94,11 @@ private[v1] class SqlResource extends BaseAppResource { val duration = exec.completionTime.getOrElse(new Date()).getTime - exec.submissionTime val planDetails = if (planDescription) exec.physicalPlanDescription else "" - val nodes = if (details) printableMetrics(graph.allNodes, - Option(exec.metricValues).getOrElse(Map.empty)) else Seq.empty + val nodes = if (details) { + printableMetrics(graph.allNodes, Option(exec.metricValues).getOrElse(Map.empty)) + } else { + Seq.empty + } val edges = if (details) graph.edges else Seq.empty new ExecutionData(