[
https://issues.apache.org/jira/browse/DRILL-3640?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16242617#comment-16242617
]
ASF GitHub Bot commented on DRILL-3640:
---------------------------------------
Github user kkhatua commented on a diff in the pull request:
https://github.com/apache/drill/pull/1024#discussion_r149467572
--- Diff:
exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillCursor.java ---
@@ -376,6 +415,19 @@ synchronized void cleanup() {
currentBatchHolder.clear();
}
+ //Set the cursor's timeout in seconds
--- End diff --
We do get the timeout value from the Statement (Ref:
https://github.com/kkhatua/drill/blob/a008707c7b97ea95700ab0f2eb5182d779a9bcb3/exec/jdbc/src/main/java/org/apache/drill/jdbc/impl/DrillCursor.java#L372
)
However, the Statement is referred to by the ResultSet object as well, to
get a handle of the timer object. During testing, I found that there is a
possibility that the DrillCursor completes fetching all batches, but a slow
client would call ResultSet.next() slowly and time out. The ResultSet object
has no reference to the timer, except via the Statement object.
There is a bigger problem that this block of code fixes. During iteration,
we don't want to be able to change the timeout period. Hence, the DrillCursor
(invoked by the _first_ `ResultSet.next()` call) will be initialized and set
the timer to start ticking.Thereafter, any attempt to change the timeout can be
ignored.
> Drill JDBC driver support Statement.setQueryTimeout(int)
> --------------------------------------------------------
>
> Key: DRILL-3640
> URL: https://issues.apache.org/jira/browse/DRILL-3640
> Project: Apache Drill
> Issue Type: New Feature
> Components: Client - JDBC
> Affects Versions: 1.2.0
> Reporter: Chun Chang
> Assignee: Kunal Khatua
> Fix For: 1.12.0
>
>
> It would be nice if we have this implemented. Run away queries can be
> automatically canceled by setting the timeout.
> java.sql.SQLFeatureNotSupportedException: Setting network timeout is not
> supported.
> at
> org.apache.drill.jdbc.impl.DrillStatementImpl.setQueryTimeout(DrillStatementImpl.java:152)
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)