[
https://issues.apache.org/jira/browse/MAPREDUCE-5719?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13877190#comment-13877190
]
Zhijie Shen commented on MAPREDUCE-5719:
----------------------------------------
bq. In my opinion the null check is desirable so that there is no direct
dependency on heartbeat.
It should be the correct fix. With NM heartbeat, the container (AM container in
this case) can be allocated for the application, and registration with RM
happens after AM container get allocated, thus AM container is always not null
in getTransferredContainers.
> Potential null pointer access in
> AbstractYarnScheduler#getTransferredContainers()
> ---------------------------------------------------------------------------------
>
> Key: MAPREDUCE-5719
> URL: https://issues.apache.org/jira/browse/MAPREDUCE-5719
> Project: Hadoop Map/Reduce
> Issue Type: Bug
> Affects Versions: 3.0.0, 2.4.0
> Reporter: Ted Yu
> Assignee: Ted Yu
> Attachments: mapreduce-5719-v1.txt, mapreduce-5719-v2.txt
>
>
> From https://builds.apache.org/job/Hadoop-Mapreduce-trunk/1666/console :
> {code}
> Tests run: 14, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 63.12 sec
> <<< FAILURE! - in org.apache.hadoop.mapreduce.v2.app.TestRMContainerAllocator
> testCompletedTasksRecalculateSchedule(org.apache.hadoop.mapreduce.v2.app.TestRMContainerAllocator)
> Time elapsed: 2.083 sec <<< ERROR!
> org.apache.hadoop.yarn.exceptions.YarnRuntimeException:
> java.lang.NullPointerException
> at
> org.apache.hadoop.yarn.server.resourcemanager.scheduler.AbstractYarnScheduler.getTransferredContainers(AbstractYarnScheduler.java:50)
> at
> org.apache.hadoop.yarn.server.resourcemanager.ApplicationMasterService.registerApplicationMaster(ApplicationMasterService.java:277)
> at
> org.apache.hadoop.mapreduce.v2.app.rm.RMCommunicator.register(RMCommunicator.java:154)
> at
> org.apache.hadoop.mapreduce.v2.app.TestRMContainerAllocator$MyContainerAllocator.register(TestRMContainerAllocator.java:1476)
> at
> org.apache.hadoop.mapreduce.v2.app.rm.RMCommunicator.serviceStart(RMCommunicator.java:112)
> at
> org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator.serviceStart(RMContainerAllocator.java:219)
> at
> org.apache.hadoop.service.AbstractService.start(AbstractService.java:193)
> at
> org.apache.hadoop.mapreduce.v2.app.TestRMContainerAllocator$MyContainerAllocator.<init>(TestRMContainerAllocator.java:1444)
> at
> org.apache.hadoop.mapreduce.v2.app.TestRMContainerAllocator$RecalculateContainerAllocator.<init>(TestRMContainerAllocator.java:1629)
> at
> org.apache.hadoop.mapreduce.v2.app.TestRMContainerAllocator.testCompletedTasksRecalculateSchedule(TestRMContainerAllocator.java:1665)
> {code}
> In above case getMasterContainer() returned null.
> AbstractYarnScheduler#getTransferredContainers() should check such condition.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)