protected void applyQueryTimeout(Statement stmt) throws SQLException { // The session timeout of a query in milliseconds int queryTimeout = session.getQueryTimeout(); if (queryTimeout > 0) { int seconds = queryTimeout / 1000; trace.debug("apply {0} query time out from statement.", seconds); stmt.setQueryTimeout(seconds); } }
protected Cursor invokeQueryWorker(List<QueryWorker> worker) { session.checkCanceled(); try { int queryTimeout = session.getQueryTimeout();// MILLISECONDS List<Future<Cursor>> invokeAll; if (queryTimeout > 0) { invokeAll = queryExecutor.invokeAll(worker, queryTimeout, TimeUnit.MILLISECONDS); } else { invokeAll = queryExecutor.invokeAll(worker); } if (invokeAll.size() > 1) { MergedCursor cursor = new MergedCursor(); for (Future<Cursor> future : invokeAll) { cursor.addCursor(future.get()); } return cursor; } else { return invokeAll.iterator().next().get(); } } catch (InterruptedException e) { throw DbException.convert(e); } catch (ExecutionException e) { throw DbException.convert(e.getCause()); } finally { session.checkCanceled(); } }
protected int invokeUpdateWorker(List<UpdateWorker> worker) { session.checkCanceled(); try { int queryTimeout = session.getQueryTimeout();// MILLISECONDS List<Future<Integer>> invokeAll; if (queryTimeout > 0) { invokeAll = queryExecutor.invokeAll(worker, queryTimeout, TimeUnit.MILLISECONDS); } else { invokeAll = queryExecutor.invokeAll(worker); } int affectRows = 0; for (Future<Integer> future : invokeAll) { affectRows += future.get(); } return affectRows; } catch (InterruptedException e) { throw DbException.convert(e); } catch (ExecutionException e) { throw DbException.convert(e.getCause()); } finally { session.checkCanceled(); } }
add(rows, "QUERY_TIMEOUT", "" + session.getQueryTimeout());