[ 
https://issues.apache.org/jira/browse/YARN-7947?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16369531#comment-16369531
 ] 

Eric Payne edited comment on YARN-7947 at 2/19/18 9:29 PM:
-----------------------------------------------------------

YARN-7051 added the following code. Instead of passing {{amUsed}} to the 
{{TempUserPerPartition}} constructor, it passes the intermediate variable 
{{userSpecificAmUsed}}, which can sometimes be null.

{{userSpecificAmUsed}} is only null when a user has no schedulable apps but 
does have non-schedulable apps, such as when the AM limit has been reached, for 
example. 
{code:title=FifoIntraQueuePreemptionPlugin#createTempAppForResCalculation}
        Resource userSpecificAmUsed = perUserAMUsed.get(userName);
        amUsed = (userSpecificAmUsed == null)
            ? Resources.none() : userSpecificAmUsed;

        TempUserPerPartition tmpUser = new TempUserPerPartition(
            tq.leafQueue.getUser(userName), tq.queueName,
            Resources.clone(userResourceUsage.getUsed(partition)),
            Resources.clone(userSpecificAmUsed),
            Resources.clone(userResourceUsage.getReserved(partition)),
            Resources.none());
{code}


was (Author: eepayne):
YARN-7051 added the following code. Instead of passing {{amUsed}} to the 
{{TempUserPerPartition}} constructor, it passes the intermediate variable 
{{userSpecificAmUsed}}, which can sometimes be null.

{{userSpecificAmUsed}} is only null when a user has no schedulable apps but 
does have non-schedulable apps, such as when the AM limit has been reached, for 
example. 
{code:title=FifoIntraQueuePreemptionPlugin#getAlreadySelectedPreemptionCandidatesResource}
        Resource userSpecificAmUsed = perUserAMUsed.get(userName);
        amUsed = (userSpecificAmUsed == null)
            ? Resources.none() : userSpecificAmUsed;

        TempUserPerPartition tmpUser = new TempUserPerPartition(
            tq.leafQueue.getUser(userName), tq.queueName,
            Resources.clone(userResourceUsage.getUsed(partition)),
            Resources.clone(userSpecificAmUsed),
            Resources.clone(userResourceUsage.getReserved(partition)),
            Resources.none());
{code}

> Capacity Scheduler intra-queue preemption can NPE for non-schedulable apps
> --------------------------------------------------------------------------
>
>                 Key: YARN-7947
>                 URL: https://issues.apache.org/jira/browse/YARN-7947
>             Project: Hadoop YARN
>          Issue Type: Bug
>          Components: capacity scheduler, scheduler preemption
>            Reporter: Eric Payne
>            Priority: Major
>
> Intra-queue preemption policy can cause NPE for pending users with no 
> schedulable apps.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: yarn-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: yarn-issues-h...@hadoop.apache.org

Reply via email to