From f5b19bed7d71979dc8685b03152188902b6e45e9 Mon Sep 17 00:00:00 2001 From: Vinod Kumar Vavilapalli Date: Thu, 6 Nov 2014 11:48:40 -0800 Subject: [PATCH] YARN-2818. Removed the now unnecessary user entity injection from Timeline service given we now have domains. Contributed by Zhijie Shen. --- hadoop-yarn-project/CHANGES.txt | 3 + .../server/timeline/TimelineDataManager.java | 71 +------------------ .../webapp/TestTimelineWebServices.java | 6 +- 3 files changed, 5 insertions(+), 75 deletions(-) diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index aefc59f0a5..0fe957cfd2 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -429,6 +429,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 diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/timeline/TimelineDataManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/timeline/TimelineDataManager.java index 3b6aafa280..7ef0a67dac 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/timeline/TimelineDataManager.java +++ b/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 TimelineEntities getEntities( EnumSet fields, UserGroupInformation callerUGI) throws YarnException, IOException { TimelineEntities entities = null; - boolean modified = extendFields(fields); entities = store.getEntities( entityType, limit, @@ -130,13 +129,6 @@ public TimelineEntities getEntities( 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 TimelineEntity getEntity( EnumSet 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 TimelineEntity getEntity( 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 TimelinePutResponse postEntities( } } 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 TimelinePutResponse postEntities( 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 TimelineDomains getDomains(String owner, } } - private static boolean extendFields(EnumSet 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()); - } - } - } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/test/java/org/apache/hadoop/yarn/server/timeline/webapp/TestTimelineWebServices.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/test/java/org/apache/hadoop/yarn/server/timeline/webapp/TestTimelineWebServices.java index 8a7f27add3..fe2ed5c8b9 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/test/java/org/apache/hadoop/yarn/server/timeline/webapp/TestTimelineWebServices.java +++ b/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 void testPostEntitiesWithPrimaryFilter() throws Exception { .post(ClientResponse.class, entities); TimelinePutResponse putResposne = response.getEntity(TimelinePutResponse.class); - Assert.assertEquals(1, putResposne.getErrors().size()); - List errors = putResposne.getErrors(); - Assert.assertEquals( - TimelinePutResponse.TimelinePutError.SYSTEM_FILTER_CONFLICT, - errors.get(0).getErrorCode()); + Assert.assertEquals(0, putResposne.getErrors().size()); } @Test