hadoop-mapreduce-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From s..@apache.org
Subject svn commit: r1346242 - in /hadoop/common/branches/branch-0.22/mapreduce: CHANGES.txt src/c++/task-controller/impl/task-controller.c
Date Tue, 05 Jun 2012 05:36:31 GMT
Author: shv
Date: Tue Jun  5 05:36:30 2012
New Revision: 1346242

URL: http://svn.apache.org/viewvc?rev=1346242&view=rev
Log:
MAPREDUCE-2651. Fix race condition in Linux task controller for job log directory creation.
Contributed by Bharath Mundlapudi and Benoy Antony.

Modified:
    hadoop/common/branches/branch-0.22/mapreduce/CHANGES.txt
    hadoop/common/branches/branch-0.22/mapreduce/src/c++/task-controller/impl/task-controller.c

Modified: hadoop/common/branches/branch-0.22/mapreduce/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.22/mapreduce/CHANGES.txt?rev=1346242&r1=1346241&r2=1346242&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.22/mapreduce/CHANGES.txt (original)
+++ hadoop/common/branches/branch-0.22/mapreduce/CHANGES.txt Tue Jun  5 05:36:30 2012
@@ -47,6 +47,8 @@ Release 0.22.1 - Unreleased
     MAPREDUCE-2452. Moves the cancellation of delegation tokens to a separate
     thread. (Devaraj Das and Benoy Antony via shv)
 
+    MAPREDUCE-2651. Fix race condition in Linux task controller for
+    job log directory creation. (Bharath Mundlapudi and Benoy Antony via shv)
 
 Release 0.22.0 - 2011-11-29
 

Modified: hadoop/common/branches/branch-0.22/mapreduce/src/c++/task-controller/impl/task-controller.c
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.22/mapreduce/src/c%2B%2B/task-controller/impl/task-controller.c?rev=1346242&r1=1346241&r2=1346242&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.22/mapreduce/src/c++/task-controller/impl/task-controller.c
(original)
+++ hadoop/common/branches/branch-0.22/mapreduce/src/c++/task-controller/impl/task-controller.c
Tue Jun  5 05:36:30 2012
@@ -538,9 +538,16 @@ int create_directory_for_user(const char
   uid_t user = geteuid();
   gid_t group = getegid();
   int ret = 0;
-  ret = change_effective_user(tt_uid, tt_gid);
+  uid_t root = 0;
+
+  //This check is particularly required for c-based unit tests since 
+  //tests run as a regular user.
+  if (getuid() == root) {
+    ret = change_effective_user(root, tt_gid);
+  }
+
   if (ret == 0) {
-    if (mkdir(path, permissions) == 0) {
+    if (mkdir(path, permissions) == 0 || errno == EEXIST) {
       // need to reassert the group sticky bit
       if (chmod(path, permissions) != 0) {
         fprintf(LOGFILE, "Can't chmod %s to add the sticky bit - %s\n",
@@ -549,21 +556,6 @@ int create_directory_for_user(const char
       } else if (change_owner(path, user, tt_gid) != 0) {
         ret = -1;
       }
-    } else if (errno == EEXIST) {
-      struct stat file_stat;
-      if (stat(path, &file_stat) != 0) {
-        fprintf(LOGFILE, "Can't stat directory %s - %s\n", path, 
-                strerror(errno));
-        ret = -1;
-      } else {
-        if (file_stat.st_uid != user ||
-            file_stat.st_gid != tt_gid) {
-          fprintf(LOGFILE, "Directory %s owned by wrong user or group. "
-                  "Expected %d:%d and found %d:%d.\n",
-                  path, user, tt_gid, file_stat.st_uid, file_stat.st_gid);
-          ret = -1;
-        }
-      }
     } else {
       fprintf(LOGFILE, "Failed to create directory %s - %s\n", path,
               strerror(errno));



Mime
View raw message