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

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

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

    https://github.com/apache/drill/pull/993#discussion_r146112692
  
    --- Diff: 
exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/WebUserConnection.java
 ---
    @@ -124,6 +124,13 @@ public void sendData(RpcOutcomeListener<Ack> listener, 
QueryWritableBatch result
         }
       }
     
    +  /**
    +   * Returns a DefaultChannelPromise which doesn't have reference to any 
actual channel but has an EventExecutor
    +   * associated with it. In this case we use EventExecutor out of 
BitServer EventLoopGroup. Since there is no actual
    +   * connection established using this class, hence the close event will 
never be fired by underlying layer and close
    +   * future is set only when the WebSessionResources are closed.
    --- End diff --
    
    Based on previous conversation the assumption was unsecure path also 
maintains cookie or session. On looking more this proved to be false and we 
don't maintain any session for unsecure case. This means that the requests 
submitted without authentication are stateless and once the connection is 
broken by closing the browser session then the query will still continue 
running until explicitly cancelled from profile page. I didn't found any way in 
Jetty to get notification about connection close event. And looks like that 
won't be much helpful right now since we send the response back only after the 
query is completed and we have entire result. I have opened another JIRA 
[DRILL-5897](https://issues.apache.org/jira/browse/DRILL-5897) to see if we can 
improve the way we send result back to client or make unsecure case to also use 
session concept such that we can cancel the in-flight queries based on when 
session is invalidated.


> NPE in AnonWebUserConnection.cleanupSession()
> ---------------------------------------------
>
>                 Key: DRILL-5874
>                 URL: https://issues.apache.org/jira/browse/DRILL-5874
>             Project: Apache Drill
>          Issue Type: Bug
>    Affects Versions: 1.12.0
>            Reporter: Paul Rogers
>            Assignee: Sorabh Hamirwasia
>             Fix For: 1.12.0
>
>
> When debugging another issue, I tried to use the Web UI to run the example 
> query:
> {code}
> SELECT * FROM cp.`employee.json` LIMIT 20
> {code}
> The query failed with this error:
> {noformat}
> Query Failed: An Error Occurred
> java.lang.NullPointerException
> {noformat}
> No stack trace was provided in the log, even at DEBUG level.
> Debugging, the problem appears to be deep inside 
> {{AnonWebUserConnection.cleanupSession()}}:
> {code}
> package io.netty.channel;
> public class DefaultChannelPromise ...
>     protected EventExecutor executor() {
>         EventExecutor e = super.executor();
>         if (e == null) {
>             return channel().eventLoop();
>         } else {
>             return e;
>         }
>     }
> {code}
> In the above, {{channel()}} is null. the {{channel}} field is also null.
> This may indicate that some part of the Web UI was not set up correctly. This 
> is a recent change, as this code worked several days ago.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to