package org.opendaylight.controller.cluster.datastore.jmx.mbeans.shard;
+import akka.actor.ActorRef;
import akka.pattern.Patterns;
import akka.util.Timeout;
+import com.google.common.base.Joiner;
import com.google.common.base.Stopwatch;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
import org.opendaylight.controller.cluster.datastore.Shard;
+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.GetOnDemandRaftState;
import org.opendaylight.controller.cluster.raft.client.messages.OnDemandRaftState;
public String getVotedFor() {
return getOnDemandRaftState().getVotedFor();
}
+ @Override
+ public boolean isVoting() {
+ return getOnDemandRaftState().isVoting();
+ }
+
+ @Override
+ public String getPeerVotingStates() {
+ return toStringMap(getOnDemandRaftState().getPeerVotingStates());
+ }
@Override
public boolean isSnapshotCaptureInitiated() {
@Override
public String getPeerAddresses() {
- StringBuilder builder = new StringBuilder();
- int i = 0;
- for(Map.Entry<String, String> e: getOnDemandRaftState().getPeerAddresses().entrySet()) {
- if(i++ > 0) {
- builder.append(", ");
- }
-
- builder.append(e.getKey()).append(": ").append(e.getValue());
- }
+ return toStringMap(getOnDemandRaftState().getPeerAddresses());
+ }
- return builder.toString();
+ private static String toStringMap(Map<?, ?> map) {
+ return Joiner.on(", ").withKeyValueSeparator(": ").join(map);
}
@Override
public int getPendingTxCommitQueueSize() {
return shard.getPendingTxCommitQueueSize();
}
+
+ @Override
+ public int getTxCohortCacheSize() {
+ return shard.getCohortCacheSize();
+ }
+
+ @Override
+ public void captureSnapshot() {
+ if(shard != null) {
+ shard.getSelf().tell(new InitiateCaptureSnapshot(), ActorRef.noSender());
+ }
+ }
}