Move FollowerInfo 07/93307/4
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 23 Oct 2020 16:07:01 +0000 (18:07 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Fri, 23 Oct 2020 17:03:02 +0000 (19:03 +0200)
DataTreeListenerInfo is strictly JMX-related, hence it should not
be lurking among our messages. Move it to cluster.mgmt.api package.

Strictly speaking this is not API-compatible, but previous location
was in implementation-specific place, so that should be fine.

JIRA: CONTROLLER-1965
Change-Id: I901887ee7f1827ba25076252bf5ffb32cf6faf45
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
opendaylight/md-sal/cds-mgmt-api/src/main/java/org/opendaylight/controller/cluster/mgmt/api/FollowerInfo.java [moved from opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/client/messages/FollowerInfo.java with 77% similarity]
opendaylight/md-sal/sal-akka-raft/pom.xml
opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActor.java
opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/client/messages/OnDemandRaftState.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardStats.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shard/ShardStatsMXBean.java

@@ -5,16 +5,20 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.controller.cluster.raft.client.messages;
+package org.opendaylight.controller.cluster.mgmt.api;
+
+import static java.util.Objects.requireNonNull;
 
 import javax.management.ConstructorParameters;
+import org.eclipse.jdt.annotation.NonNullByDefault;
 
 /**
  * A bean class containing a snapshot of information for a follower returned from GetOnDemandRaftStats.
  *
  * @author Thomas Pantelis
  */
-public class FollowerInfo {
+@NonNullByDefault
+public final class FollowerInfo {
     private final String id;
     private final long nextIndex;
     private final long matchIndex;
@@ -23,9 +27,9 @@ public class FollowerInfo {
     private final boolean isVoting;
 
     @ConstructorParameters({"id","nextIndex", "matchIndex", "active", "timeSinceLastActivity", "voting"})
-    public FollowerInfo(String id, long nextIndex, long matchIndex, boolean active, String timeSinceLastActivity,
-            boolean voting) {
-        this.id = id;
+    public FollowerInfo(final String id, final long nextIndex, final long matchIndex, final boolean active,
+            final String timeSinceLastActivity, final boolean voting) {
+        this.id = requireNonNull(id);
         this.nextIndex = nextIndex;
         this.matchIndex = matchIndex;
         this.isActive = active;
index ace6f2d67e0bdea96a1982705bf3f5dcb16d97e6..881dc82889a54df4334a5f05e53c694a14ed28df 100644 (file)
       <groupId>org.opendaylight.controller</groupId>
       <artifactId>sal-clustering-commons</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.opendaylight.controller</groupId>
+      <artifactId>cds-mgmt-api</artifactId>
+    </dependency>
     <dependency>
       <groupId>org.opendaylight.controller</groupId>
       <artifactId>repackaged-akka</artifactId>
index 7148986877330cccdbccf4b46856b7b987fb8c26..3bedc591134930fb4459e6e66068b8cef9757aae 100644 (file)
@@ -32,6 +32,7 @@ import org.opendaylight.controller.cluster.DelegatingPersistentDataProvider;
 import org.opendaylight.controller.cluster.NonPersistentDataProvider;
 import org.opendaylight.controller.cluster.PersistentDataProvider;
 import org.opendaylight.controller.cluster.common.actor.AbstractUntypedPersistentActor;
+import org.opendaylight.controller.cluster.mgmt.api.FollowerInfo;
 import org.opendaylight.controller.cluster.notifications.LeaderStateChanged;
 import org.opendaylight.controller.cluster.notifications.RoleChanged;
 import org.opendaylight.controller.cluster.raft.base.messages.ApplyState;
@@ -46,7 +47,6 @@ import org.opendaylight.controller.cluster.raft.behaviors.Follower;
 import org.opendaylight.controller.cluster.raft.behaviors.RaftActorBehavior;
 import org.opendaylight.controller.cluster.raft.client.messages.FindLeader;
 import org.opendaylight.controller.cluster.raft.client.messages.FindLeaderReply;
-import org.opendaylight.controller.cluster.raft.client.messages.FollowerInfo;
 import org.opendaylight.controller.cluster.raft.client.messages.GetOnDemandRaftState;
 import org.opendaylight.controller.cluster.raft.client.messages.OnDemandRaftState;
 import org.opendaylight.controller.cluster.raft.client.messages.Shutdown;
index 7ded55b3ce91686d93f26d1dafe9f15c2585a1c3..f6e673bffdaf449ab2f16ad11ab858cfd7c2bcee 100644 (file)
@@ -12,6 +12,7 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.controller.cluster.mgmt.api.FollowerInfo;
 
 /**
  * The response to a GetOnDemandRaftState message.
index 7a2831b3291d77c37641edd1d7972105ac7d3338..d150b3afe5c054476a6f83cf9534c684fd94ef0f 100644 (file)
@@ -17,8 +17,8 @@ import java.util.concurrent.atomic.AtomicLong;
 import org.checkerframework.checker.lock.qual.GuardedBy;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.controller.cluster.datastore.jmx.mbeans.shard.ShardStatsMXBean;
+import org.opendaylight.controller.cluster.mgmt.api.FollowerInfo;
 import org.opendaylight.controller.cluster.raft.base.messages.InitiateCaptureSnapshot;
-import org.opendaylight.controller.cluster.raft.client.messages.FollowerInfo;
 import org.opendaylight.controller.cluster.raft.client.messages.OnDemandRaftState;
 import org.opendaylight.controller.md.sal.common.util.jmx.AbstractMXBean;
 
index ac76891b69b70ff80d05d613ff477f57d61754e5..4e5130c0d5816d93b1827eeb4f1d0f5ca927fe3b 100644 (file)
@@ -9,7 +9,7 @@
 package org.opendaylight.controller.cluster.datastore.jmx.mbeans.shard;
 
 import java.util.List;
-import org.opendaylight.controller.cluster.raft.client.messages.FollowerInfo;
+import org.opendaylight.controller.cluster.mgmt.api.FollowerInfo;
 
 /**
  * MXBean interface for shard stats.