You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by rn...@apache.org on 2023/10/04 11:00:04 UTC
[couchdb] 03/09: remove volatile boolean closed
This is an automated email from the ASF dual-hosted git repository.
rnewson pushed a commit to branch nouveau-indexmanager-improvements
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit a0ed2d00c67eac058971858fb4a46aea7d85f48c
Author: Robert Newson <rn...@apache.org>
AuthorDate: Wed Oct 4 09:45:38 2023 +0100
remove volatile boolean closed
---
.../java/org/apache/couchdb/nouveau/core/Index.java | 20 +++-----------------
1 file changed, 3 insertions(+), 17 deletions(-)
diff --git a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/Index.java b/nouveau/src/main/java/org/apache/couchdb/nouveau/core/Index.java
index e6e1cad62..2db7a674b 100644
--- a/nouveau/src/main/java/org/apache/couchdb/nouveau/core/Index.java
+++ b/nouveau/src/main/java/org/apache/couchdb/nouveau/core/Index.java
@@ -41,7 +41,6 @@ public abstract class Index implements Closeable {
private long purgeSeq;
private boolean deleteOnClose = false;
private long lastCommit = now();
- private volatile boolean closed;
private final Semaphore permits = new Semaphore(Integer.MAX_VALUE);
protected Index(final long updateSeq, final long purgeSeq) {
@@ -50,14 +49,7 @@ public abstract class Index implements Closeable {
}
public final boolean tryAcquire() {
- if (permits.tryAcquire() == false) {
- return false;
- }
- if (closed) {
- permits.release();
- return false;
- }
- return true;
+ return permits.tryAcquire();
}
public final void release() {
@@ -143,16 +135,10 @@ public abstract class Index implements Closeable {
@Override
public final void close() throws IOException {
- synchronized (this) {
- closed = true;
- }
// Ensures exclusive access to the index before closing.
permits.acquireUninterruptibly(Integer.MAX_VALUE);
- try {
- doClose();
- } finally {
- permits.release(Integer.MAX_VALUE);
- }
+ doClose();
+ // Never release permits.
}
protected abstract void doClose() throws IOException;