Hadoop QA commented on YARN-2264:

{color:red}-1 overall{color}.  Here are the results of testing the latest 
  against trunk revision .

    {color:green}+1 @author{color}.  The patch does not contain any @author 

    {color:green}+1 tests included{color}.  The patch appears to include 1 new 
or modified test files.

    {color:green}+1 javac{color}.  The applied patch does not increase the 
total number of javac compiler warnings.

    {color:green}+1 javadoc{color}.  There were no new javadoc warning messages.

    {color:green}+1 eclipse:eclipse{color}.  The patch built with 

    {color:green}+1 findbugs{color}.  The patch does not introduce any new 
Findbugs (version 2.0.3) warnings.

    {color:green}+1 release audit{color}.  The applied patch does not increase 
the total number of release audit warnings.

    {color:red}-1 core tests{color}.  The patch failed these unit tests in 


    {color:green}+1 contrib tests{color}.  The patch passed contrib unit tests.

Test results: 
Console output: https://builds.apache.org/job/PreCommit-YARN-Build/4246//console

This message is automatically generated.

> Race in DrainDispatcher can cause random test failures
> ------------------------------------------------------
>                 Key: YARN-2264
>                 URL: https://issues.apache.org/jira/browse/YARN-2264
>             Project: Hadoop YARN
>          Issue Type: Bug
>            Reporter: Siddharth Seth
>            Assignee: Li Lu
>         Attachments: YARN-2264-070814.patch
> This is what can happen.
> This is the potential race.
> DrainDispatcher is started via serviceStart() . As a last step, this starts 
> the actual dispatcher thread (eventHandlingThread.start() - and returns 
> immediately - which means the thread may or may not have started up by the 
> time start returns.
> Event sequence: 
> UserThread: calls dispatcher.getEventHandler().handle()
> This sets drained = false, and a context switch happens.
> DispatcherThread: starts running
> DispatcherThread drained = queue.isEmpty(); -> This sets drained to true, 
> since Thread1 yielded before putting anything into the queue.
> UserThread: actual.handle(event) - which puts the event in the queue for the 
> dispatcher thread to process, and returns control.
> UserThread: dispatcher.await() - Since drained is true, this returns 
> immediately - even though there is a pending event to process.

This message was sent by Atlassian JIRA

Reply via email to