Fix warnings/javadocs in sal-distributed-datastore
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / datastore / entityownership / EntityOwnershipShard.java
index db71da63e438a2e1fdb46837ae62654c1906d2b4..e0bd7f116fb8473de08b8524e90acf6063a7adfb 100644 (file)
@@ -21,13 +21,14 @@ import static org.opendaylight.controller.cluster.datastore.entityownership.Enti
 import static org.opendaylight.controller.cluster.datastore.entityownership.EntityOwnersModel.candidateNodeKey;
 import static org.opendaylight.controller.cluster.datastore.entityownership.EntityOwnersModel.candidatePath;
 import static org.opendaylight.controller.cluster.datastore.entityownership.EntityOwnersModel.entityOwnersWithCandidate;
+
 import akka.actor.ActorRef;
 import akka.actor.ActorSelection;
 import akka.actor.Cancellable;
 import akka.cluster.Cluster;
+import akka.cluster.ClusterEvent.CurrentClusterState;
 import akka.cluster.Member;
 import akka.cluster.MemberStatus;
-import akka.cluster.ClusterEvent.CurrentClusterState;
 import akka.pattern.Patterns;
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
@@ -87,10 +88,6 @@ class EntityOwnershipShard extends Shard {
     private final EntityOwnershipStatistics entityOwnershipStatistics;
     private boolean removeAllInitialCandidates = true;
 
-    private static DatastoreContext noPersistenceDatastoreContext(DatastoreContext datastoreContext) {
-        return DatastoreContext.newBuilderFrom(datastoreContext).persistent(false).build();
-    }
-
     protected EntityOwnershipShard(Builder builder) {
         super(builder);
         this.localMemberName = builder.localMemberName;
@@ -101,6 +98,10 @@ class EntityOwnershipShard extends Shard {
         this.entityOwnershipStatistics.init(getDataStore());
     }
 
+    private static DatastoreContext noPersistenceDatastoreContext(DatastoreContext datastoreContext) {
+        return DatastoreContext.newBuilderFrom(datastoreContext).persistent(false).build();
+    }
+
     @Override
     protected void onDatastoreContext(DatastoreContext context) {
         super.onDatastoreContext(noPersistenceDatastoreContext(context));
@@ -116,27 +117,27 @@ class EntityOwnershipShard extends Shard {
 
     @Override
     public void handleNonRaftCommand(final Object message) {
-        if(message instanceof RegisterCandidateLocal) {
+        if (message instanceof RegisterCandidateLocal) {
             onRegisterCandidateLocal((RegisterCandidateLocal) message);
-        } else if(message instanceof UnregisterCandidateLocal) {
-            onUnregisterCandidateLocal((UnregisterCandidateLocal)message);
-        } else if(message instanceof CandidateAdded){
+        } else if (message instanceof UnregisterCandidateLocal) {
+            onUnregisterCandidateLocal((UnregisterCandidateLocal) message);
+        } else if (message instanceof CandidateAdded) {
             onCandidateAdded((CandidateAdded) message);
-        } else if(message instanceof CandidateRemoved){
+        } else if (message instanceof CandidateRemoved) {
             onCandidateRemoved((CandidateRemoved) message);
-        } else if(message instanceof PeerDown) {
+        } else if (message instanceof PeerDown) {
             onPeerDown((PeerDown) message);
-        } else if(message instanceof PeerUp) {
+        } else if (message instanceof PeerUp) {
             onPeerUp((PeerUp) message);
-        } else if(message instanceof RegisterListenerLocal) {
-            onRegisterListenerLocal((RegisterListenerLocal)message);
-        } else if(message instanceof UnregisterListenerLocal) {
+        } else if (message instanceof RegisterListenerLocal) {
+            onRegisterListenerLocal((RegisterListenerLocal) message);
+        } else if (message instanceof UnregisterListenerLocal) {
             onUnregisterListenerLocal((UnregisterListenerLocal) message);
-        } else if(message instanceof SelectOwner) {
+        } else if (message instanceof SelectOwner) {
             onSelectOwner((SelectOwner) message);
-        } else if(message instanceof RemoveAllCandidates) {
+        } else if (message instanceof RemoveAllCandidates) {
             onRemoveAllCandidates((RemoveAllCandidates) message);
-        } else if(!commitCoordinator.handleMessage(message, this)) {
+        } else if (!commitCoordinator.handleMessage(message, this)) {
             super.handleNonRaftCommand(message);
         }
     }
@@ -151,13 +152,13 @@ class EntityOwnershipShard extends Shard {
         LOG.debug("{}: onSelectOwner: {}", persistenceId(), selectOwner);
 
         String currentOwner = getCurrentOwner(selectOwner.getEntityPath());
-        if(Strings.isNullOrEmpty(currentOwner)) {
+        if (Strings.isNullOrEmpty(currentOwner)) {
             writeNewOwner(selectOwner.getEntityPath(), newOwner(currentOwner, selectOwner.getAllCandidates(),
                     selectOwner.getOwnerSelectionStrategy()));
 
             Cancellable cancellable = entityToScheduledOwnershipTask.get(selectOwner.getEntityPath());
-            if(cancellable != null){
-                if(!cancellable.isCancelled()){
+            if (cancellable != null) {
+                if (!cancellable.isCancelled()) {
                     cancellable.cancel();
                 }
                 entityToScheduledOwnershipTask.remove(selectOwner.getEntityPath());
@@ -183,7 +184,8 @@ class EntityOwnershipShard extends Shard {
         DOMEntity entity = unregisterCandidate.getEntity();
         listenerSupport.unsetHasCandidateForEntity(entity);
 
-        YangInstanceIdentifier candidatePath = candidatePath(entity.getType(), entity.getIdentifier(), localMemberName.getName());
+        YangInstanceIdentifier candidatePath = candidatePath(entity.getType(), entity.getIdentifier(),
+                localMemberName.getName());
         commitCoordinator.commitModification(new DeleteModification(candidatePath), this);
 
         getSender().tell(SuccessReply.INSTANCE, getSelf());
@@ -224,14 +226,16 @@ class EntityOwnershipShard extends Shard {
     private void onUnregisterListenerLocal(UnregisterListenerLocal unregisterListener) {
         LOG.debug("{}: onUnregisterListenerLocal: {}", persistenceId(), unregisterListener);
 
-        listenerSupport.removeEntityOwnershipListener(unregisterListener.getEntityType(), unregisterListener.getListener());
+        listenerSupport.removeEntityOwnershipListener(unregisterListener.getEntityType(),
+                unregisterListener.getListener());
 
         getSender().tell(SuccessReply.INSTANCE, getSelf());
     }
 
     void tryCommitModifications(final BatchedModifications modifications) {
-        if(isLeader()) {
-            LOG.debug("{}: Committing BatchedModifications {} locally", persistenceId(), modifications.getTransactionID());
+        if (isLeader()) {
+            LOG.debug("{}: Committing BatchedModifications {} locally", persistenceId(),
+                    modifications.getTransactionID());
 
             // Note that it's possible the commit won't get consensus and will timeout and not be applied
             // to the state. However we don't need to retry it in that case b/c it will be committed to
@@ -243,10 +247,8 @@ class EntityOwnershipShard extends Shard {
             if (leader != null) {
                 possiblyRemoveAllInitialCandidates(leader);
 
-                if(LOG.isDebugEnabled()) {
-                    LOG.debug("{}: Sending BatchedModifications {} to leader {}", persistenceId(),
-                            modifications.getTransactionID(), leader);
-                }
+                LOG.debug("{}: Sending BatchedModifications {} to leader {}", persistenceId(),
+                        modifications.getTransactionID(), leader);
 
                 Future<Object> future = Patterns.ask(leader, modifications, TimeUnit.SECONDS.toMillis(
                         getDatastoreContext().getShardTransactionCommitTimeoutInSeconds()));
@@ -264,9 +266,9 @@ class EntityOwnershipShard extends Shard {
         // potential stale candidates we had previously registered, as it's possible a candidate may not be
         // registered by a client in the new incarnation. We have to send the RemoveAllCandidates message prior to any
         // pending registrations.
-        if(removeAllInitialCandidates && leader != null) {
+        if (removeAllInitialCandidates && leader != null) {
             removeAllInitialCandidates = false;
-            if(!isLeader()) {
+            if (!isLeader()) {
                 LOG.debug("{} - got new leader {} on startup - sending RemoveAllCandidates", persistenceId(), leader);
 
                 leader.tell(new RemoveAllCandidates(localMemberName), ActorRef.noSender());
@@ -290,8 +292,9 @@ class EntityOwnershipShard extends Shard {
                 return false;
             case IsolatedLeader:
                 return true;
+            default:
+                throw new IllegalStateException("Unsupported RAFT state " + state);
         }
-        throw new IllegalStateException("Unsupported RAFT state " + state);
     }
 
     private void notifyAllListeners() {
@@ -377,23 +380,24 @@ class EntityOwnershipShard extends Shard {
 
     private void initializeDownPeerMemberNamesFromClusterState() {
         java.util.Optional<Cluster> cluster = getRaftActorContext().getCluster();
-        if(!cluster.isPresent()) {
+        if (!cluster.isPresent()) {
             return;
         }
 
         CurrentClusterState state = cluster.get().state();
         Set<Member> unreachable = state.getUnreachable();
 
-        LOG.debug("{}: initializeDownPeerMemberNamesFromClusterState - current downPeerMemberNames: {}, unreachable: {}",
-                persistenceId(), downPeerMemberNames, unreachable);
+        LOG.debug(
+            "{}: initializeDownPeerMemberNamesFromClusterState - current downPeerMemberNames: {}, unreachable: {}",
+            persistenceId(), downPeerMemberNames, unreachable);
 
         downPeerMemberNames.clear();
-        for(Member m: unreachable) {
+        for (Member m: unreachable) {
             downPeerMemberNames.add(MemberName.forName(m.getRoles().iterator().next()));
         }
 
-        for(Member m: state.getMembers()) {
-            if(m.status() != MemberStatus.up() && m.status() != MemberStatus.weaklyUp()) {
+        for (Member m: state.getMembers()) {
+            if (m.status() != MemberStatus.up() && m.status() != MemberStatus.weaklyUp()) {
                 LOG.debug("{}: Adding down member with status {}", persistenceId(), m.status());
                 downPeerMemberNames.add(MemberName.forName(m.getRoles().iterator().next()));
             }
@@ -405,10 +409,11 @@ class EntityOwnershipShard extends Shard {
     private void onCandidateRemoved(CandidateRemoved message) {
         LOG.debug("{}: onCandidateRemoved: {}", persistenceId(), message);
 
-        if(isLeader()) {
+        if (isLeader()) {
             String currentOwner = getCurrentOwner(message.getEntityPath());
             writeNewOwner(message.getEntityPath(),
-                    newOwner(currentOwner, message.getRemainingCandidates(), getEntityOwnerElectionStrategy(message.getEntityPath())));
+                    newOwner(currentOwner, message.getRemainingCandidates(),
+                            getEntityOwnerElectionStrategy(message.getEntityPath())));
         }
     }
 
@@ -418,7 +423,7 @@ class EntityOwnershipShard extends Shard {
     }
 
     private void onCandidateAdded(CandidateAdded message) {
-        if(!isLeader()){
+        if (!isLeader()) {
             return;
         }
 
@@ -437,10 +442,10 @@ class EntityOwnershipShard extends Shard {
 
         LOG.debug("{}: Using strategy {} to select owner, currentOwner = {}", persistenceId(), strategy, currentOwner);
 
-        if(strategy.getSelectionDelayInMillis() == 0L) {
+        if (strategy.getSelectionDelayInMillis() == 0L) {
             writeNewOwner(message.getEntityPath(), newOwner(currentOwner, message.getAllCandidates(),
                     strategy));
-        } else if(message.getAllCandidates().size() == availableMembers) {
+        } else if (message.getAllCandidates().size() == availableMembers) {
             LOG.debug("{}: Received the maximum candidates requests : {} writing new owner",
                     persistenceId(), availableMembers);
             cancelOwnerSelectionTask(message.getEntityPath());
@@ -455,7 +460,7 @@ class EntityOwnershipShard extends Shard {
         LOG.info("{}: onPeerDown: {}", persistenceId(), peerDown);
 
         MemberName downMemberName = peerDown.getMemberName();
-        if(downPeerMemberNames.add(downMemberName) && isLeader()) {
+        if (downPeerMemberNames.add(downMemberName) && isLeader()) {
             // Select new owners for entities owned by the down peer and which have other candidates. For an entity for
             // which the down peer is the only candidate, we leave it as the owner and don't clear it. This is done to
             // handle the case where the peer member process is actually still running but the node is partitioned.
@@ -470,13 +475,13 @@ class EntityOwnershipShard extends Shard {
     private void selectNewOwnerForEntitiesOwnedBy(Set<String> ownedBy) {
         final BatchedModifications modifications = commitCoordinator.newBatchedModifications();
         searchForEntitiesOwnedBy(ownedBy, (entityTypeNode, entityNode) -> {
-            YangInstanceIdentifier entityPath = YangInstanceIdentifier.builder(ENTITY_TYPES_PATH).
-                    node(entityTypeNode.getIdentifier()).node(ENTITY_NODE_ID).node(entityNode.getIdentifier()).
-                    node(ENTITY_OWNER_NODE_ID).build();
+            YangInstanceIdentifier entityPath = YangInstanceIdentifier.builder(ENTITY_TYPES_PATH)
+                    .node(entityTypeNode.getIdentifier()).node(ENTITY_NODE_ID).node(entityNode.getIdentifier())
+                    .node(ENTITY_OWNER_NODE_ID).build();
             String newOwner = newOwner(getCurrentOwner(entityPath), getCandidateNames(entityNode),
                     getEntityOwnerElectionStrategy(entityPath));
 
-            if(!newOwner.isEmpty()) {
+            if (!newOwner.isEmpty()) {
                 LOG.debug("{}: Found entity {}, writing new owner {}", persistenceId(), entityPath, newOwner);
 
                 modifications.addModification(new WriteModification(entityPath,
@@ -501,7 +506,7 @@ class EntityOwnershipShard extends Shard {
         // leader change occurred.
         commitCoordinator.onStateChanged(this, isLeader());
 
-        if(isLeader()) {
+        if (isLeader()) {
             // Try to assign owners for entities that have no current owner. It's possible the peer that is now up
             // had previously registered as a candidate and was the only candidate but the owner write tx couldn't be
             // committed due to a leader change. Eg, the leader is able to successfully commit the candidate add tx but
@@ -516,7 +521,7 @@ class EntityOwnershipShard extends Shard {
     private Collection<String> getCandidateNames(MapEntryNode entity) {
         Collection<MapEntryNode> candidates = ((MapNode)entity.getChild(CANDIDATE_NODE_ID).get()).getValue();
         Collection<String> candidateNames = new ArrayList<>(candidates.size());
-        for(MapEntryNode candidate: candidates) {
+        for (MapEntryNode candidate: candidates) {
             candidateNames.add(candidate.getChild(CANDIDATE_NAME_NODE_ID).get().getValue().toString());
         }
 
@@ -530,7 +535,7 @@ class EntityOwnershipShard extends Shard {
             Optional<DataContainerChild<? extends PathArgument, ?>> possibleOwner =
                     entityNode.getChild(ENTITY_OWNER_NODE_ID);
             String currentOwner = possibleOwner.isPresent() ? possibleOwner.get().getValue().toString() : "";
-            if(ownedBy.contains(currentOwner)) {
+            if (ownedBy.contains(currentOwner)) {
                 walker.onEntity(entityTypeNode, entityNode);
             }
         });
@@ -563,18 +568,18 @@ class EntityOwnershipShard extends Shard {
 
     private void searchForEntities(EntityWalker walker) {
         Optional<NormalizedNode<?, ?>> possibleEntityTypes = getDataStore().readNode(ENTITY_TYPES_PATH);
-        if(!possibleEntityTypes.isPresent()) {
+        if (!possibleEntityTypes.isPresent()) {
             return;
         }
 
-        for(MapEntryNode entityType:  ((MapNode) possibleEntityTypes.get()).getValue()) {
+        for (MapEntryNode entityType:  ((MapNode) possibleEntityTypes.get()).getValue()) {
             Optional<DataContainerChild<?, ?>> possibleEntities = entityType.getChild(ENTITY_NODE_ID);
-            if(!possibleEntities.isPresent()) {
+            if (!possibleEntities.isPresent()) {
                 // shouldn't happen but handle anyway
                 continue;
             }
 
-            for(MapEntryNode entity:  ((MapNode) possibleEntities.get()).getValue()) {
+            for (MapEntryNode entity:  ((MapNode) possibleEntities.get()).getValue()) {
                 walker.onEntity(entityType, entity);
             }
         }
@@ -589,34 +594,31 @@ class EntityOwnershipShard extends Shard {
 
     /**
      * Schedule a new owner selection job. Cancelling any outstanding job if it has not been cancelled.
-     *
-     * @param entityPath
-     * @param allCandidates
      */
-    public void scheduleOwnerSelection(YangInstanceIdentifier entityPath, Collection<String> allCandidates,
-                                       EntityOwnerSelectionStrategy strategy){
+    private void scheduleOwnerSelection(YangInstanceIdentifier entityPath, Collection<String> allCandidates,
+                                       EntityOwnerSelectionStrategy strategy) {
         cancelOwnerSelectionTask(entityPath);
 
         LOG.debug("{}: Scheduling owner selection after {} ms", persistenceId(), strategy.getSelectionDelayInMillis());
 
         final Cancellable lastScheduledTask = context().system().scheduler().scheduleOnce(
-                FiniteDuration.apply(strategy.getSelectionDelayInMillis(), TimeUnit.MILLISECONDS)
-                , self(), new SelectOwner(entityPath, allCandidates, strategy)
-                , context().system().dispatcher(), self());
+                FiniteDuration.apply(strategy.getSelectionDelayInMillis(), TimeUnit.MILLISECONDS), self(),
+                new SelectOwner(entityPath, allCandidates, strategy), context().system().dispatcher(), self());
 
         entityToScheduledOwnershipTask.put(entityPath, lastScheduledTask);
     }
 
-    private void cancelOwnerSelectionTask(YangInstanceIdentifier entityPath){
+    private void cancelOwnerSelectionTask(YangInstanceIdentifier entityPath) {
         final Cancellable lastScheduledTask = entityToScheduledOwnershipTask.get(entityPath);
-        if(lastScheduledTask != null && !lastScheduledTask.isCancelled()){
+        if (lastScheduledTask != null && !lastScheduledTask.isCancelled()) {
             lastScheduledTask.cancel();
         }
     }
 
-    private String newOwner(String currentOwner, Collection<String> candidates, EntityOwnerSelectionStrategy ownerSelectionStrategy) {
+    private String newOwner(String currentOwner, Collection<String> candidates,
+            EntityOwnerSelectionStrategy ownerSelectionStrategy) {
         Collection<String> viableCandidates = getViableCandidates(candidates);
-        if(viableCandidates.isEmpty()){
+        if (viableCandidates.isEmpty()) {
             return "";
         }
         return ownerSelectionStrategy.newOwner(currentOwner, viableCandidates);
@@ -635,7 +637,7 @@ class EntityOwnershipShard extends Shard {
 
     private String getCurrentOwner(YangInstanceIdentifier entityId) {
         Optional<NormalizedNode<?, ?>> optionalEntityOwner = getDataStore().readNode(entityId.node(ENTITY_OWNER_QNAME));
-        if(optionalEntityOwner.isPresent()){
+        if (optionalEntityOwner.isPresent()) {
             return optionalEntityOwner.get().getValue().toString();
         }
         return null;
@@ -658,15 +660,15 @@ class EntityOwnershipShard extends Shard {
             super(EntityOwnershipShard.class);
         }
 
-        Builder localMemberName(MemberName localMemberName) {
+        Builder localMemberName(MemberName newLocalMemberName) {
             checkSealed();
-            this.localMemberName = localMemberName;
+            this.localMemberName = newLocalMemberName;
             return this;
         }
 
-        Builder ownerSelectionStrategyConfig(EntityOwnerSelectionStrategyConfig ownerSelectionStrategyConfig){
+        Builder ownerSelectionStrategyConfig(EntityOwnerSelectionStrategyConfig newOwnerSelectionStrategyConfig) {
             checkSealed();
-            this.ownerSelectionStrategyConfig = ownerSelectionStrategyConfig;
+            this.ownerSelectionStrategyConfig = newOwnerSelectionStrategyConfig;
             return this;
         }