YARN-8465. Fixed docker container status for node manager restart.
Contributed by Shane Kumpf
This commit is contained in:
parent
fef20a446f
commit
5cc2541a16
|
@ -1027,7 +1027,6 @@ public class DockerLinuxContainerRuntime implements LinuxContainerRuntime {
|
||||||
handleContainerKill(ctx, env, signal);
|
handleContainerKill(ctx, env, signal);
|
||||||
}
|
}
|
||||||
} catch (ContainerExecutionException e) {
|
} catch (ContainerExecutionException e) {
|
||||||
LOG.warn("Signal docker container failed. Exception: ", e);
|
|
||||||
throw new ContainerExecutionException("Signal docker container failed",
|
throw new ContainerExecutionException("Signal docker container failed",
|
||||||
e.getExitCode(), e.getOutput(), e.getErrorOutput());
|
e.getExitCode(), e.getOutput(), e.getErrorOutput());
|
||||||
}
|
}
|
||||||
|
@ -1201,7 +1200,8 @@ public class DockerLinuxContainerRuntime implements LinuxContainerRuntime {
|
||||||
if (!new File(procFs + File.separator + pid).exists()) {
|
if (!new File(procFs + File.separator + pid).exists()) {
|
||||||
String msg = "Liveliness check failed for PID: " + pid
|
String msg = "Liveliness check failed for PID: " + pid
|
||||||
+ ". Container may have already completed.";
|
+ ". Container may have already completed.";
|
||||||
throw new ContainerExecutionException(msg);
|
throw new ContainerExecutionException(msg,
|
||||||
|
PrivilegedOperation.ResultCode.INVALID_CONTAINER_PID.getValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,12 @@ public class ContainerExecutionException extends YarnException {
|
||||||
errorOutput = OUTPUT_UNSET;
|
errorOutput = OUTPUT_UNSET;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ContainerExecutionException(String message, int exitCode) {
|
||||||
|
super(message);
|
||||||
|
this.exitCode = exitCode;
|
||||||
|
this.output = OUTPUT_UNSET;
|
||||||
|
this.errorOutput = OUTPUT_UNSET;
|
||||||
|
}
|
||||||
|
|
||||||
public ContainerExecutionException(String message, int exitCode, String
|
public ContainerExecutionException(String message, int exitCode, String
|
||||||
output, String errorOutput) {
|
output, String errorOutput) {
|
||||||
|
|
|
@ -1492,7 +1492,7 @@ public class TestDockerContainerRuntime {
|
||||||
runtime.signalContainer(builder.build());
|
runtime.signalContainer(builder.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = ContainerExecutionException.class)
|
@Test
|
||||||
public void testContainerLivelinessNoFileException() throws Exception {
|
public void testContainerLivelinessNoFileException() throws Exception {
|
||||||
DockerLinuxContainerRuntime runtime = new DockerLinuxContainerRuntime(
|
DockerLinuxContainerRuntime runtime = new DockerLinuxContainerRuntime(
|
||||||
mockExecutor, mockCGroupsHandler);
|
mockExecutor, mockCGroupsHandler);
|
||||||
|
@ -1501,7 +1501,13 @@ public class TestDockerContainerRuntime {
|
||||||
.setExecutionAttribute(PID, signalPid)
|
.setExecutionAttribute(PID, signalPid)
|
||||||
.setExecutionAttribute(SIGNAL, ContainerExecutor.Signal.NULL);
|
.setExecutionAttribute(SIGNAL, ContainerExecutor.Signal.NULL);
|
||||||
runtime.initialize(enableMockContainerExecutor(conf), null);
|
runtime.initialize(enableMockContainerExecutor(conf), null);
|
||||||
runtime.signalContainer(builder.build());
|
try {
|
||||||
|
runtime.signalContainer(builder.build());
|
||||||
|
} catch (ContainerExecutionException e) {
|
||||||
|
Assert.assertEquals(
|
||||||
|
PrivilegedOperation.ResultCode.INVALID_CONTAINER_PID.getValue(),
|
||||||
|
e.getExitCode());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
Loading…
Reference in New Issue