diff --git a/driver/src/main/java/oracle/nosql/driver/http/Client.java b/driver/src/main/java/oracle/nosql/driver/http/Client.java index 44f91068..700d1c91 100644 --- a/driver/src/main/java/oracle/nosql/driver/http/Client.java +++ b/driver/src/main/java/oracle/nosql/driver/http/Client.java @@ -515,6 +515,10 @@ public Result execute(Request kvRequest) { break; } + /* update iteration timeout in case limiters slept for some time */ + thisTime = System.currentTimeMillis(); + thisIterationTimeoutMs = timeoutMs - (int)(thisTime - startTime); + final String authString = authProvider.getAuthorizationString(kvRequest); authProvider.validateAuthString(authString); @@ -566,6 +570,9 @@ public Result execute(Request kvRequest) { */ kvRequest.setCheckRequestSize(false); + /* update timeout in request to match this iteration timeout */ + kvRequest.setTimeoutInternal(thisIterationTimeoutMs); + serialVersionUsed = writeContent(buffer, kvRequest); /* diff --git a/driver/src/test/java/oracle/nosql/driver/QueryTest.java b/driver/src/test/java/oracle/nosql/driver/QueryTest.java index 412ab09e..7dee95c9 100644 --- a/driver/src/test/java/oracle/nosql/driver/QueryTest.java +++ b/driver/src/test/java/oracle/nosql/driver/QueryTest.java @@ -1710,7 +1710,7 @@ public void testLowThroughput() { if (onprem == false) { assumeKVVersion("testLowThroughput", 21, 3, 1); } - final int numRows = 500; + final int numRows = 30; String name = "testThroughput"; String createTableDdl = "CREATE TABLE " + name + @@ -1719,7 +1719,7 @@ public void testLowThroughput() { tableOperation(handle, createTableDdl, new TableLimits(2, 20000, 1)); MapValue value = new MapValue() - .put("bin", new byte[10000]) + .put("bin", new byte[3000]) .put("json", "abc"); PutRequest putReq = new PutRequest().setTableName(name); @@ -1732,7 +1732,9 @@ public void testLowThroughput() { } /* - * Ensure that this query completes + * Ensure that this query completes. + * 30 rows of 3K+ each = ~90KB. + * at 2RUs/sec, that's about 45 seconds. */ try (QueryRequest queryReq = newQueryRequest()) { queryReq.setStatement("select * from " + name);