ankurdave commented on a change in pull request #34245:
URL: https://github.com/apache/spark/pull/34245#discussion_r731962858
##########
File path: core/src/main/scala/org/apache/spark/TaskContextImpl.scala
##########
@@ -59,81 +59,141 @@ private[spark] class TaskContextImpl(
extends TaskContext
with Logging {
- /** List of callback functions to execute when the task completes. */
- @transient private val onCompleteCallbacks = new
ArrayBuffer[TaskCompletionListener]
+ /**
+ * List of callback functions to execute when the task completes.
+ *
+ * Using a stack causes us to process listeners in reverse order of
registration. As listeners are
+ * invoked, they are popped from the stack.
+ */
+ @transient private val onCompleteCallbacks = new
Stack[TaskCompletionListener]
/** List of callback functions to execute when the task fails. */
- @transient private val onFailureCallbacks = new
ArrayBuffer[TaskFailureListener]
+ @transient private val onFailureCallbacks = new Stack[TaskFailureListener]
+
+ /**
+ * The thread currently executing task completion or failure listeners, if
any.
+ *
+ * `invokeListeners()` uses this to ensure listeners are called sequentially.
+ */
+ @transient private var listenerInvocationThread: Option[Thread] = None
// If defined, the corresponding task has been killed and this option
contains the reason.
@volatile private var reasonIfKilled: Option[String] = None
// Whether the task has completed.
private var completed: Boolean = false
- // Whether the task has failed.
- private var failed: Boolean = false
-
- // Throwable that caused the task to fail
- private var failure: Throwable = _
+ // If defined, the task has failed and this option contains the Throwable
that caused the task to
+ // fail.
+ private var failureIfFailed: Option[Throwable] = None
Review comment:
Done.
--
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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]