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

    https://github.com/apache/drill/pull/1024#discussion_r151286559
  
    --- Diff: 
exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillResultSetImpl.java ---
    @@ -96,6 +105,14 @@ private void throwIfClosed() throws 
AlreadyClosedSqlException,
             throw new AlreadyClosedSqlException( "ResultSet is already 
closed." );
           }
         }
    +
    +    //Implicit check for whether timeout is set
    +    if (elapsedTimer != null) {
    --- End diff --
    
    So, I used your approach and made a modification to injecting the pause for 
`sending-data` () in the `ScreenCreator` class.
    ```
    org.apache.drill.jdbc.SqlTimeoutException: Query timed out in 2 seconds
            at 
org.apache.drill.jdbc.impl.DrillCursor$ResultsListener.awaitFirstMessage(DrillCursor.java:156)
            at 
org.apache.drill.jdbc.impl.DrillCursor.loadInitialSchema(DrillCursor.java:588)
            at 
org.apache.drill.jdbc.impl.DrillResultSetImpl.execute(DrillResultSetImpl.java:1917)
            at 
org.apache.drill.jdbc.impl.DrillResultSetImpl.execute(DrillResultSetImpl.java:65)
            at 
org.apache.calcite.avatica.AvaticaConnection$1.execute(AvaticaConnection.java:473)
            at 
org.apache.drill.jdbc.impl.DrillMetaImpl.prepareAndExecute(DrillMetaImpl.java:1100)
            at 
org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:477)
            at 
org.apache.drill.jdbc.impl.DrillConnectionImpl.prepareAndExecuteInternal(DrillConnectionImpl.java:191)
            at 
org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:110)
            at 
org.apache.calcite.avatica.AvaticaStatement.executeQuery(AvaticaStatement.java:130)
            at 
org.apache.drill.jdbc.impl.DrillStatementImpl.executeQuery(DrillStatementImpl.java:112)
            at 
org.apache.drill.jdbc.StatementTest.testServerTriggeredQueryTimeout(StatementTest.java:206)
    ```
    
    However, since the executeQuery() call failed, I don't have a queryId to 
unpause at the injection.
    Closing the (test-specific) connection did not help release back memory.
    ```
    15:43:41.818 [Thread-8] ERROR o.a.d.exec.server.BootStrapContext - Pool did 
not terminate
    15:43:41.836 [Thread-8] ERROR o.a.d.exec.server.BootStrapContext - Error 
while closing
    java.lang.IllegalStateException: Allocator[ROOT] closed with outstanding 
child allocators.
    Allocator(ROOT) 0/30180480/33376320/3221225472 (res/actual/peak/limit)
      child allocators: 2
        Allocator(query:25f32edb-db10-4f8a-6a9c-58b0b455c0ab) 
1048576/0/0/268435456 (res/actual/peak/limit)
    ....
            at 
org.apache.drill.exec.memory.BaseAllocator.close(BaseAllocator.java:496) 
~[drill-memory-base-1.12.0-SNAPSHOT.jar:1.12.0-SNAPSHOT]
            at 
org.apache.drill.common.AutoCloseables.close(AutoCloseables.java:76) 
[drill-common-1.12.0-SNAPSHOT.jar:1.12.0-SNAPSHOT]
            at 
org.apache.drill.common.AutoCloseables.close(AutoCloseables.java:64) 
[drill-common-1.12.0-SNAPSHOT.jar:1.12.0-SNAPSHOT]
            at 
org.apache.drill.exec.server.BootStrapContext.close(BootStrapContext.java:256) 
~[drill-java-exec-1.12.0-SNAPSHOT.jar:1.12.0-SNAPSHOT]
            at 
org.apache.drill.common.AutoCloseables.close(AutoCloseables.java:76) 
[drill-common-1.12.0-SNAPSHOT.jar:1.12.0-SNAPSHOT]
            at 
org.apache.drill.common.AutoCloseables.close(AutoCloseables.java:64) 
[drill-common-1.12.0-SNAPSHOT.jar:1.12.0-SNAPSHOT]
            at org.apache.drill.exec.server.Drillbit.close(Drillbit.java:205) 
[drill-java-exec-1.12.0-SNAPSHOT.jar:1.12.0-SNAPSHOT]
            at 
org.apache.drill.jdbc.impl.DrillConnectionImpl.cleanup(DrillConnectionImpl.java:817)
 [classes/:na]
            at 
org.apache.drill.jdbc.impl.DrillHandler.onConnectionClose(DrillHandler.java:36) 
[classes/:na]
            at 
org.apache.calcite.avatica.AvaticaConnection.close(AvaticaConnection.java:156) 
[calcite-avatica-1.4.0-drill-r23.jar:1.4.0-drill-r23]
            at 
org.apache.drill.jdbc.StatementTest.testServerTriggeredQueryTimeout(StatementTest.java:225)
 [test-classes/:na]
    ```
    
    Any idea on how I can _resume_ such a query without the queryId?


---

Reply via email to