@@ -1222,6 +1222,7 @@ trait StandardAsyncExecutionActor
1222
1222
1223
1223
// See executeOrRecoverSuccess
1224
1224
private var missedAbort = false
1225
+ // Records whether abort has been requested for this job.
1225
1226
private var abortRequested = false
1226
1227
private case class CheckMissedAbort (jobId : StandardAsyncJob )
1227
1228
@@ -1249,7 +1250,9 @@ trait StandardAsyncExecutionActor
1249
1250
val executeOrRecoverFuture =
1250
1251
mode match {
1251
1252
case Reconnect (jobId : StandardAsyncJob @ unchecked) => reconnectAsync(jobId)
1252
- case ReconnectToAbort (jobId : StandardAsyncJob @ unchecked) => reconnectToAbortAsync(jobId)
1253
+ case ReconnectToAbort (jobId : StandardAsyncJob @ unchecked) =>
1254
+ abortRequested = true
1255
+ reconnectToAbortAsync(jobId)
1253
1256
case Recover (jobId : StandardAsyncJob @ unchecked) => recoverAsync(jobId)
1254
1257
case _ =>
1255
1258
tellMetadata(startMetadataKeyValues)
@@ -1454,8 +1457,8 @@ trait StandardAsyncExecutionActor
1454
1457
retryElseFail(executionHandle)
1455
1458
case Success (returnCodeAsInt) if continueOnReturnCode.continueFor(returnCodeAsInt) =>
1456
1459
handleExecutionSuccess(status, oldHandle, returnCodeAsInt)
1457
- // Check abort first, but only if abort was requested. There could be a SIGKILL rc (137) for either abort or
1458
- // an OOM kill .
1460
+ // A job can receive a SIGKILL (137) if it was aborted or OOM killed. Abort must have been requested for this
1461
+ // to actually be an abort .
1459
1462
case Success (returnCodeAsInt) if abortRequested && isAbort(returnCodeAsInt) =>
1460
1463
Future .successful(AbortedExecutionHandle )
1461
1464
case Success (returnCodeAsInt) if oomDetected(returnCodeAsInt) && memoryRetryRequested =>
0 commit comments