diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/DockerLinuxContainerRuntime.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/DockerLinuxContainerRuntime.java index 20359eabe5b..5e0189e4ff9 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/DockerLinuxContainerRuntime.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/DockerLinuxContainerRuntime.java @@ -401,7 +401,6 @@ private void checkDockerVolumeCreated( throws ContainerExecutionException { DockerVolumeCommand dockerVolumeInspectCommand = new DockerVolumeCommand( DockerVolumeCommand.VOLUME_LS_SUB_COMMAND); - dockerVolumeInspectCommand.setFormat("{{.Name}},{{.Driver}}"); String output = runDockerVolumeCommand(dockerVolumeInspectCommand, container); @@ -414,13 +413,7 @@ private void checkDockerVolumeCreated( for (String line : output.split("\n")) { line = line.trim(); - String[] arr = line.split(","); - String v = arr[0].trim(); - String d = null; - if (arr.length > 1) { - d = arr[1].trim(); - } - if (d != null && volumeName.equals(v) && driverName.equals(d)) { + if (line.contains(volumeName) && line.contains(driverName)) { // Good we found it. LOG.info( "Docker volume-name=" + volumeName + " driver-name=" + driverName diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/TestDockerContainerRuntime.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/TestDockerContainerRuntime.java index 4d3242727e4..bb5a1a75f22 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/TestDockerContainerRuntime.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/TestDockerContainerRuntime.java @@ -1330,9 +1330,9 @@ private void checkVolumeCreateCommand() commandFile = new File(StringUtils.join(",", op.getArguments())); fileInputStream = new FileInputStream(commandFile); fileContent = new String(IOUtils.toByteArray(fileInputStream)); - Assert.assertEquals("[docker-command-execution]\n" - + " docker-command=volume\n" + " format={{.Name}},{{.Driver}}\n" - + " sub-command=ls\n", fileContent); + Assert.assertEquals( + "[docker-command-execution]\n" + " docker-command=volume\n" + + " sub-command=ls\n", fileContent); fileInputStream.close(); } @@ -1434,16 +1434,33 @@ public void testDockerCommandPluginCheckVolumeAfterCreation() // For following tests, we expect to have volume1,local in output // Failure cases + testDockerCommandPluginWithVolumesOutput( + "DRIVER VOLUME NAME\n", true); testDockerCommandPluginWithVolumesOutput("", true); testDockerCommandPluginWithVolumesOutput("volume1", true); + testDockerCommandPluginWithVolumesOutput( + "DRIVER VOLUME NAME\n" + + "nvidia-docker nvidia_driver_375.66\n", true); + testDockerCommandPluginWithVolumesOutput( + "DRIVER VOLUME NAME\n" + + " volume1\n", true); testDockerCommandPluginWithVolumesOutput("local", true); testDockerCommandPluginWithVolumesOutput("volume2,local", true); + testDockerCommandPluginWithVolumesOutput( + "DRIVER VOLUME NAME\n" + + "local volume2\n", true); testDockerCommandPluginWithVolumesOutput("volum1,something", true); + testDockerCommandPluginWithVolumesOutput( + "DRIVER VOLUME NAME\n" + + "something volume1\n", true); testDockerCommandPluginWithVolumesOutput("volum1,something\nvolum2,local", true); // Success case - testDockerCommandPluginWithVolumesOutput("volume1,local\n", false); + testDockerCommandPluginWithVolumesOutput( + "DRIVER VOLUME NAME\n" + + "nvidia-docker nvidia_driver_375.66\n" + + "local volume1\n", false); testDockerCommandPluginWithVolumesOutput( "volume_xyz,nvidia\nvolume1,local\n\n", false); testDockerCommandPluginWithVolumesOutput(" volume1, local \n", false);