Code Review
/
controller.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
BUG-8941: enqueue purges once ask-based transactions resolve
[controller.git]
/
opendaylight
/
md-sal
/
sal-distributed-datastore
/
src
/
main
/
java
/
org
/
opendaylight
/
controller
/
cluster
/
datastore
/
jmx
/
mbeans
/
shard
/
ShardStats.java
diff --git
a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shard/ShardStats.java
b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shard/ShardStats.java
index b01eb099a5707975515c00d7c661725ff8f16400..02c838a3c6d900bc54162d913a3cc908f509043a 100644
(file)
--- a/
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shard/ShardStats.java
+++ b/
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shard/ShardStats.java
@@
-12,15
+12,17
@@
import akka.actor.ActorRef;
import akka.pattern.Patterns;
import akka.util.Timeout;
import com.google.common.base.Joiner;
import akka.pattern.Patterns;
import akka.util.Timeout;
import com.google.common.base.Joiner;
+import com.google.common.base.Joiner.MapJoiner;
import com.google.common.base.Stopwatch;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import com.google.common.base.Stopwatch;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
-import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
+import javax.annotation.Nullable;
+import javax.annotation.concurrent.GuardedBy;
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.datastore.Shard;
import org.opendaylight.controller.cluster.raft.base.messages.InitiateCaptureSnapshot;
import org.opendaylight.controller.cluster.raft.client.messages.FollowerInfo;
@@
-35,13
+37,16
@@
import scala.concurrent.Await;
* @author Basheeruddin syedbahm@cisco.com
*/
public class ShardStats extends AbstractMXBean implements ShardStatsMXBean {
* @author Basheeruddin syedbahm@cisco.com
*/
public class ShardStats extends AbstractMXBean implements ShardStatsMXBean {
- public static String JMX_CATEGORY_SHARD = "Shards";
+ public static
final
String JMX_CATEGORY_SHARD = "Shards";
+ @GuardedBy("DATE_FORMAT")
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
- private static final Cache<String, OnDemandRaftState>
onDemandRaftStateCache
=
+ private static final Cache<String, OnDemandRaftState>
ONDEMAND_RAFT_STATE_CACHE
=
CacheBuilder.newBuilder().expireAfterWrite(2, TimeUnit.SECONDS).build();
CacheBuilder.newBuilder().expireAfterWrite(2, TimeUnit.SECONDS).build();
+ private static final MapJoiner MAP_JOINER = Joiner.on(", ").withKeyValueSeparator(": ");
+
private long committedTransactionsCount;
private long readOnlyTransactionCount;
private long committedTransactionsCount;
private long readOnlyTransactionCount;
@@
-60,7
+65,7
@@
public class ShardStats extends AbstractMXBean implements ShardStatsMXBean {
private boolean followerInitialSyncStatus = false;
private boolean followerInitialSyncStatus = false;
- private Shard shard;
+ private
final
Shard shard;
private String statRetrievalError;
private String statRetrievalError;
@@
-70,22
+75,20
@@
public class ShardStats extends AbstractMXBean implements ShardStatsMXBean {
private long lastLeadershipChangeTime;
private long lastLeadershipChangeTime;
- public ShardStats(final String shardName, final String mxBeanType) {
+ public ShardStats(final String shardName, final String mxBeanType
, @Nullable final Shard shard
) {
super(shardName, mxBeanType, JMX_CATEGORY_SHARD);
super(shardName, mxBeanType, JMX_CATEGORY_SHARD);
- }
-
- public void setShard(Shard shard) {
this.shard = shard;
}
this.shard = shard;
}
+ @SuppressWarnings("checkstyle:IllegalCatch")
private OnDemandRaftState getOnDemandRaftState() {
String name = getShardName();
private OnDemandRaftState getOnDemandRaftState() {
String name = getShardName();
- OnDemandRaftState state =
onDemandRaftStateCache
.getIfPresent(name);
- if(state == null) {
+ OnDemandRaftState state =
ONDEMAND_RAFT_STATE_CACHE
.getIfPresent(name);
+ if
(state == null) {
statRetrievalError = null;
statRetrievalTime = null;
statRetrievalError = null;
statRetrievalTime = null;
- if(shard != null) {
+ if
(shard != null) {
Timeout timeout = new Timeout(10, TimeUnit.SECONDS);
try {
Stopwatch timer = Stopwatch.createStarted();
Timeout timeout = new Timeout(10, TimeUnit.SECONDS);
try {
Stopwatch timer = Stopwatch.createStarted();
@@
-94,7
+97,7
@@
public class ShardStats extends AbstractMXBean implements ShardStatsMXBean {
GetOnDemandRaftState.INSTANCE, timeout), timeout.duration());
statRetrievalTime = timer.stop().toString();
GetOnDemandRaftState.INSTANCE, timeout), timeout.duration());
statRetrievalTime = timer.stop().toString();
-
onDemandRaftStateCache
.put(name, state);
+
ONDEMAND_RAFT_STATE_CACHE
.put(name, state);
} catch (Exception e) {
statRetrievalError = e.toString();
}
} catch (Exception e) {
statRetrievalError = e.toString();
}
@@
-106,6
+109,12
@@
public class ShardStats extends AbstractMXBean implements ShardStatsMXBean {
return state;
}
return state;
}
+ private static String formatMillis(final long timeMillis) {
+ synchronized (DATE_FORMAT) {
+ return DATE_FORMAT.format(new Date(timeMillis));
+ }
+ }
+
@Override
public String getShardName() {
return getMBeanName();
@Override
public String getShardName() {
return getMBeanName();
@@
-195,6
+204,7
@@
public class ShardStats extends AbstractMXBean implements ShardStatsMXBean {
public String getVotedFor() {
return getOnDemandRaftState().getVotedFor();
}
public String getVotedFor() {
return getOnDemandRaftState().getVotedFor();
}
+
@Override
public boolean isVoting() {
return getOnDemandRaftState().isVoting();
@Override
public boolean isVoting() {
return getOnDemandRaftState().isVoting();
@@
-202,7
+212,7
@@
public class ShardStats extends AbstractMXBean implements ShardStatsMXBean {
@Override
public String getPeerVotingStates() {
@Override
public String getPeerVotingStates() {
- return
toStringMap
(getOnDemandRaftState().getPeerVotingStates());
+ return
MAP_JOINER.join
(getOnDemandRaftState().getPeerVotingStates());
}
@Override
}
@Override
@@
-212,7
+222,7
@@
public class ShardStats extends AbstractMXBean implements ShardStatsMXBean {
@Override
public String getLastCommittedTransactionTime() {
@Override
public String getLastCommittedTransactionTime() {
- return
DATE_FORMAT.format(new Date(lastCommittedTransactionTime)
);
+ return
formatMillis(lastCommittedTransactionTime
);
}
@Override
}
@Override
@@
-254,8
+264,7
@@
public class ShardStats extends AbstractMXBean implements ShardStatsMXBean {
return failedReadTransactionsCount.incrementAndGet();
}
return failedReadTransactionsCount.incrementAndGet();
}
- public long incrementAbortTransactionsCount ()
- {
+ public long incrementAbortTransactionsCount() {
return ++abortTransactionsCount;
}
return ++abortTransactionsCount;
}
@@
-264,7
+273,7
@@
public class ShardStats extends AbstractMXBean implements ShardStatsMXBean {
}
@Override
}
@Override
- public long getInMemoryJournalDataSize(){
+ public long getInMemoryJournalDataSize()
{
return getOnDemandRaftState().getInMemoryJournalDataSize();
}
return getOnDemandRaftState().getInMemoryJournalDataSize();
}
@@
-274,10
+283,10
@@
public class ShardStats extends AbstractMXBean implements ShardStatsMXBean {
}
/**
}
/**
- *
resets the counters related to transactions
+ *
Resets the counters related to transactions.
*/
@Override
*/
@Override
- public void resetTransactionCounters(){
+ public void resetTransactionCounters()
{
committedTransactionsCount = 0;
readOnlyTransactionCount = 0;
committedTransactionsCount = 0;
readOnlyTransactionCount = 0;
@@
-296,7
+305,7
@@
public class ShardStats extends AbstractMXBean implements ShardStatsMXBean {
}
}
- public void setFollowerInitialSyncStatus(boolean followerInitialSyncStatus) {
+ public void setFollowerInitialSyncStatus(
final
boolean followerInitialSyncStatus) {
this.followerInitialSyncStatus = followerInitialSyncStatus;
}
this.followerInitialSyncStatus = followerInitialSyncStatus;
}
@@
-312,11
+321,7
@@
public class ShardStats extends AbstractMXBean implements ShardStatsMXBean {
@Override
public String getPeerAddresses() {
@Override
public String getPeerAddresses() {
- return toStringMap(getOnDemandRaftState().getPeerAddresses());
- }
-
- private static String toStringMap(Map<?, ?> map) {
- return Joiner.on(", ").withKeyValueSeparator(": ").join(map);
+ return MAP_JOINER.join(getOnDemandRaftState().getPeerAddresses());
}
@Override
}
@Override
@@
-343,22
+348,22
@@
public class ShardStats extends AbstractMXBean implements ShardStatsMXBean {
@Override
public String getLastLeadershipChangeTime() {
@Override
public String getLastLeadershipChangeTime() {
- return
DATE_FORMAT.format(new Date(lastLeadershipChangeTime)
);
+ return
formatMillis(lastLeadershipChangeTime
);
}
@Override
public int getPendingTxCommitQueueSize() {
}
@Override
public int getPendingTxCommitQueueSize() {
- return shard
.getPendingTxCommitQueueSize()
;
+ return shard
!= null ? shard.getPendingTxCommitQueueSize() : -1
;
}
@Override
public int getTxCohortCacheSize() {
}
@Override
public int getTxCohortCacheSize() {
- return shard
.getCohortCacheSize()
;
+ return shard
!= null ? shard.getCohortCacheSize() : -1
;
}
@Override
public void captureSnapshot() {
}
@Override
public void captureSnapshot() {
- if(shard != null) {
+ if
(shard != null) {
shard.getSelf().tell(new InitiateCaptureSnapshot(), ActorRef.noSender());
}
}
shard.getSelf().tell(new InitiateCaptureSnapshot(), ActorRef.noSender());
}
}