X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2FShardStats.java;h=f377ff71008febf28324e92dccc2ae053f04b87c;hb=0597bd64ca6214fd3ca3fb152ab2ca7fd3b32ed5;hp=7a2831b3291d77c37641edd1d7972105ac7d3338;hpb=817d0efe25becd8d457550b11bf985298e169954;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardStats.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardStats.java index 7a2831b329..f377ff7100 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardStats.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardStats.java @@ -10,15 +10,16 @@ package org.opendaylight.controller.cluster.datastore; import akka.actor.ActorRef; import com.google.common.base.Joiner; import com.google.common.base.Joiner.MapJoiner; -import java.text.SimpleDateFormat; -import java.util.Date; +import java.time.Instant; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; import java.util.List; import java.util.concurrent.atomic.AtomicLong; -import org.checkerframework.checker.lock.qual.GuardedBy; +import org.eclipse.jdt.annotation.NonNull; 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; @@ -30,9 +31,8 @@ import org.opendaylight.controller.md.sal.common.util.jmx.AbstractMXBean; final class ShardStats extends AbstractMXBean implements ShardStatsMXBean { public static final String JMX_CATEGORY_SHARD = "Shards"; - // FIXME: migrate this to Java 8 thread-safe time - @GuardedBy("DATE_FORMAT") - private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss.SSS") + .withZone(ZoneId.systemDefault()); private static final MapJoiner MAP_JOINER = Joiner.on(", ").withKeyValueSeparator(": "); @@ -68,6 +68,13 @@ final class ShardStats extends AbstractMXBean implements ShardStatsMXBean { stateCache = new OnDemandShardStateCache(shardName, shard != null ? shard.self() : null); } + static ShardStats create(final String shardName, final String mxBeanType, final @NonNull Shard shard) { + String finalMXBeanType = mxBeanType != null ? mxBeanType : "DistDataStore"; + ShardStats shardStatsMBeanImpl = new ShardStats(shardName, finalMXBeanType, shard); + shardStatsMBeanImpl.registerMBean(); + return shardStatsMBeanImpl; + } + @SuppressWarnings("checkstyle:IllegalCatch") private OnDemandRaftState getOnDemandRaftState() { try { @@ -81,9 +88,7 @@ final class ShardStats extends AbstractMXBean implements ShardStatsMXBean { } private static String formatMillis(final long timeMillis) { - synchronized (DATE_FORMAT) { - return DATE_FORMAT.format(new Date(timeMillis)); - } + return DATE_FORMATTER.format(Instant.ofEpochMilli(timeMillis)); } @Override