Browse Source

Revert "YARN-4354. Public resource localization fails with NPE. Contributed by Jason Lowe."

This reverts commit 8ea88ab0b87482b779ec9f629b46e9ac7ad53cb5.
Jason Lowe 9 years ago
parent
commit
38f37ca2eb

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

@@ -138,9 +138,6 @@ Release 2.7.2 - UNRELEASED
     YARN-4127. RM fail with noAuth error if switched from failover mode to non-failover
     mode. (Varun Saxena via jianhe)
 
-    YARN-4354. Public resource localization fails with NPE. (Jason Lowe via 
-    junping_du)
-
 Release 2.7.1 - 2015-07-06
 
   INCOMPATIBLE CHANGES

+ 1 - 9
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/localizer/LocalResourcesTrackerImpl.java

@@ -171,22 +171,14 @@ class LocalResourcesTrackerImpl implements LocalResourcesTracker {
       break;
     }
 
-    if (rsrc == null) {
-      LOG.warn("Received " + event.getType() + " event for request " + req
-          + " but localized resource is missing");
-      return;
-    }
     rsrc.handle(event);
 
     // Remove the resource if its downloading and its reference count has
     // become 0 after RELEASE. This maybe because a container was killed while
     // localizing and no other container is referring to the resource.
-    // NOTE: This should NOT be done for public resources since the
-    //       download is not associated with a container-specific localizer.
     if (event.getType() == ResourceEventType.RELEASE) {
       if (rsrc.getState() == ResourceState.DOWNLOADING &&
-          rsrc.getRefCount() <= 0 &&
-          rsrc.getRequest().getVisibility() != LocalResourceVisibility.PUBLIC) {
+          rsrc.getRefCount() <= 0) {
         removeResource(req);
       }
     }

+ 3 - 53
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/localizer/TestLocalResourcesTrackerImpl.java

@@ -138,12 +138,12 @@ public class TestLocalResourcesTrackerImpl {
       tracker.handle(rel21Event);
 
       dispatcher.await();
-      verifyTrackedResourceCount(tracker, 2);
+      verifyTrackedResourceCount(tracker, 1);
 
       // Verify resource with non zero ref count is not removed.
       Assert.assertEquals(2, lr1.getRefCount());
       Assert.assertFalse(tracker.remove(lr1, mockDelService));
-      verifyTrackedResourceCount(tracker, 2);
+      verifyTrackedResourceCount(tracker, 1);
 
       // Localize resource1
       ResourceLocalizedEvent rle =
@@ -158,7 +158,7 @@ public class TestLocalResourcesTrackerImpl {
 
       // Verify resources in state LOCALIZED with ref-count=0 is removed.
       Assert.assertTrue(tracker.remove(lr1, mockDelService));
-      verifyTrackedResourceCount(tracker, 1);
+      verifyTrackedResourceCount(tracker, 0);
     } finally {
       if (dispatcher != null) {
         dispatcher.stop();
@@ -829,56 +829,6 @@ public class TestLocalResourcesTrackerImpl {
     }
   }
 
-  @Test
-  @SuppressWarnings("unchecked")
-  public void testReleaseWhileDownloading() throws Exception {
-    String user = "testuser";
-    DrainDispatcher dispatcher = null;
-    try {
-      Configuration conf = new Configuration();
-      dispatcher = createDispatcher(conf);
-      EventHandler<LocalizerEvent> localizerEventHandler =
-          mock(EventHandler.class);
-      EventHandler<LocalizerEvent> containerEventHandler =
-          mock(EventHandler.class);
-      dispatcher.register(LocalizerEventType.class, localizerEventHandler);
-      dispatcher.register(ContainerEventType.class, containerEventHandler);
-
-      ContainerId cId = BuilderUtils.newContainerId(1, 1, 1, 1);
-      LocalizerContext lc = new LocalizerContext(user, cId, null);
-
-      LocalResourceRequest req =
-          createLocalResourceRequest(user, 1, 1, LocalResourceVisibility.PUBLIC);
-      LocalizedResource lr = createLocalizedResource(req, dispatcher);
-      ConcurrentMap<LocalResourceRequest, LocalizedResource> localrsrc =
-          new ConcurrentHashMap<LocalResourceRequest, LocalizedResource>();
-      localrsrc.put(req, lr);
-      LocalResourcesTracker tracker =
-          new LocalResourcesTrackerImpl(user, null, dispatcher, localrsrc,
-              false, conf, new NMNullStateStoreService(), null);
-
-      // request the resource
-      ResourceEvent reqEvent =
-          new ResourceRequestEvent(req, LocalResourceVisibility.PUBLIC, lc);
-      tracker.handle(reqEvent);
-
-      // release the resource
-      ResourceEvent relEvent = new ResourceReleaseEvent(req, cId);
-      tracker.handle(relEvent);
-
-      // download completing after release
-      ResourceLocalizedEvent rle =
-          new ResourceLocalizedEvent(req, new Path("file:///tmp/r1"), 1);
-      tracker.handle(rle);
-
-      dispatcher.await();
-    } finally {
-      if (dispatcher != null) {
-        dispatcher.stop();
-      }
-    }
-  }
-
   private boolean createdummylocalizefile(Path path) {
     boolean ret = false;
     File file = new File(path.toUri().getRawPath().toString());

+ 2 - 2
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/localizer/TestResourceLocalizationService.java

@@ -482,8 +482,8 @@ public class TestResourceLocalizationService {
         Assert.assertEquals("Incorrect reference count", 0, lr.getRefCount());
         pubRsrcs.remove(lr.getRequest());
       }
-      Assert.assertEquals(0, pubRsrcs.size());
-      Assert.assertEquals(2, pubRsrcCount);
+      Assert.assertEquals(2, pubRsrcs.size());
+      Assert.assertEquals(0, pubRsrcCount);
 
       appRsrcCount = 0;
       for (LocalizedResource lr : appTracker) {