Skip to content

Commit c0e4263

Browse files
committed
feat: update inactivity handling
1 parent f9f228b commit c0e4263

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

src/main/java/com/topcoder/dal/DBAccessor.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -326,9 +326,15 @@ public StreamObserver<QueryRequest> streamQuery(StreamObserver<QueryResponse> re
326326
AtomicLong lastTimerReset = new AtomicLong(System.nanoTime() - DEBOUNCE_INTERVAL.toNanos() - 1);
327327
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
328328
AtomicReference<ScheduledFuture<?>> streamTimeoutFuture = new AtomicReference<>(scheduleStreamTimeout());
329+
private Boolean isStreamAlive = true;
329330

330331
@Override
331332
public void onNext(QueryRequest request) {
333+
if (!isStreamAlive) {
334+
responseObserver.onError(Status.DEADLINE_EXCEEDED.withDescription("Stream closed due to inactivity")
335+
.asRuntimeException());
336+
return;
337+
}
332338
cancelStreamTimeout();
333339
try {
334340
QueryResponse response = executeQuery(request.getQuery(), con);
@@ -350,9 +356,11 @@ public void onError(Throwable throwable) {
350356

351357
@Override
352358
public void onCompleted() {
353-
cancelStreamTimeout();
354-
commit();
355-
responseObserver.onCompleted();
359+
if (isStreamAlive) {
360+
cancelStreamTimeout();
361+
commit();
362+
responseObserver.onCompleted();
363+
}
356364
}
357365

358366
private void commit() {
@@ -362,6 +370,7 @@ private void commit() {
362370

363371
private void rollback() {
364372
logger.info("Rolling back transaction");
373+
isStreamAlive = false;
365374
jdbcTemplate.rollback(con);
366375
}
367376

@@ -390,7 +399,7 @@ private ScheduledFuture<?> scheduleStreamTimeout() {
390399
logger.error(message);
391400
rollback();
392401
cancelStreamTimeout();
393-
responseObserver.onError(Status.DEADLINE_EXCEEDED.withDescription(message).asRuntimeException());
402+
responseObserver.onCompleted();
394403
}, streamTimeout.plus(DEBOUNCE_INTERVAL).toNanos(), TimeUnit.NANOSECONDS);
395404
}
396405
};

0 commit comments

Comments
 (0)