فهرست منبع

YARN-8629. Container cleanup fails while trying to delete Cgroups. (Suma Shivaprasad via wangda)

Change-Id: I392ef4f8baa84d5d7b1f2e438c560b5426b6d4f2
(cherry picked from commit d4258fcad71eabe2de3cf829cde36840200ab9b6)
Wangda Tan 6 سال پیش
والد
کامیت
450c791ecf

+ 16 - 10
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/resources/CGroupsHandlerImpl.java

@@ -504,23 +504,29 @@ class CGroupsHandlerImpl implements CGroupsHandler {
   private boolean checkAndDeleteCgroup(File cgf) throws InterruptedException {
     boolean deleted = false;
     // FileInputStream in = null;
-    try (FileInputStream in = new FileInputStream(cgf + "/tasks")) {
-      if (in.read() == -1) {
+    if ( cgf.exists() ) {
+      try (FileInputStream in = new FileInputStream(cgf + "/tasks")) {
+        if (in.read() == -1) {
         /*
          * "tasks" file is empty, sleep a bit more and then try to delete the
          * cgroup. Some versions of linux will occasionally panic due to a race
          * condition in this area, hence the paranoia.
          */
-        Thread.sleep(deleteCGroupDelay);
-        deleted = cgf.delete();
-        if (!deleted) {
-          LOG.warn("Failed attempt to delete cgroup: " + cgf);
+          Thread.sleep(deleteCGroupDelay);
+          deleted = cgf.delete();
+          if (!deleted) {
+            LOG.warn("Failed attempt to delete cgroup: " + cgf);
+          }
+        } else{
+          logLineFromTasksFile(cgf);
         }
-      } else {
-        logLineFromTasksFile(cgf);
+      } catch (IOException e) {
+        LOG.warn("Failed to read cgroup tasks file. ", e);
       }
-    } catch (IOException e) {
-      LOG.warn("Failed to read cgroup tasks file. ", e);
+    } else {
+      LOG.info("Parent Cgroups directory {} does not exist. Skipping "
+          + "deletion", cgf.getPath());
+      deleted = true;
     }
     return deleted;
   }