@Override public void addStateChangeListener(QueryId queryId, StateChangeListener<QueryState> listener) { requireNonNull(listener, "listener is null"); queryTracker.getQuery(queryId).addStateChangeListener(listener); }
private void addStatsListeners(QueryExecution queryExecution) { Object lock = new Object(); // QUEUED is the initial state, the counter can be incremented immediately stats.queryQueued(); AtomicBoolean started = new AtomicBoolean(); queryExecution.addStateChangeListener(newValue -> { synchronized (lock) { if (newValue == RUNNING && !started.getAndSet(true)) { stats.queryStarted(); } } }); AtomicBoolean stopped = new AtomicBoolean(); queryExecution.addStateChangeListener(newValue -> { synchronized (lock) { if (newValue.isDone() && !stopped.getAndSet(true) && started.get()) { stats.queryStopped(); } } }); }
queryExecution.addStateChangeListener(newState -> { if (newState.isDone()) { queryExecution.getSession().getTransactionId().ifPresent(transactionManager::trySetInactive);
/** * Set up a callback to fire when a query is completed. The callback will be called at most once. */ static void addCompletionCallback(QueryExecution queryExecution, Runnable callback) { AtomicBoolean taskExecuted = new AtomicBoolean(); queryExecution.addStateChangeListener(newValue -> { if (newValue.isDone() && taskExecuted.compareAndSet(false, true)) { callback.run(); } }); // Need to do this check in case the state changed before we added the previous state change listener if (queryExecution.getState().isDone() && taskExecuted.compareAndSet(false, true)) { callback.run(); } } }
queryMonitor.createdEvent(queryInfo); queryExecution.addStateChangeListener(newValue -> { if (newValue.isDone()) { QueryInfo info = queryExecution.getQueryInfo();