Jelajahi Sumber

YARN-4255. container-executor does not clean up docker operation command files. Contributed by Sidharta Seethana.

Varun Vasudev 9 tahun lalu
induk
melakukan
da1ee078f9

+ 3 - 0
hadoop-yarn-project/CHANGES.txt

@@ -937,6 +937,9 @@ Release 2.8.0 - UNRELEASED
     YARN-4253. Standardize on using PrivilegedOperationExecutor for all
     YARN-4253. Standardize on using PrivilegedOperationExecutor for all
     invocations of container-executor in LinuxContainerExecutor. (Sidharta Seethana via vvasudev)
     invocations of container-executor in LinuxContainerExecutor. (Sidharta Seethana via vvasudev)
 
 
+    YARN-4255. container-executor does not clean up docker operation command files.
+    (Sidharta Seethana via vvasudev)
+
 Release 2.7.2 - UNRELEASED
 Release 2.7.2 - UNRELEASED
 
 
   INCOMPATIBLE CHANGES
   INCOMPATIBLE CHANGES

+ 6 - 0
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/container-executor.c

@@ -1064,6 +1064,9 @@ int run_docker(const char *command_file) {
   snprintf(docker_command_with_binary, EXECUTOR_PATH_MAX, "%s %s", docker_binary, docker_command);
   snprintf(docker_command_with_binary, EXECUTOR_PATH_MAX, "%s %s", docker_binary, docker_command);
   char **args = extract_values_delim(docker_command_with_binary, " ");
   char **args = extract_values_delim(docker_command_with_binary, " ");
 
 
+  //clean up command file before we exec
+  unlink(command_file);
+
   int exit_code = -1;
   int exit_code = -1;
   if (execvp(docker_binary, args) != 0) {
   if (execvp(docker_binary, args) != 0) {
     fprintf(ERRORFILE, "Couldn't execute the container launch with args %s - %s",
     fprintf(ERRORFILE, "Couldn't execute the container launch with args %s - %s",
@@ -1360,6 +1363,9 @@ int launch_docker_container_as_user(const char * user, const char *app_id,
   }
   }
 
 
 cleanup:
 cleanup:
+  //clean up docker command file
+  unlink(command_file);
+
   if (exit_code_file != NULL && write_exit_code_file(exit_code_file, exit_code) < 0) {
   if (exit_code_file != NULL && write_exit_code_file(exit_code_file, exit_code) < 0) {
     fprintf (ERRORFILE,
     fprintf (ERRORFILE,
       "Could not write exit code to file %s.\n", exit_code_file);
       "Could not write exit code to file %s.\n", exit_code_file);