From c409e23abd128dad33557025f1e824ef47e6222f Mon Sep 17 00:00:00 2001 From: Subroto Sanyal Date: Mon, 6 Jun 2016 16:05:40 -0700 Subject: [SPARK-15652][LAUNCHER] Added a new State (LOST) for the listeners of SparkLauncher ## What changes were proposed in this pull request? This situation can happen when the LauncherConnection gets an exception while reading through the socket and terminating silently without notifying making the client/listener think that the job is still in previous state. The fix force sends a notification to client that the job finished with unknown status and let client handle it accordingly. ## How was this patch tested? Added a unit test. Author: Subroto Sanyal Closes #13497 from subrotosanyal/SPARK-15652-handle-spark-submit-jvm-crash. --- launcher/src/main/java/org/apache/spark/launcher/LauncherServer.java | 4 ++++ launcher/src/main/java/org/apache/spark/launcher/SparkAppHandle.java | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'launcher/src/main/java/org/apache') diff --git a/launcher/src/main/java/org/apache/spark/launcher/LauncherServer.java b/launcher/src/main/java/org/apache/spark/launcher/LauncherServer.java index e3413fd665..28e9420b28 100644 --- a/launcher/src/main/java/org/apache/spark/launcher/LauncherServer.java +++ b/launcher/src/main/java/org/apache/spark/launcher/LauncherServer.java @@ -337,6 +337,10 @@ class LauncherServer implements Closeable { } super.close(); if (handle != null) { + if (!handle.getState().isFinal()) { + LOG.log(Level.WARNING, "Lost connection to spark application."); + handle.setState(SparkAppHandle.State.LOST); + } handle.disconnect(); } } diff --git a/launcher/src/main/java/org/apache/spark/launcher/SparkAppHandle.java b/launcher/src/main/java/org/apache/spark/launcher/SparkAppHandle.java index 625d026321..0aa7bd197d 100644 --- a/launcher/src/main/java/org/apache/spark/launcher/SparkAppHandle.java +++ b/launcher/src/main/java/org/apache/spark/launcher/SparkAppHandle.java @@ -46,7 +46,9 @@ public interface SparkAppHandle { /** The application finished with a failed status. */ FAILED(true), /** The application was killed. */ - KILLED(true); + KILLED(true), + /** The Spark Submit JVM exited with a unknown status. */ + LOST(true); private final boolean isFinal; -- cgit v1.2.3