[
https://issues.apache.org/jira/browse/YARN-1980?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13979662#comment-13979662
]
Sunil G commented on YARN-1980:
-------------------------------
The problem is because while setting the preemption message from RM side,
always null is set for strictContainers as 3rd param (FicaSchedulerApp).
return new Allocation(allocation.getContainerList(), getHeadroom(), null,
currentContPreemption, Collections.singletonList(rr),
allocation.getNMTokenList());
I was able to see above code from trunk also. So evenif I use new version, same
problem may be there.
In AM side, KillAMPreemptionPolicy directly do below check.
for (PreemptionContainer c :
preemptionRequests.getStrictContract().getContainers()) {
killContainer(ctxt, c);
}
Here preemptionRequests.getStrictContract() seems coming NULL.
Also getStrictContract() can send NULL as per the code in
PreemptionMessagePBImpl.
So I think we can add a NULL check for safety in such cases and come directly
to normal container lists.
Attaching patch also for this. pls review
> Possible NPE in KillAMPreemptionPolicy related to
> ProportionalCapacityPreemptionPolicy
> --------------------------------------------------------------------------------------
>
> Key: YARN-1980
> URL: https://issues.apache.org/jira/browse/YARN-1980
> Project: Hadoop YARN
> Issue Type: Bug
> Components: resourcemanager
> Affects Versions: 2.3.0
> Reporter: Sunil G
> Attachments: Yarn-1980.1.patch
>
>
> I configured KillAMPreemptionPolicy for My Application Master and tried to
> check preemption of queues.
> In one scenario I have seen below NPE in my AM
> 014-04-24 15:11:08,860 ERROR [RMCommunicator Allocator]
> org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: ERROR IN
> CONTACTING RM.
> java.lang.NullPointerException
> at
> org.apache.hadoop.mapreduce.v2.app.rm.preemption.KillAMPreemptionPolicy.preempt(KillAMPreemptionPolicy.java:57)
> at
> org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator.getResources(RMContainerAllocator.java:662)
> at
> org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator.heartbeat(RMContainerAllocator.java:246)
> at
> org.apache.hadoop.mapreduce.v2.app.rm.RMCommunicator$1.run(RMCommunicator.java:267)
> at java.lang.Thread.run(Thread.java:662)
> I was using 2.2.0 and merged MAPREDUCE-5189 to see how AM preemption works.
--
This message was sent by Atlassian JIRA
(v6.2#6252)