Wangda Tan commented on YARN-1408:

Hi [~sunilg],
It seems your patch cannot apply against trunk, could you please rebase it?
I just reviewed your latest patch, some minor comments

    // If container state is moved to ACQUIRED, request will be empty.
    if (requests == null || requests.isEmpty()) {
Now request can only be null or non-empty, right?

Could you update TestFairScheduler to wait for new container allocated at the 
end of test as same as TestCapacityScheduler?

It seems YARN-2181 changed RMContainerImpl and now 
TestFairScheduler#testRecoverRequestAfterPreemption will encounter a NPE. You 
can use "createSchedulingRequest" to avoid such error, like below
    ApplicationAttemptId appAttemptId =
        createSchedulingRequest(1 * 1024, "root.default", "user", 1, 1);
You can check TestFairScheduler#testChoiceOfPreemptedContainers as an example.

Add timeout to tests you added.


> Preemption caused Invalid State Event: ACQUIRED at KILLED and caused a task 
> timeout for 30mins
> ----------------------------------------------------------------------------------------------
>                 Key: YARN-1408
>                 URL: https://issues.apache.org/jira/browse/YARN-1408
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>          Components: resourcemanager
>    Affects Versions: 2.2.0
>            Reporter: Sunil G
>            Assignee: Sunil G
>         Attachments: Yarn-1408.1.patch, Yarn-1408.2.patch, Yarn-1408.3.patch, 
> Yarn-1408.4.patch, Yarn-1408.5.patch, Yarn-1408.6.patch, Yarn-1408.7.patch, 
> Yarn-1408.8.patch, Yarn-1408.patch
> Capacity preemption is enabled as follows.
>  *  yarn.resourcemanager.scheduler.monitor.enable= true ,
>  *  
> yarn.resourcemanager.scheduler.monitor.policies=org.apache.hadoop.yarn.server.resourcemanager.monitor.capacity.ProportionalCapacityPreemptionPolicy
> Queue = a,b
> Capacity of Queue A = 80%
> Capacity of Queue B = 20%
> Step 1: Assign a big jobA on queue a which uses full cluster capacity
> Step 2: Submitted a jobB to queue b  which would use less than 20% of cluster 
> capacity
> JobA task which uses queue b capcity is been preempted and killed.
> This caused below problem:
> 1. New Container has got allocated for jobA in Queue A as per node update 
> from an NM.
> 2. This container has been preempted immediately as per preemption.
> Here ACQUIRED at KILLED Invalid State exception came when the next AM 
> heartbeat reached RM.
> org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.RMContainerImpl: 
> Can't handle this event at current state
> org.apache.hadoop.yarn.state.InvalidStateTransitonException: Invalid event: 
> This also caused the Task to go for a timeout for 30minutes as this Container 
> was already killed by preemption.
> attempt_1380289782418_0003_m_000000_0 Timed out after 1800 secs

This message was sent by Atlassian JIRA

Reply via email to