Browse Source

YARN-2818. Removed the now unnecessary user entity injection from Timeline service given we now have domains. Contributed by Zhijie Shen.

(cherry picked from commit f5b19bed7d71979dc8685b03152188902b6e45e9)
Vinod Kumar Vavilapalli 10 years ago
parent
commit
b557f689b4

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

@@ -354,6 +354,9 @@ Release 2.6.0 - UNRELEASED
     YARN-2770. Added functionality to renew/cancel TimeLineDelegationToken.
     (Zhijie Shen via jianhe)
 
+    YARN-2818. Removed the now unnecessary user entity injection from Timeline
+    service given we now have domains. (Zhijie Shen via vinodkv)
+
   OPTIMIZATIONS
 
   BUG FIXES

+ 1 - 70
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/timeline/TimelineDataManager.java

@@ -109,7 +109,6 @@ public class TimelineDataManager extends AbstractService {
       EnumSet<Field> fields,
       UserGroupInformation callerUGI) throws YarnException, IOException {
     TimelineEntities entities = null;
-    boolean modified = extendFields(fields);
     entities = store.getEntities(
         entityType,
         limit,
@@ -130,13 +129,6 @@ public class TimelineDataManager extends AbstractService {
           if (!timelineACLsManager.checkAccess(
               callerUGI, ApplicationAccessType.VIEW_APP, entity)) {
             entitiesItr.remove();
-          } else {
-            // clean up system data
-            if (modified) {
-              entity.setPrimaryFilters(null);
-            } else {
-              cleanupOwnerInfo(entity);
-            }
           }
         } catch (YarnException e) {
           LOG.error("Error when verifying access for user " + callerUGI
@@ -166,7 +158,6 @@ public class TimelineDataManager extends AbstractService {
       EnumSet<Field> fields,
       UserGroupInformation callerUGI) throws YarnException, IOException {
     TimelineEntity entity = null;
-    boolean modified = extendFields(fields);
     entity =
         store.getEntity(entityId, entityType, fields);
     if (entity != null) {
@@ -174,13 +165,6 @@ public class TimelineDataManager extends AbstractService {
       if (!timelineACLsManager.checkAccess(
           callerUGI, ApplicationAccessType.VIEW_APP, entity)) {
         entity = null;
-      } else {
-        // clean up the system data
-        if (modified) {
-          entity.setPrimaryFilters(null);
-        } else {
-          cleanupOwnerInfo(entity);
-        }
       }
     }
     return entity;
@@ -283,8 +267,7 @@ public class TimelineDataManager extends AbstractService {
         }
       } catch (Exception e) {
         // Skip the entity which already exists and was put by others
-        LOG.error("Skip the timeline entity: " + entityID + ", because "
-            + e.getMessage());
+        LOG.error("Skip the timeline entity: " + entityID, e);
         TimelinePutResponse.TimelinePutError error =
             new TimelinePutResponse.TimelinePutError();
         error.setEntityId(entityID.getId());
@@ -295,28 +278,6 @@ public class TimelineDataManager extends AbstractService {
         continue;
       }
 
-      // inject owner information for the access check if this is the first
-      // time to post the entity, in case it's the admin who is updating
-      // the timeline data.
-      try {
-        if (existingEntity == null) {
-          injectOwnerInfo(entity, callerUGI.getShortUserName());
-        }
-      } catch (YarnException e) {
-        // Skip the entity which messes up the primary filter and record the
-        // error
-        LOG.error("Skip the timeline entity: " + entityID + ", because "
-            + e.getMessage());
-        TimelinePutResponse.TimelinePutError error =
-            new TimelinePutResponse.TimelinePutError();
-        error.setEntityId(entityID.getId());
-        error.setEntityType(entityID.getType());
-        error.setErrorCode(
-            TimelinePutResponse.TimelinePutError.SYSTEM_FILTER_CONFLICT);
-        errors.add(error);
-        continue;
-      }
-
       entityIDs.add(entityID);
       entitiesToPut.addEntity(entity);
       if (LOG.isDebugEnabled()) {
@@ -394,34 +355,4 @@ public class TimelineDataManager extends AbstractService {
     }
   }
 
-  private static boolean extendFields(EnumSet<Field> fieldEnums) {
-    boolean modified = false;
-    if (fieldEnums != null && !fieldEnums.contains(Field.PRIMARY_FILTERS)) {
-      fieldEnums.add(Field.PRIMARY_FILTERS);
-      modified = true;
-    }
-    return modified;
-  }
-
-  private static void injectOwnerInfo(TimelineEntity timelineEntity,
-      String owner) throws YarnException {
-    if (timelineEntity.getPrimaryFilters() != null &&
-        timelineEntity.getPrimaryFilters().containsKey(
-            TimelineStore.SystemFilter.ENTITY_OWNER.toString())) {
-      throw new YarnException(
-          "User should not use the timeline system filter key: "
-              + TimelineStore.SystemFilter.ENTITY_OWNER);
-    }
-    timelineEntity.addPrimaryFilter(
-        TimelineStore.SystemFilter.ENTITY_OWNER
-            .toString(), owner);
-  }
-
-  private static void cleanupOwnerInfo(TimelineEntity timelineEntity) {
-    if (timelineEntity.getPrimaryFilters() != null) {
-      timelineEntity.getPrimaryFilters().remove(
-          TimelineStore.SystemFilter.ENTITY_OWNER.toString());
-    }
-  }
-
 }

+ 1 - 5
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/test/java/org/apache/hadoop/yarn/server/timeline/webapp/TestTimelineWebServices.java

@@ -443,11 +443,7 @@ public class TestTimelineWebServices extends JerseyTest {
         .post(ClientResponse.class, entities);
     TimelinePutResponse putResposne =
         response.getEntity(TimelinePutResponse.class);
-    Assert.assertEquals(1, putResposne.getErrors().size());
-    List<TimelinePutError> errors = putResposne.getErrors();
-    Assert.assertEquals(
-        TimelinePutResponse.TimelinePutError.SYSTEM_FILTER_CONFLICT,
-        errors.get(0).getErrorCode());
+    Assert.assertEquals(0, putResposne.getErrors().size());
   }
 
   @Test