From 1e4f078d5d3b6f28c7c8a1b0cd364b643660f926 Mon Sep 17 00:00:00 2001 From: Brett Wooldridge Date: Sat, 20 Jun 2015 14:58:29 +0900 Subject: [PATCH] Remove code meant to handle what is not believed to be a non-existent race condition. --- .../com/zaxxer/hikari/util/ConcurrentBag.java | 31 ++++++++----------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/zaxxer/hikari/util/ConcurrentBag.java b/src/main/java/com/zaxxer/hikari/util/ConcurrentBag.java index 72385dfc..d78b89c6 100644 --- a/src/main/java/com/zaxxer/hikari/util/ConcurrentBag.java +++ b/src/main/java/com/zaxxer/hikari/util/ConcurrentBag.java @@ -124,27 +124,22 @@ public class ConcurrentBag implements AutoCloseab final long startScan = System.nanoTime(); final long originTimeout = timeout; long startSeq; - try { + do { do { - do { - startSeq = synchronizer.currentSequence(); - for (final T bagEntry : sharedList) { - if (bagEntry.state().compareAndSet(STATE_NOT_IN_USE, STATE_IN_USE)) { - return bagEntry; - } + startSeq = synchronizer.currentSequence(); + for (final T bagEntry : sharedList) { + if (bagEntry.state().compareAndSet(STATE_NOT_IN_USE, STATE_IN_USE)) { + return bagEntry; } - } while (startSeq < synchronizer.currentSequence()); - - if (addItemFuture == null || addItemFuture.isDone()) { - addItemFuture = listener.addBagItem(); } - - timeout = originTimeout - (System.nanoTime() - startScan); - } while (timeout > 1000L && synchronizer.waitUntilSequenceExceeded(startSeq, timeout)); - } - finally { - synchronizer.signal(); - } + } while (startSeq < synchronizer.currentSequence()); + + if (addItemFuture == null || addItemFuture.isDone()) { + addItemFuture = listener.addBagItem(); + } + + timeout = originTimeout - (System.nanoTime() - startScan); + } while (timeout > 1000L && synchronizer.waitUntilSequenceExceeded(startSeq, timeout)); return null; }