Code Review
/
controller.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
BUG-5280: fix compilation after unrebased merge
[controller.git]
/
opendaylight
/
md-sal
/
sal-distributed-datastore
/
src
/
main
/
java
/
org
/
opendaylight
/
controller
/
cluster
/
datastore
/
OperationLimiter.java
diff --git
a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/OperationLimiter.java
b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/OperationLimiter.java
index b42230971b2fe276ea5bc8d39f25a3d2f455de83..ad26d0a50b4d19dccc3afee4086ea6fb16c86726 100644
(file)
--- a/
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/OperationLimiter.java
+++ b/
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/OperationLimiter.java
@@
-12,7
+12,7
@@
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
import com.google.common.base.Preconditions;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
-import org.opendaylight.controller.cluster.
datastore.identifier
s.TransactionIdentifier;
+import org.opendaylight.controller.cluster.
access.concept
s.TransactionIdentifier;
import org.opendaylight.controller.cluster.datastore.messages.BatchedModificationsReply;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.opendaylight.controller.cluster.datastore.messages.BatchedModificationsReply;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@
-26,14
+26,16
@@
public class OperationLimiter extends OnComplete<Object> {
private final TransactionIdentifier identifier;
private final long acquireTimeout;
private final Semaphore semaphore;
private final TransactionIdentifier identifier;
private final long acquireTimeout;
private final Semaphore semaphore;
+ private final int maxPermits;
- OperationLimiter(final TransactionIdentifier identifier, final int maxPermits, final
int
acquireTimeoutSeconds) {
+ OperationLimiter(final TransactionIdentifier identifier, final int maxPermits, final
long
acquireTimeoutSeconds) {
this.identifier = Preconditions.checkNotNull(identifier);
Preconditions.checkArgument(acquireTimeoutSeconds >= 0);
this.acquireTimeout = TimeUnit.SECONDS.toNanos(acquireTimeoutSeconds);
Preconditions.checkArgument(maxPermits >= 0);
this.identifier = Preconditions.checkNotNull(identifier);
Preconditions.checkArgument(acquireTimeoutSeconds >= 0);
this.acquireTimeout = TimeUnit.SECONDS.toNanos(acquireTimeoutSeconds);
Preconditions.checkArgument(maxPermits >= 0);
+ this.maxPermits = maxPermits;
this.semaphore = new Semaphore(maxPermits);
}
this.semaphore = new Semaphore(maxPermits);
}
@@
-41,7
+43,7
@@
public class OperationLimiter extends OnComplete<Object> {
acquire(1);
}
acquire(1);
}
-
private
void acquire(final int acquirePermits) {
+ void acquire(final int acquirePermits) {
try {
if (!semaphore.tryAcquire(acquirePermits, acquireTimeout, TimeUnit.NANOSECONDS)) {
LOG.warn("Failed to acquire operation permit for transaction {}", identifier);
try {
if (!semaphore.tryAcquire(acquirePermits, acquireTimeout, TimeUnit.NANOSECONDS)) {
LOG.warn("Failed to acquire operation permit for transaction {}", identifier);
@@
-55,10
+57,6
@@
public class OperationLimiter extends OnComplete<Object> {
}
}
}
}
- void release() {
- this.semaphore.release();
- }
-
@Override
public void onComplete(final Throwable throwable, final Object message) {
if (message instanceof BatchedModificationsReply) {
@Override
public void onComplete(final Throwable throwable, final Object message) {
if (message instanceof BatchedModificationsReply) {
@@
-73,7
+71,14
@@
public class OperationLimiter extends OnComplete<Object> {
}
@VisibleForTesting
}
@VisibleForTesting
- Semaphore getSemaphore() {
- return semaphore;
+ int availablePermits(){
+ return semaphore.availablePermits();
+ }
+
+ /**
+ * Release all the permits
+ */
+ public void releaseAll() {
+ this.semaphore.release(maxPermits-availablePermits());
}
}
}
}