From 7b8b1fa7ddd70d039cbb020cf94af796fb733681 Mon Sep 17 00:00:00 2001 From: Wang Shuo Date: Wed, 18 Dec 2019 10:18:12 +0800 Subject: [PATCH] Address review feedback --- .../main/java/org/apache/spark/SparkFirehoseListener.java | 8 ++++++-- .../org/apache/spark/scheduler/AsyncEventQueue.scala | 6 +++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/org/apache/spark/SparkFirehoseListener.java b/core/src/main/java/org/apache/spark/SparkFirehoseListener.java index 66ba455d1c36b..22635361a4e5d 100644 --- a/core/src/main/java/org/apache/spark/SparkFirehoseListener.java +++ b/core/src/main/java/org/apache/spark/SparkFirehoseListener.java @@ -30,13 +30,17 @@ */ public class SparkFirehoseListener implements SparkListenerInterface { + protected volatile boolean dead; + @Override public boolean dead() { - return false; + return dead; } @Override - public void dead_$eq(boolean dead) { } + public void dead_$eq(boolean dead) { + this.dead = dead; + } public void onEvent(SparkListenerEvent event) { } diff --git a/core/src/main/scala/org/apache/spark/scheduler/AsyncEventQueue.scala b/core/src/main/scala/org/apache/spark/scheduler/AsyncEventQueue.scala index 83570a40b7ab9..b8ad3bbcaad7e 100644 --- a/core/src/main/scala/org/apache/spark/scheduler/AsyncEventQueue.scala +++ b/core/src/main/scala/org/apache/spark/scheduler/AsyncEventQueue.scala @@ -210,9 +210,9 @@ private class AsyncEventQueue( override def removeListenerOnError(listener: SparkListenerInterface): Unit = { if (bus.isInStop) { - // If bus is in the progress of stop, we just mark the listener as dead instead of removing - // via calling `bus.removeListener` to avoid race condition - // dead listeners will be removed eventually in `bus.stop` + // If we're in the middle of stopping the bus, we just mark the listener as dead, + // instead of removing, to avoid a deadlock. + // Dead listeners will be removed eventually in `bus.stop`. listener.dead = true } else { // the listener failed in an unrecoverably way, we want to remove it from the entire