diff --git a/src/main/java/org/caosdb/server/database/DatabaseAccessManager.java b/src/main/java/org/caosdb/server/database/DatabaseAccessManager.java
index f12c78e31bf28799b8c8ead1c9ff311a65bb01ef..196a9fb2b4418d81ced4b174482f8f6a5dce8ce8 100644
--- a/src/main/java/org/caosdb/server/database/DatabaseAccessManager.java
+++ b/src/main/java/org/caosdb/server/database/DatabaseAccessManager.java
@@ -26,7 +26,6 @@
 package org.caosdb.server.database;
 
 import java.util.concurrent.Semaphore;
-import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.locks.ReentrantLock;
 import org.caosdb.server.database.access.Access;
 import org.caosdb.server.database.access.AccessControlAccess;
@@ -57,7 +56,7 @@ import org.caosdb.server.utils.Releasable;
 class ReadAccessSemaphore extends Semaphore implements Releasable {
 
   private static final long serialVersionUID = 4384921156838881337L;
-  private AtomicInteger acquired = new AtomicInteger(0); // how many threads have read access
+  private int acquired = 0; // how many threads have read access
   Semaphore writersBlock =
       new Semaphore(1, true); // This semaphore is blocked as long as there are any
   // unreleased read permits.
@@ -74,9 +73,10 @@ class ReadAccessSemaphore extends Semaphore implements Releasable {
   @Override
   public void acquire() throws InterruptedException {
     super.acquire(); // Protect the next few lines
-    if (this.acquired.getAndIncrement() == 0) {
+    if (this.acquired == 0) {
       this.writersBlock.acquire();
     }
+    this.acquired++;
     super.release();
   }
 
@@ -87,7 +87,9 @@ class ReadAccessSemaphore extends Semaphore implements Releasable {
    */
   @Override
   public void release() {
-    if (this.acquired.decrementAndGet() == 0) { // Last permit: release
+    this.acquired--;
+    if (this.acquired <= 0) { // Last permit: release
+      this.acquired = 0;
       if (this.writersBlock.availablePermits() <= 0) {
         this.writersBlock.release();
       }