drill-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DRILL-4676) Foreman.moveToState can block forever if called by the foreman thread while the query is still being setup
Date Tue, 17 May 2016 18:32:12 GMT

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

ASF GitHub Bot commented on DRILL-4676:
---------------------------------------

Github user adeneche commented on a diff in the pull request:

    https://github.com/apache/drill/pull/503#discussion_r63578261
  
    --- Diff: exec/java-exec/src/main/java/org/apache/drill/exec/work/foreman/Foreman.java
---
    @@ -1206,42 +1210,18 @@ public void interrupted(final InterruptedException e) {
       }
     
       /**
    -   * Provides gated access to state transitions.
    -   *
    -   * <p>The StateListener waits on a latch before delivery state transitions to
the Foreman. The
    -   * latch will be tripped when the Foreman is sufficiently set up that it can receive
and process
    -   * external events from other threads.
    -   */
    -  public class StateListener {
    -    /**
    -     * Move the Foreman to the specified new state.
    -     *
    -     * @param newState the state to move to
    -     * @param ex if moving to a failure state, the exception that led to the failure;
used for reporting
    -     *   to the user
    -     */
    -    public void moveToState(final QueryState newState, final Exception ex) {
    -      acceptExternalEvents.awaitUninterruptibly();
    -
    -      Foreman.this.moveToState(newState, ex);
    -    }
    -  }
    -
    -  /**
        * Listens for the status of the RPC response sent to the user for the query.
        */
       private class ResponseSendListener extends BaseRpcOutcomeListener<Ack> {
         @Override
         public void failed(final RpcException ex) {
           logger.info("Failure while trying communicate query result to initiating client.
" +
                   "This would happen if a client is disconnected before response notice can
be sent.", ex);
    -      stateListener.moveToState(QueryState.FAILED, ex);
    --- End diff --
    
    will add a note in the squashed commit


> Foreman.moveToState can block forever if called by the foreman thread while the query
is still being setup
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: DRILL-4676
>                 URL: https://issues.apache.org/jira/browse/DRILL-4676
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Execution - Flow
>    Affects Versions: 1.6.0
>            Reporter: Deneche A. Hakim
>            Assignee: Sudheesh Katkam
>             Fix For: 1.7.0
>
>
> When the query is being setup, foreman has a special CountDownLatch that blocks rpc threads
from delivering external events, this latch is unblocked at the end of the query setup.
> In some cases though, when the foreman is submitting remote fragments, a failure in RpcBus.send()
causes an exception to be thrown that is reported to 
> Foreman.FragmentSubmitListener and blocks in the CountDownLatch. This causes the foreman
thread to block forever, and can rpc threads to be blocked too.
> This seems to happen more frequently at a high concurrency load, and also can prevent
clients from connecting to the Drillbits.



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

Mime
View raw message