This is an automated email from the ASF dual-hosted git repository. reta pushed a commit to branch 3.3.x-fixes in repository https://gitbox.apache.org/repos/asf/cxf.git
commit 0a14035ebde7daa4692d13b0103d38900d450ea5 Author: reta <[email protected]> AuthorDate: Fri Dec 25 14:55:23 2020 -0500 Attempt to fix flaky org.apache.cxf.workqueue.AutomaticWorkQueueTest.testEnqueueImmediate test case (cherry picked from commit a8de3c584869aeec3a1427fb53a4b7f843c892d4) --- .../java/org/apache/cxf/workqueue/AutomaticWorkQueueImpl.java | 8 ++++---- .../java/org/apache/cxf/workqueue/AutomaticWorkQueueTest.java | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/apache/cxf/workqueue/AutomaticWorkQueueImpl.java b/core/src/main/java/org/apache/cxf/workqueue/AutomaticWorkQueueImpl.java index 252386a..5f8a0ce 100644 --- a/core/src/main/java/org/apache/cxf/workqueue/AutomaticWorkQueueImpl.java +++ b/core/src/main/java/org/apache/cxf/workqueue/AutomaticWorkQueueImpl.java @@ -63,7 +63,7 @@ public class AutomaticWorkQueueImpl implements AutomaticWorkQueue { int lowWaterMark; int highWaterMark; long dequeueTimeout; - volatile int approxThreadCount; + AtomicInteger approxThreadCount = new AtomicInteger(); ThreadPoolExecutor executor; Method addWorkerMethod; @@ -340,11 +340,11 @@ public class AutomaticWorkQueueImpl implements AutomaticWorkQueue { } Runnable wrapped = new Runnable() { public void run() { - ++approxThreadCount; + approxThreadCount.incrementAndGet(); try { r.run(); } finally { - --approxThreadCount; + approxThreadCount.decrementAndGet(); } } }; @@ -426,7 +426,7 @@ public class AutomaticWorkQueueImpl implements AutomaticWorkQueue { ex.execute(r); if (addWorkerMethod != null && !ex.getQueue().isEmpty() - && this.approxThreadCount < highWaterMark + && this.approxThreadCount.get() < highWaterMark && addThreadLock.tryLock()) { try { mainLock.lock(); diff --git a/core/src/test/java/org/apache/cxf/workqueue/AutomaticWorkQueueTest.java b/core/src/test/java/org/apache/cxf/workqueue/AutomaticWorkQueueTest.java index 76d30fc..c13698c 100644 --- a/core/src/test/java/org/apache/cxf/workqueue/AutomaticWorkQueueTest.java +++ b/core/src/test/java/org/apache/cxf/workqueue/AutomaticWorkQueueTest.java @@ -191,7 +191,9 @@ public class AutomaticWorkQueueTest { Thread.sleep(100L); numRun = numRunning(workItems); } + numRun = numRunning(workItems); + assertEquals(0, workqueue.getSize()); assertEquals(DEFAULT_HIGH_WATER_MARK, numRun); for (int i = 0; i < DEFAULT_MAX_QUEUE_SIZE; i++) {
