Skip to content

Commit a1cfd6f

Browse files
committed
Change in QueueManager to release only needed permits.
1 parent 2df9d68 commit a1cfd6f

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

‎src/main/java/io/api/etherscan/manager/impl/QueueManager.java

+11-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
import io.api.etherscan.manager.IQueueManager;
44

5-
import java.util.concurrent.*;
5+
import java.util.concurrent.Executors;
6+
import java.util.concurrent.ScheduledExecutorService;
7+
import java.util.concurrent.Semaphore;
8+
import java.util.concurrent.TimeUnit;
69

710
/**
811
* Queue Semaphore implementation with size and reset time as params
@@ -54,7 +57,13 @@ public void takeTurn() {
5457
}
5558

5659
private Runnable releaseLocks(int toRelease) {
57-
return () -> semaphore.release(toRelease);
60+
return () -> {
61+
int availablePermits = semaphore.availablePermits();
62+
int neededPermits = toRelease - availablePermits;
63+
if (neededPermits > 0) {
64+
semaphore.release(neededPermits);
65+
}
66+
};
5867
}
5968

6069
@Override

0 commit comments

Comments
 (0)