Skip to content

Commit f9f228b

Browse files
authored
Merge pull request #17 from topcoder-platform/PLAT-3536
Plat 3536
2 parents bc55d9e + b6893be commit f9f228b

File tree

2 files changed

+8
-5
lines changed

2 files changed

+8
-5
lines changed

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.topcoder.dal.util.StreamJdbcTemplate;
88
import com.topcoder.dal.util.ParameterizedExpression;
99

10+
import io.grpc.Status;
1011
import io.grpc.stub.StreamObserver;
1112
import jdk.jshell.spi.ExecutionControl;
1213
import net.devh.boot.grpc.server.service.GrpcService;
@@ -317,6 +318,7 @@ public void query(QueryRequest request, StreamObserver<QueryResponse> responseOb
317318

318319
@Override
319320
public StreamObserver<QueryRequest> streamQuery(StreamObserver<QueryResponse> responseObserver) {
321+
logger.info("Stream started");
320322
return new StreamObserver<>() {
321323
Connection con = jdbcTemplate.getConnection();
322324
private final Duration streamTimeout = Duration.ofSeconds(20);
@@ -327,10 +329,11 @@ public StreamObserver<QueryRequest> streamQuery(StreamObserver<QueryResponse> re
327329

328330
@Override
329331
public void onNext(QueryRequest request) {
330-
resetStreamTimeout();
332+
cancelStreamTimeout();
331333
try {
332334
QueryResponse response = executeQuery(request.getQuery(), con);
333335
responseObserver.onNext(response);
336+
resetStreamTimeout();
334337
} catch (Exception e) {
335338
rollback();
336339
cancelStreamTimeout();
@@ -377,7 +380,7 @@ private boolean debounce() {
377380

378381
private boolean cancelStreamTimeout() {
379382
ScheduledFuture<?> currentFuture = streamTimeoutFuture.get();
380-
return currentFuture == null || currentFuture.cancel(false);
383+
return currentFuture == null || currentFuture.isCancelled() || currentFuture.cancel(false);
381384
}
382385

383386
private ScheduledFuture<?> scheduleStreamTimeout() {
@@ -387,7 +390,7 @@ private ScheduledFuture<?> scheduleStreamTimeout() {
387390
logger.error(message);
388391
rollback();
389392
cancelStreamTimeout();
390-
responseObserver.onCompleted();
393+
responseObserver.onError(Status.DEADLINE_EXCEEDED.withDescription(message).asRuntimeException());
391394
}, streamTimeout.plus(DEBOUNCE_INTERVAL).toNanos(), TimeUnit.NANOSECONDS);
392395
}
393396
};
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
spring.datasource.url=${DB_URL:jdbc:informix-sqli://localhost:2021/informixoltp:INFORMIXSERVER=informixoltp_tcp}
22
spring.datasource.username=${DB_USERNAME:informix}
33
spring.datasource.password=${DB_PASSWORD:1nf0rm1x}
4-
spring.datasource.hikari.connectionTimeout=20000
4+
spring.datasource.hikari.connectionTimeout=30000
55
spring.datasource.hikari.maximumPoolSize=20
6-
spring.datasource.hikari.leak-detection-threshold: 60000
6+
spring.datasource.hikari.leak-detection-threshold=90000
77
grpc.server.port=9090
88
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %X{AWS-XRAY-TRACE-ID} [%p] %M - %m%n

0 commit comments

Comments
 (0)