Raise EOS unsuccessful request reporting to error
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / datastore / entityownership / DistributedEntityOwnershipService.java
index 95b01fb48b29a8c14464d0e2dae78b56f76611f2..42ac5a4e396971f49ee25f92cd91792f42f8f8b1 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.controller.cluster.datastore.entityownership;
 
+import static java.util.Objects.requireNonNull;
 import static org.opendaylight.controller.cluster.datastore.entityownership.EntityOwnersModel.CANDIDATE_NODE_ID;
 import static org.opendaylight.controller.cluster.datastore.entityownership.EntityOwnersModel.ENTITY_OWNER_NODE_ID;
 import static org.opendaylight.controller.cluster.datastore.entityownership.EntityOwnersModel.entityPath;
@@ -16,14 +17,12 @@ import akka.dispatch.OnComplete;
 import akka.pattern.Patterns;
 import akka.util.Timeout;
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Preconditions;
 import com.google.common.base.Strings;
 import java.util.Collection;
 import java.util.Optional;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.TimeUnit;
-import javax.annotation.Nonnull;
 import org.opendaylight.controller.cluster.access.concepts.MemberName;
 import org.opendaylight.controller.cluster.datastore.config.Configuration;
 import org.opendaylight.controller.cluster.datastore.config.ModuleShardConfiguration;
@@ -35,7 +34,7 @@ import org.opendaylight.controller.cluster.datastore.entityownership.selectionst
 import org.opendaylight.controller.cluster.datastore.messages.CreateShard;
 import org.opendaylight.controller.cluster.datastore.messages.GetShardDataTree;
 import org.opendaylight.controller.cluster.datastore.shardstrategy.ModuleShardStrategy;
-import org.opendaylight.controller.cluster.datastore.utils.ActorContext;
+import org.opendaylight.controller.cluster.datastore.utils.ActorUtils;
 import org.opendaylight.mdsal.eos.common.api.CandidateAlreadyRegisteredException;
 import org.opendaylight.mdsal.eos.common.api.EntityOwnershipState;
 import org.opendaylight.mdsal.eos.dom.api.DOMEntity;
@@ -69,16 +68,16 @@ public class DistributedEntityOwnershipService implements DOMEntityOwnershipServ
     private static final Timeout MESSAGE_TIMEOUT = new Timeout(1, TimeUnit.MINUTES);
 
     private final ConcurrentMap<DOMEntity, DOMEntity> registeredEntities = new ConcurrentHashMap<>();
-    private final ActorContext context;
+    private final ActorUtils context;
 
     private volatile ActorRef localEntityOwnershipShard;
     private volatile DataTree localEntityOwnershipShardDataTree;
 
-    DistributedEntityOwnershipService(final ActorContext context) {
-        this.context = Preconditions.checkNotNull(context);
+    DistributedEntityOwnershipService(final ActorUtils context) {
+        this.context = requireNonNull(context);
     }
 
-    public static DistributedEntityOwnershipService start(final ActorContext context,
+    public static DistributedEntityOwnershipService start(final ActorUtils context,
             final EntityOwnerSelectionStrategyConfig strategyConfig) {
         ActorRef shardManagerActor = context.getShardManager();
 
@@ -88,9 +87,7 @@ public class DistributedEntityOwnershipService implements DOMEntityOwnershipServ
                 "entity-owners", ENTITY_OWNERSHIP_SHARD_NAME, ModuleShardStrategy.NAME, entityOwnersMemberNames),
                         newShardBuilder(context, strategyConfig), null);
 
-        Future<Object> createFuture = context.executeOperationAsync(shardManagerActor,
-                createShard, MESSAGE_TIMEOUT);
-
+        Future<Object> createFuture = context.executeOperationAsync(shardManagerActor, createShard, MESSAGE_TIMEOUT);
         createFuture.onComplete(new OnComplete<Object>() {
             @Override
             public void onComplete(final Throwable failure, final Object response) {
@@ -111,7 +108,8 @@ public class DistributedEntityOwnershipService implements DOMEntityOwnershipServ
             @Override
             public void onComplete(final Throwable failure, final Object response) {
                 if (failure != null) {
-                    LOG.debug("Error sending message {} to {}", message, shardActor, failure);
+                    // FIXME: CONTROLLER-1904: reduce the severity to info once we have a retry mechanism
+                    LOG.error("Error sending message {} to {}", message, shardActor, failure);
                 } else {
                     LOG.debug("{} message to {} succeeded", message, shardActor);
                 }
@@ -127,6 +125,7 @@ public class DistributedEntityOwnershipService implements DOMEntityOwnershipServ
                 @Override
                 public void onComplete(final Throwable failure, final ActorRef shardActor) {
                     if (failure != null) {
+                        // FIXME: CONTROLLER-1904: reduce the severity to info once we have a retry mechanism
                         LOG.error("Failed to find local {} shard", ENTITY_OWNERSHIP_SHARD_NAME, failure);
                     } else {
                         localEntityOwnershipShard = shardActor;
@@ -143,7 +142,7 @@ public class DistributedEntityOwnershipService implements DOMEntityOwnershipServ
     @Override
     public DOMEntityOwnershipCandidateRegistration registerCandidate(final DOMEntity entity)
             throws CandidateAlreadyRegisteredException {
-        Preconditions.checkNotNull(entity, "entity cannot be null");
+        requireNonNull(entity, "entity cannot be null");
 
         if (registeredEntities.putIfAbsent(entity, entity) != null) {
             throw new CandidateAlreadyRegisteredException(entity);
@@ -167,9 +166,6 @@ public class DistributedEntityOwnershipService implements DOMEntityOwnershipServ
     @Override
     public DOMEntityOwnershipListenerRegistration registerListener(final String entityType,
             final DOMEntityOwnershipListener listener) {
-        Preconditions.checkNotNull(entityType, "entityType cannot be null");
-        Preconditions.checkNotNull(listener, "listener cannot be null");
-
         RegisterListenerLocal registerListener = new RegisterListenerLocal(listener, entityType);
 
         LOG.debug("Registering listener with message: {}", registerListener);
@@ -180,14 +176,14 @@ public class DistributedEntityOwnershipService implements DOMEntityOwnershipServ
 
     @Override
     public Optional<EntityOwnershipState> getOwnershipState(final DOMEntity forEntity) {
-        Preconditions.checkNotNull(forEntity, "forEntity cannot be null");
+        requireNonNull(forEntity, "forEntity cannot be null");
 
         DataTree dataTree = getLocalEntityOwnershipShardDataTree();
         if (dataTree == null) {
             return Optional.empty();
         }
 
-        java.util.Optional<NormalizedNode<?, ?>> entityNode = dataTree.takeSnapshot().readNode(
+        Optional<NormalizedNode<?, ?>> entityNode = dataTree.takeSnapshot().readNode(
                 entityPath(forEntity.getType(), forEntity.getIdentifier()));
         if (!entityNode.isPresent()) {
             return Optional.empty();
@@ -195,7 +191,7 @@ public class DistributedEntityOwnershipService implements DOMEntityOwnershipServ
 
         // Check if there are any candidates, if there are none we do not really have ownership state
         final MapEntryNode entity = (MapEntryNode) entityNode.get();
-        final java.util.Optional<DataContainerChild<? extends PathArgument, ?>> optionalCandidates =
+        final Optional<DataContainerChild<? extends PathArgument, ?>> optionalCandidates =
                 entity.getChild(CANDIDATE_NODE_ID);
         final boolean hasCandidates = optionalCandidates.isPresent()
                 && ((MapNode) optionalCandidates.get()).getValue().size() > 0;
@@ -204,8 +200,7 @@ public class DistributedEntityOwnershipService implements DOMEntityOwnershipServ
         }
 
         MemberName localMemberName = context.getCurrentMemberName();
-        java.util.Optional<DataContainerChild<? extends PathArgument, ?>> ownerLeaf = entity.getChild(
-            ENTITY_OWNER_NODE_ID);
+        Optional<DataContainerChild<? extends PathArgument, ?>> ownerLeaf = entity.getChild(ENTITY_OWNER_NODE_ID);
         String owner = ownerLeaf.isPresent() ? ownerLeaf.get().getValue().toString() : null;
         boolean hasOwner = !Strings.isNullOrEmpty(owner);
         boolean isOwner = hasOwner && localMemberName.getName().equals(owner);
@@ -214,7 +209,7 @@ public class DistributedEntityOwnershipService implements DOMEntityOwnershipServ
     }
 
     @Override
-    public boolean isCandidateRegistered(@Nonnull final DOMEntity entity) {
+    public boolean isCandidateRegistered(final DOMEntity entity) {
         return registeredEntities.get(entity) != null;
     }
 
@@ -248,7 +243,7 @@ public class DistributedEntityOwnershipService implements DOMEntityOwnershipServ
     public void close() {
     }
 
-    private static EntityOwnershipShard.Builder newShardBuilder(final ActorContext context,
+    private static EntityOwnershipShard.Builder newShardBuilder(final ActorUtils context,
             final EntityOwnerSelectionStrategyConfig strategyConfig) {
         return EntityOwnershipShard.newBuilder().localMemberName(context.getCurrentMemberName())
                 .ownerSelectionStrategyConfig(strategyConfig);