X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fentityownership%2FEntityOwnershipListenerSupport.java;h=0c4a646efef47b84cd22d37c24a50b5608c32cff;hb=refs%2Fchanges%2F28%2F81128%2F25;hp=84a58d95943bcd3405db83b5199c08a1acfc0d5b;hpb=5e7cf2452ef634dc934a3ea5a2dd95059fbab68c;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnershipListenerSupport.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnershipListenerSupport.java index 84a58d9594..0c4a646efe 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnershipListenerSupport.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnershipListenerSupport.java @@ -19,8 +19,8 @@ import java.util.Map; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.stream.Collectors; -import javax.annotation.concurrent.GuardedBy; -import javax.annotation.concurrent.ThreadSafe; +import org.checkerframework.checker.lock.qual.GuardedBy; +import org.checkerframework.checker.lock.qual.Holding; import org.opendaylight.mdsal.eos.common.api.EntityOwnershipChangeState; import org.opendaylight.mdsal.eos.dom.api.DOMEntity; import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipChange; @@ -29,11 +29,11 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * Manages EntityOwnershipListener registrations and notifications for the EntityOwnershipShard. + * Manages EntityOwnershipListener registrations and notifications for the EntityOwnershipShard. This class is + * thread-safe. * * @author Thomas Pantelis */ -@ThreadSafe class EntityOwnershipListenerSupport extends EntityOwnershipChangePublisher { private static final Logger LOG = LoggerFactory.getLogger(EntityOwnershipListenerSupport.class); @@ -49,11 +49,12 @@ class EntityOwnershipListenerSupport extends EntityOwnershipChangePublisher { private volatile boolean inJeopardy = false; - EntityOwnershipListenerSupport(ActorContext actorContext, String logId) { + EntityOwnershipListenerSupport(final ActorContext actorContext, final String logId) { this.actorContext = actorContext; this.logId = logId; } + @Override String getLogId() { return logId; } @@ -64,13 +65,14 @@ class EntityOwnershipListenerSupport extends EntityOwnershipChangePublisher { * @param inJeopardy new value of the in-jeopardy flag * @return Previous value of the flag. */ + @SuppressWarnings("checkstyle:hiddenField") boolean setInJeopardy(final boolean inJeopardy) { final boolean wasInJeopardy = this.inJeopardy; this.inJeopardy = inJeopardy; return wasInJeopardy; } - void addEntityOwnershipListener(String entityType, DOMEntityOwnershipListener listener) { + void addEntityOwnershipListener(final String entityType, final DOMEntityOwnershipListener listener) { LOG.debug("{}: Adding EntityOwnershipListener {} for entity type {}", logId, listener, entityType); listenerLock.writeLock().lock(); @@ -88,7 +90,7 @@ class EntityOwnershipListenerSupport extends EntityOwnershipChangePublisher { } } - void removeEntityOwnershipListener(String entityType, DOMEntityOwnershipListener listener) { + void removeEntityOwnershipListener(final String entityType, final DOMEntityOwnershipListener listener) { LOG.debug("{}: Removing EntityOwnershipListener {} for entity type {}", logId, listener, entityType); listenerLock.writeLock().lock(); @@ -114,7 +116,8 @@ class EntityOwnershipListenerSupport extends EntityOwnershipChangePublisher { } @Override - void notifyEntityOwnershipListeners(DOMEntity entity, boolean wasOwner, boolean isOwner, boolean hasOwner) { + void notifyEntityOwnershipListeners(final DOMEntity entity, final boolean wasOwner, final boolean isOwner, + final boolean hasOwner) { listenerLock.readLock().lock(); try { Collection listeners = entityTypeListenerMap.get(entity.getType()); @@ -127,8 +130,8 @@ class EntityOwnershipListenerSupport extends EntityOwnershipChangePublisher { } } - void notifyEntityOwnershipListener(DOMEntity entity, boolean wasOwner, boolean isOwner, boolean hasOwner, - DOMEntityOwnershipListener listener) { + void notifyEntityOwnershipListener(final DOMEntity entity, final boolean wasOwner, final boolean isOwner, + final boolean hasOwner, final DOMEntityOwnershipListener listener) { listenerLock.readLock().lock(); try { notifyListeners(entity, wasOwner, isOwner, hasOwner, ImmutableList.of(listenerActorMap.get(listener))); @@ -137,9 +140,9 @@ class EntityOwnershipListenerSupport extends EntityOwnershipChangePublisher { } } - @GuardedBy("listenerLock") - private void notifyListeners(DOMEntity entity, boolean wasOwner, boolean isOwner, boolean hasOwner, - Collection listenerEntries) { + @Holding("listenerLock") + private void notifyListeners(final DOMEntity entity, final boolean wasOwner, final boolean isOwner, + final boolean hasOwner, final Collection listenerEntries) { DOMEntityOwnershipChange changed = new DOMEntityOwnershipChange(entity, EntityOwnershipChangeState.from(wasOwner, isOwner, hasOwner), inJeopardy); for (ListenerActorRefEntry entry: listenerEntries) {