diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/SoftMaxPerUserForQueue.java b/src/main/java/com/googlesource/gerrit/plugins/quota/SoftMaxPerUserForQueue.java
index c2d623e..827b22d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/SoftMaxPerUserForQueue.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/SoftMaxPerUserForQueue.java
@@ -42,7 +42,7 @@
   }
 
   @Override
-  public boolean tryAcquire(WorkQueue.Task<?> task) {
+  public boolean isReadyToStart(WorkQueue.Task<?> task) {
     return user(task)
         .map(
             user -> {
@@ -64,7 +64,7 @@
   }
 
   @Override
-  public void release(WorkQueue.Task<?> task) {
+  public void onStop(WorkQueue.Task<?> task) {
     user(task)
         .ifPresent(
             user ->
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/TaskQuota.java b/src/main/java/com/googlesource/gerrit/plugins/quota/TaskQuota.java
index 1e689a1..5792cc9 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/TaskQuota.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/TaskQuota.java
@@ -16,10 +16,12 @@
 
 import com.google.gerrit.server.git.WorkQueue;
 
-public interface TaskQuota {
+public interface TaskQuota extends WorkQueue.TaskParker {
   boolean isApplicable(WorkQueue.Task<?> task);
 
-  boolean tryAcquire(WorkQueue.Task<?> task);
+  @Override
+  default void onNotReadyToStart(WorkQueue.Task<?> task) {}
 
-  void release(WorkQueue.Task<?> task);
+  @Override
+  default void onStart(WorkQueue.Task<?> task) {}
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/TaskQuotaPerUserForTaskForQueue.java b/src/main/java/com/googlesource/gerrit/plugins/quota/TaskQuotaPerUserForTaskForQueue.java
index 783045f..6d7d076 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/TaskQuotaPerUserForTaskForQueue.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/TaskQuotaPerUserForTaskForQueue.java
@@ -30,12 +30,12 @@
   }
 
   @Override
-  public boolean tryAcquire(WorkQueue.Task<?> task) {
+  public boolean isReadyToStart(WorkQueue.Task<?> task) {
     return perUserTaskQuota.tryAcquire(task);
   }
 
   @Override
-  public void release(WorkQueue.Task<?> task) {
+  public void onStop(WorkQueue.Task<?> task) {
     perUserTaskQuota.release(task);
   }
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/TaskQuotaWithPermits.java b/src/main/java/com/googlesource/gerrit/plugins/quota/TaskQuotaWithPermits.java
index 8a8bc94..027ddcf 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/TaskQuotaWithPermits.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/TaskQuotaWithPermits.java
@@ -10,11 +10,11 @@
     this.permits = new Semaphore(maxPermits);
   }
 
-  public boolean tryAcquire(WorkQueue.Task<?> task) {
+  public boolean isReadyToStart(WorkQueue.Task<?> task) {
     return permits.tryAcquire();
   }
 
-  public void release(WorkQueue.Task<?> task) {
+  public void onStop(WorkQueue.Task<?> task) {
     permits.release();
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/quota/TaskQuotas.java b/src/main/java/com/googlesource/gerrit/plugins/quota/TaskQuotas.java
index a4af200..2fc703e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/quota/TaskQuotas.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/quota/TaskQuotas.java
@@ -88,27 +88,25 @@
     }
 
     List<TaskQuota> acquiredQuotas = new ArrayList<>();
+    quotasByTask.put(task.getTaskId(), acquiredQuotas);
+
     for (TaskQuota quota : quotas) {
       if (quota.isApplicable(task)) {
-        if (!quota.tryAcquire(task)) {
+        if (!quota.isReadyToStart(task)) {
           log.debug("Task [{}] will be parked due task quota rules", task);
-          acquiredQuotas.forEach(q -> q.release(task));
-          QueueStats.release(queue, 1);
           return false;
         }
         acquiredQuotas.add(quota);
       }
     }
-
-    if (!acquiredQuotas.isEmpty()) {
-      quotasByTask.put(task.getTaskId(), acquiredQuotas);
-    }
     return true;
   }
 
   @Override
   public void onNotReadyToStart(WorkQueue.Task<?> task) {
-    release(task);
+    QueueStats.release(QueueStats.Queue.fromKey(task.getQueueName()), 1);
+    Optional.ofNullable(quotasByTask.remove(task.getTaskId()))
+        .ifPresent(quotas -> quotas.forEach(q -> q.onStop(task)));
   }
 
   @Override
@@ -116,13 +114,9 @@
 
   @Override
   public void onStop(WorkQueue.Task<?> task) {
-    release(task);
-  }
-
-  private void release(WorkQueue.Task<?> task) {
     QueueStats.release(QueueStats.Queue.fromKey(task.getQueueName()), 1);
     Optional.ofNullable(quotasByTask.remove(task.getTaskId()))
-        .ifPresent(quotas -> quotas.forEach(q -> q.release(task)));
+        .ifPresent(quotas -> quotas.forEach(q -> q.onStop(task)));
   }
 
   private Optional<Project.NameKey> estimateProject(WorkQueue.Task<?> task) {
