You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by si...@apache.org on 2022/11/09 23:17:21 UTC
[pinot] branch master updated: fix flaky QueryLoggerTest (#9759)
This is an automated email from the ASF dual-hosted git repository.
siddteotia pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git
The following commit(s) were added to refs/heads/master by this push:
new 2c38d292ea fix flaky QueryLoggerTest (#9759)
2c38d292ea is described below
commit 2c38d292ea85d86a166addea9c8e85b11654217f
Author: Almog Gavra <al...@gmail.com>
AuthorDate: Wed Nov 9 15:17:13 2022 -0800
fix flaky QueryLoggerTest (#9759)
---
.../pinot/broker/querylog/QueryLoggerTest.java | 21 ++++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)
diff --git a/pinot-broker/src/test/java/org/apache/pinot/broker/querylog/QueryLoggerTest.java b/pinot-broker/src/test/java/org/apache/pinot/broker/querylog/QueryLoggerTest.java
index 797999cdf1..bf173f615b 100644
--- a/pinot-broker/src/test/java/org/apache/pinot/broker/querylog/QueryLoggerTest.java
+++ b/pinot-broker/src/test/java/org/apache/pinot/broker/querylog/QueryLoggerTest.java
@@ -190,8 +190,6 @@ public class QueryLoggerTest {
public void shouldHandleRaceConditionsWithDroppedQueries()
throws InterruptedException {
// Given:
- // first and third request get dropped
- final CountDownLatch dropLogLatch = new CountDownLatch(1);
final CountDownLatch logLatch = new CountDownLatch(1);
Mockito.when(_logRateLimiter.tryAcquire())
.thenReturn(false)
@@ -201,10 +199,12 @@ public class QueryLoggerTest {
// this one will unblock the tryAcquire, but only after
// the first thread has reached _droppedRateLimiter#tryAcquire()
logLatch.await();
- dropLogLatch.countDown();
return true;
});
+ // ensure that the tryAcquire only succeeds after three other
+ // logs have went through (see logAndDecrement)
+ final CountDownLatch dropLogLatch = new CountDownLatch(3);
Mockito.when(_droppedRateLimiter.tryAcquire())
.thenAnswer(invocation -> {
logLatch.countDown();
@@ -219,10 +219,17 @@ public class QueryLoggerTest {
// When:
try {
- executorService.submit(() -> queryLogger.log(params)); // this one gets dropped
- executorService.submit(() -> queryLogger.log(params)); // this one succeeds, but blocks
- executorService.submit(() -> queryLogger.log(params)); // this one gets dropped
- executorService.submit(() -> queryLogger.log(params)); // this one succeeds, and unblocks (2)
+ // use logAndDecrement on all invocations since any one of them could
+ // be the one that blocks
+ Runnable logAndDecrement = () -> {
+ queryLogger.log(params);
+ dropLogLatch.countDown();
+ };
+
+ executorService.submit(logAndDecrement); // 1 this one gets dropped
+ executorService.submit(logAndDecrement); // 2 this one succeeds, but blocks
+ executorService.submit(logAndDecrement); // 3 this one gets dropped
+ executorService.submit(logAndDecrement); // 4 this one succeeds, and unblocks (2)
} finally {
executorService.shutdown();
Assert.assertTrue(executorService.awaitTermination(10, TimeUnit.SECONDS), "expected shutdown to complete");
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org