package org.opendaylight.controller.cluster.datastore.jmx.mbeans.shard;
+import java.text.SimpleDateFormat;
+import java.util.Date;
import java.util.List;
-import java.util.concurrent.ExecutorService;
import java.util.concurrent.atomic.AtomicLong;
-
import org.opendaylight.controller.md.sal.common.util.jmx.AbstractMXBean;
import org.opendaylight.controller.md.sal.common.util.jmx.QueuedNotificationManagerMXBeanImpl;
import org.opendaylight.controller.md.sal.common.util.jmx.ThreadExecutorStats;
import org.opendaylight.controller.md.sal.common.util.jmx.ThreadExecutorStatsMXBeanImpl;
+import org.opendaylight.controller.md.sal.dom.store.impl.InMemoryDOMDataStore;
import org.opendaylight.yangtools.util.concurrent.ListenerNotificationQueueStats;
import org.opendaylight.yangtools.util.concurrent.QueuedNotificationManager;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
/**
* Maintains statistics for a shard.
*
public class ShardStats extends AbstractMXBean implements ShardStatsMXBean {
public static String JMX_CATEGORY_SHARD = "Shards";
- private final AtomicLong committedTransactionsCount = new AtomicLong();
+ private long committedTransactionsCount;
- private final AtomicLong readOnlyTransactionCount = new AtomicLong();
+ private long readOnlyTransactionCount;
- private final AtomicLong writeOnlyTransactionCount = new AtomicLong();
+ private long writeOnlyTransactionCount;
- private final AtomicLong readWriteTransactionCount = new AtomicLong();
+ private long readWriteTransactionCount;
private String leader;
private String raftState;
- private volatile long lastLogTerm = -1L;
+ private long lastLogTerm = -1L;
- private volatile long lastLogIndex = -1L;
+ private long lastLogIndex = -1L;
- private volatile long currentTerm = -1L;
+ private long currentTerm = -1L;
- private volatile long commitIndex = -1L;
+ private long commitIndex = -1L;
- private volatile long lastApplied = -1L;
+ private long lastApplied = -1L;
- private volatile long lastCommittedTransactionTime;
+ private long lastCommittedTransactionTime;
- private final AtomicLong failedTransactionsCount = new AtomicLong();
+ private long failedTransactionsCount;
private final AtomicLong failedReadTransactionsCount = new AtomicLong();
- private final AtomicLong abortTransactionsCount = new AtomicLong();
+ private long abortTransactionsCount;
private ThreadExecutorStatsMXBeanImpl notificationExecutorStatsBean;
- private ThreadExecutorStatsMXBeanImpl dataStoreExecutorStatsBean;
-
private QueuedNotificationManagerMXBeanImpl notificationManagerStatsBean;
+ private long dataSize = 0;
+
private final SimpleDateFormat sdf =
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
- public ShardStats(String shardName, String mxBeanType) {
- super(shardName, mxBeanType, JMX_CATEGORY_SHARD);
- }
+ private boolean followerInitialSyncStatus = false;
- public void setDataStoreExecutor(ExecutorService dsExecutor) {
- this.dataStoreExecutorStatsBean = new ThreadExecutorStatsMXBeanImpl(dsExecutor,
- "notification-executor", getMBeanType(), getMBeanCategory());
+ public ShardStats(final String shardName, final String mxBeanType) {
+ super(shardName, mxBeanType, JMX_CATEGORY_SHARD);
}
- public void setNotificationManager(QueuedNotificationManager<?, ?> manager) {
+ public void setNotificationManager(final QueuedNotificationManager<?, ?> manager) {
this.notificationManagerStatsBean = new QueuedNotificationManagerMXBeanImpl(manager,
"notification-manager", getMBeanType(), getMBeanCategory());
- this.notificationExecutorStatsBean = new ThreadExecutorStatsMXBeanImpl(manager.getExecutor(),
- "data-store-executor", getMBeanType(), getMBeanCategory());
+ this.notificationExecutorStatsBean = ThreadExecutorStatsMXBeanImpl.create(manager.getExecutor());
}
@Override
@Override
public long getCommittedTransactionsCount() {
- return committedTransactionsCount.get();
+ return committedTransactionsCount;
}
@Override
@Override
public long getReadOnlyTransactionCount() {
- return readOnlyTransactionCount.get();
+ return readOnlyTransactionCount;
}
@Override
public long getWriteOnlyTransactionCount() {
- return writeOnlyTransactionCount.get();
+ return writeOnlyTransactionCount;
}
@Override
public long getReadWriteTransactionCount() {
- return readWriteTransactionCount.get();
+ return readWriteTransactionCount;
}
@Override
@Override
public long getFailedTransactionsCount() {
- return failedTransactionsCount.get();
+ return failedTransactionsCount;
}
@Override
@Override
public long getAbortTransactionsCount() {
- return abortTransactionsCount.get();
+ return abortTransactionsCount;
}
public long incrementCommittedTransactionCount() {
- return committedTransactionsCount.incrementAndGet();
+ return ++committedTransactionsCount;
}
public long incrementReadOnlyTransactionCount() {
- return readOnlyTransactionCount.incrementAndGet();
+ return ++readOnlyTransactionCount;
}
public long incrementWriteOnlyTransactionCount() {
- return writeOnlyTransactionCount.incrementAndGet();
+ return ++writeOnlyTransactionCount;
}
public long incrementReadWriteTransactionCount() {
- return readWriteTransactionCount.incrementAndGet();
+ return ++readWriteTransactionCount;
}
public long incrementFailedTransactionsCount() {
- return failedTransactionsCount.incrementAndGet();
+ return ++failedTransactionsCount;
}
public long incrementFailedReadTransactionsCount() {
public long incrementAbortTransactionsCount ()
{
- return abortTransactionsCount.incrementAndGet();
+ return ++abortTransactionsCount;
}
- public void setLeader(String leader) {
+ public void setLeader(final String leader) {
this.leader = leader;
}
- public void setRaftState(String raftState) {
+ public void setRaftState(final String raftState) {
this.raftState = raftState;
}
- public void setLastLogTerm(long lastLogTerm) {
+ public void setLastLogTerm(final long lastLogTerm) {
this.lastLogTerm = lastLogTerm;
}
- public void setLastLogIndex(long lastLogIndex) {
+ public void setLastLogIndex(final long lastLogIndex) {
this.lastLogIndex = lastLogIndex;
}
- public void setCurrentTerm(long currentTerm) {
+ public void setCurrentTerm(final long currentTerm) {
this.currentTerm = currentTerm;
}
- public void setCommitIndex(long commitIndex) {
+ public void setCommitIndex(final long commitIndex) {
this.commitIndex = commitIndex;
}
- public void setLastApplied(long lastApplied) {
+ public void setLastApplied(final long lastApplied) {
this.lastApplied = lastApplied;
}
- public void setLastCommittedTransactionTime(long lastCommittedTransactionTime) {
+ public void setLastCommittedTransactionTime(final long lastCommittedTransactionTime) {
this.lastCommittedTransactionTime = lastCommittedTransactionTime;
}
+ public void setInMemoryJournalDataSize(long dataSize){
+ this.dataSize = dataSize;
+ }
+
+ @Override
+ public long getInMemoryJournalDataSize(){
+ return dataSize;
+ }
+
@Override
public ThreadExecutorStats getDataStoreExecutorStats() {
- return dataStoreExecutorStatsBean.toThreadExecutorStats();
+ // FIXME: this particular thing does not work, as it really is DS-specific
+ return null;
}
@Override
*/
@Override
public void resetTransactionCounters(){
- committedTransactionsCount.set(0);
+ committedTransactionsCount = 0;
- readOnlyTransactionCount.set(0);
+ readOnlyTransactionCount = 0;
- writeOnlyTransactionCount.set(0);
+ writeOnlyTransactionCount = 0;
- readWriteTransactionCount.set(0);
+ readWriteTransactionCount = 0;
lastCommittedTransactionTime = 0;
- failedTransactionsCount.set(0);
+ failedTransactionsCount = 0;
failedReadTransactionsCount.set(0);
- abortTransactionsCount.set(0);
+ abortTransactionsCount = 0;
+
+ }
+ public void setDataStore(final InMemoryDOMDataStore store) {
+ setNotificationManager(store.getDataChangeListenerNotificationManager());
+ }
+
+ public void setFollowerInitialSyncStatus(boolean followerInitialSyncStatus) {
+ this.followerInitialSyncStatus = followerInitialSyncStatus;
+ }
+
+ @Override
+ public boolean getFollowerInitialSyncStatus() {
+ return followerInitialSyncStatus;
}
}