hive-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Barna Zsombor Klara (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (HIVE-15168) Flaky test: TestSparkClient.testJobSubmission (still flaky)
Date Thu, 24 Nov 2016 11:16:58 GMT

     [ https://issues.apache.org/jira/browse/HIVE-15168?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Barna Zsombor Klara updated HIVE-15168:
---------------------------------------
    Attachment: HIVE-15168.2.patch

Added a comment in the listener where we set the QUEUED state clarifying that the state transition
may not happen if the job succeeds before it is called.

The javadoc on the JobHandleImpl#changeState(State newState) is already clear enough I think.

> Flaky test: TestSparkClient.testJobSubmission (still flaky)
> -----------------------------------------------------------
>
>                 Key: HIVE-15168
>                 URL: https://issues.apache.org/jira/browse/HIVE-15168
>             Project: Hive
>          Issue Type: Sub-task
>            Reporter: Barna Zsombor Klara
>            Assignee: Barna Zsombor Klara
>             Fix For: 2.2.0
>
>         Attachments: HIVE-15168.1.patch, HIVE-15168.2.patch, HIVE-15168.patch
>
>
> [HIVE-14910|https://issues.apache.org/jira/browse/HIVE-14910] already addressed one source
of flakyness bud sadly not all it seems.
> In JobHandleImpl the listeners are registered after the job has been submitted.
> This may end up in a racecondition.
> {code}
>  // Link the RPC and the promise so that events from one are propagated to the other
as
>       // needed.
>       rpc.addListener(new GenericFutureListener<io.netty.util.concurrent.Future<Void>>()
{
>         @Override
>         public void operationComplete(io.netty.util.concurrent.Future<Void> f)
{
>           if (f.isSuccess()) {
>             handle.changeState(JobHandle.State.QUEUED);
>           } else if (!promise.isDone()) {
>             promise.setFailure(f.cause());
>           }
>         }
>       });
>       promise.addListener(new GenericFutureListener<Promise<T>>() {
>         @Override
>         public void operationComplete(Promise<T> p) {
>           if (jobId != null) {
>             jobs.remove(jobId);
>           }
>           if (p.isCancelled() && !rpc.isDone()) {
>             rpc.cancel(true);
>           }
>         }
>       });
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message