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?
---