Commit
1. use guava toStringHelper 2. use EnumMap
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,201 +5,182 @@ | |
import org.weakref.jmx.Managed; | ||
import org.weakref.jmx.Nested; | ||
|
||
import java.util.EnumMap; | ||
import java.util.concurrent.atomic.AtomicLong; | ||
|
||
public class DiscoveryStats | ||
{ | ||
private final AtomicLong serviceQuerySuccessCount = new AtomicLong(); | ||
private final AtomicLong serviceQueryFailureCount = new AtomicLong(); | ||
private final AtomicLong staticAnnouncementSuccessCount = new AtomicLong(); | ||
private final AtomicLong staticAnnouncementFailureCount = new AtomicLong(); | ||
private final AtomicLong staticAnnouncementListSuccessCount = new AtomicLong(); | ||
private final AtomicLong staticAnnouncementListFailureCount = new AtomicLong(); | ||
private final AtomicLong staticAnnouncementDeleteSuccessCount = new AtomicLong(); | ||
private final AtomicLong staticAnnouncementDeleteFailureCount = new AtomicLong(); | ||
private final AtomicLong dynamicAnnouncementSuccessCount = new AtomicLong(); | ||
private final AtomicLong dynamicAnnouncementFailureCount = new AtomicLong(); | ||
private final AtomicLong dynamicAnnouncementDeleteSuccessCount = new AtomicLong(); | ||
private final AtomicLong dynamicAnnouncementDeleteFailureCount = new AtomicLong(); | ||
|
||
private final TimedStat serviceQueryProcessingTime = new TimedStat(); | ||
private final TimedStat staticAnnouncementProcessingTime = new TimedStat(); | ||
private final TimedStat staticAnnouncementListProcessingTime = new TimedStat(); | ||
private final TimedStat staticAnnouncementDeleteProcessingTime = new TimedStat(); | ||
private final TimedStat dynamicAnnouncementProcessingTime = new TimedStat(); | ||
private final TimedStat dynamicAnnouncementDeleteProcessingTime = new TimedStat(); | ||
private final EnumMap<DiscoveryEventType, Stats> eventTypeStatsEnumMap; | ||
This comment has been minimized.
Sorry, something went wrong.
electrum
|
||
|
||
public DiscoveryStats() | ||
{ | ||
eventTypeStatsEnumMap = new EnumMap<DiscoveryEventType, Stats>(DiscoveryEventType.class); | ||
for (DiscoveryEventType type : DiscoveryEventType.values()) { | ||
eventTypeStatsEnumMap.put(type, new Stats()); | ||
} | ||
} | ||
|
||
@Managed | ||
public long getServiceQuerySuccessCount() | ||
{ | ||
return serviceQuerySuccessCount.get(); | ||
return eventTypeStatsEnumMap.get(DiscoveryEventType.SERVICEQUERY).getSuccessCount(); | ||
This comment has been minimized.
Sorry, something went wrong.
electrum
|
||
} | ||
|
||
@Managed | ||
public long getServiceQueryFailureCount() | ||
{ | ||
return serviceQueryFailureCount.get(); | ||
return eventTypeStatsEnumMap.get(DiscoveryEventType.SERVICEQUERY).getFailureCount(); | ||
} | ||
|
||
@Managed | ||
public long getStaticAnnouncementSuccessCount() | ||
{ | ||
return staticAnnouncementSuccessCount.get(); | ||
return eventTypeStatsEnumMap.get(DiscoveryEventType.STATICANNOUNCEMENT).getSuccessCount(); | ||
} | ||
|
||
@Managed | ||
public long getStaticAnnouncementFailureCount() | ||
{ | ||
return staticAnnouncementFailureCount.get(); | ||
return eventTypeStatsEnumMap.get(DiscoveryEventType.STATICANNOUNCEMENT).getFailureCount(); | ||
} | ||
|
||
@Managed | ||
public long getStaticAnnouncementListSuccessCount() | ||
{ | ||
return staticAnnouncementListSuccessCount.get(); | ||
return eventTypeStatsEnumMap.get(DiscoveryEventType.STATICANNOUNCEMENTLIST).getSuccessCount(); | ||
} | ||
|
||
@Managed | ||
public long getStaticAnnouncementListFailureCount() | ||
{ | ||
return staticAnnouncementListFailureCount.get(); | ||
return eventTypeStatsEnumMap.get(DiscoveryEventType.STATICANNOUNCEMENTLIST).getFailureCount(); | ||
} | ||
|
||
@Managed | ||
public long getStaticAnnouncementDeleteSuccessCount() | ||
{ | ||
return staticAnnouncementDeleteSuccessCount.get(); | ||
return eventTypeStatsEnumMap.get(DiscoveryEventType.STATICANNOUNCEMENTDELETE).getSuccessCount(); | ||
} | ||
|
||
@Managed | ||
public long getStaticAnnouncementDeleteFailureCount() | ||
{ | ||
return staticAnnouncementDeleteFailureCount.get(); | ||
return eventTypeStatsEnumMap.get(DiscoveryEventType.STATICANNOUNCEMENTDELETE).getFailureCount(); | ||
} | ||
|
||
@Managed | ||
public long getDynamicAnnouncementSuccessCount() | ||
{ | ||
return dynamicAnnouncementSuccessCount.get(); | ||
return eventTypeStatsEnumMap.get(DiscoveryEventType.DYNAMICANNOUNCEMENT).getSuccessCount(); | ||
} | ||
|
||
@Managed | ||
public long getDynamicAnnouncementFailureCount() | ||
{ | ||
return dynamicAnnouncementFailureCount.get(); | ||
return eventTypeStatsEnumMap.get(DiscoveryEventType.DYNAMICANNOUNCEMENT).getFailureCount(); | ||
} | ||
|
||
@Managed | ||
public long getDynamicAnnouncementDeleteSuccessCount() | ||
{ | ||
return dynamicAnnouncementDeleteSuccessCount.get(); | ||
return eventTypeStatsEnumMap.get(DiscoveryEventType.DYNAMICANNOUNCEMENTDELETE).getSuccessCount(); | ||
} | ||
|
||
@Managed | ||
public long getDynamicAnnouncementDeleteFailureCount() | ||
{ | ||
return dynamicAnnouncementDeleteFailureCount.get(); | ||
return eventTypeStatsEnumMap.get(DiscoveryEventType.DYNAMICANNOUNCEMENTDELETE).getFailureCount(); | ||
} | ||
|
||
@Managed | ||
@Nested | ||
public TimedStat getServiceQueryProcessingTime() | ||
{ | ||
return serviceQueryProcessingTime; | ||
return eventTypeStatsEnumMap.get(DiscoveryEventType.SERVICEQUERY).getProcessingTime(); | ||
} | ||
|
||
@Managed | ||
@Nested | ||
public TimedStat getStaticAnnouncementProcessingTime() | ||
{ | ||
return staticAnnouncementProcessingTime; | ||
return eventTypeStatsEnumMap.get(DiscoveryEventType.STATICANNOUNCEMENT).getProcessingTime(); | ||
} | ||
|
||
@Managed | ||
@Nested | ||
public TimedStat getStaticAnnouncementListProcessingTime() | ||
{ | ||
return staticAnnouncementListProcessingTime; | ||
return eventTypeStatsEnumMap.get(DiscoveryEventType.STATICANNOUNCEMENTLIST).getProcessingTime(); | ||
} | ||
|
||
@Managed | ||
@Nested | ||
public TimedStat getStaticAnnouncementDeleteProcessingTime() | ||
{ | ||
return staticAnnouncementDeleteProcessingTime; | ||
return eventTypeStatsEnumMap.get(DiscoveryEventType.STATICANNOUNCEMENTDELETE).getProcessingTime(); | ||
} | ||
|
||
@Managed | ||
@Nested | ||
public TimedStat getDynamicAnnouncementProcessingTime() | ||
{ | ||
return dynamicAnnouncementProcessingTime; | ||
return eventTypeStatsEnumMap.get(DiscoveryEventType.DYNAMICANNOUNCEMENT).getProcessingTime(); | ||
} | ||
|
||
@Managed | ||
@Nested | ||
public TimedStat getDynamicAnnouncementDeleteProcessingTime() | ||
{ | ||
return dynamicAnnouncementDeleteProcessingTime; | ||
return eventTypeStatsEnumMap.get(DiscoveryEventType.DYNAMICANNOUNCEMENTDELETE).getProcessingTime(); | ||
} | ||
|
||
public void addStats(DiscoveryEventType type, boolean success, long startTime) | ||
{ | ||
if (success) { | ||
switch (type) { | ||
case STATICANNOUNCEMENT: | ||
staticAnnouncementSuccessCount.getAndIncrement(); | ||
staticAnnouncementProcessingTime.addValue(Duration.nanosSince(startTime)); | ||
break; | ||
case STATICANNOUNCEMENTLIST: | ||
staticAnnouncementListSuccessCount.getAndIncrement(); | ||
staticAnnouncementListProcessingTime.addValue(Duration.nanosSince(startTime)); | ||
break; | ||
case STATICANNOUNCEMENTDELETE: | ||
staticAnnouncementDeleteSuccessCount.getAndIncrement(); | ||
staticAnnouncementDeleteProcessingTime.addValue(Duration.nanosSince(startTime)); | ||
break; | ||
case DYNAMICANNOUNCEMENT: | ||
dynamicAnnouncementSuccessCount.getAndIncrement(); | ||
dynamicAnnouncementProcessingTime.addValue(Duration.nanosSince(startTime)); | ||
break; | ||
case DYNAMICANNOUNCEMENTDELETE: | ||
dynamicAnnouncementDeleteSuccessCount.getAndIncrement(); | ||
dynamicAnnouncementDeleteProcessingTime.addValue(Duration.nanosSince(startTime)); | ||
break; | ||
case SERVICEQUERY: | ||
serviceQuerySuccessCount.getAndIncrement(); | ||
serviceQueryProcessingTime.addValue(Duration.nanosSince(startTime)); | ||
break; | ||
} | ||
eventTypeStatsEnumMap.get(type).incrementCount(success); | ||
eventTypeStatsEnumMap.get(type).addProcessingTime(startTime); | ||
} | ||
|
||
private static class Stats | ||
{ | ||
private final AtomicLong successCount; | ||
private final AtomicLong failureCount; | ||
private final TimedStat processingTime; | ||
|
||
public Stats() | ||
{ | ||
this.successCount = new AtomicLong(); | ||
this.failureCount = new AtomicLong(); | ||
this.processingTime = new TimedStat(); | ||
} | ||
else { | ||
switch (type) { | ||
case STATICANNOUNCEMENT: | ||
staticAnnouncementFailureCount.getAndIncrement(); | ||
staticAnnouncementProcessingTime.addValue(Duration.nanosSince(startTime)); | ||
break; | ||
case STATICANNOUNCEMENTLIST: | ||
staticAnnouncementListFailureCount.getAndIncrement(); | ||
staticAnnouncementListProcessingTime.addValue(Duration.nanosSince(startTime)); | ||
break; | ||
case STATICANNOUNCEMENTDELETE: | ||
staticAnnouncementDeleteFailureCount.getAndIncrement(); | ||
staticAnnouncementDeleteProcessingTime.addValue(Duration.nanosSince(startTime)); | ||
break; | ||
case DYNAMICANNOUNCEMENT: | ||
dynamicAnnouncementFailureCount.getAndIncrement(); | ||
dynamicAnnouncementProcessingTime.addValue(Duration.nanosSince(startTime)); | ||
break; | ||
case DYNAMICANNOUNCEMENTDELETE: | ||
dynamicAnnouncementDeleteFailureCount.getAndIncrement(); | ||
dynamicAnnouncementDeleteProcessingTime.addValue(Duration.nanosSince(startTime)); | ||
break; | ||
case SERVICEQUERY: | ||
serviceQueryFailureCount.getAndIncrement(); | ||
serviceQueryProcessingTime.addValue(Duration.nanosSince(startTime)); | ||
break; | ||
|
||
public long getSuccessCount() | ||
{ | ||
return successCount.get(); | ||
} | ||
|
||
public long getFailureCount() | ||
{ | ||
return failureCount.get(); | ||
} | ||
|
||
public TimedStat getProcessingTime() | ||
{ | ||
return processingTime; | ||
} | ||
|
||
public void incrementCount(boolean success) | ||
{ | ||
if (success) { | ||
successCount.getAndIncrement(); | ||
} | ||
else { | ||
failureCount.getAndIncrement(); | ||
} | ||
} | ||
|
||
public void addProcessingTime(long startTime) | ||
{ | ||
processingTime.addValue(Duration.nanosSince(startTime)); | ||
} | ||
} | ||
} |
1 comment
on commit 5577c22
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi David, thanks for your comments. I've made the changes for most of them. Regarding dynamic proxy, i was told we should stay away from it if possible. For me I feel like it's a little overkill in this case...
This check doesn't seem necessary: it's fine to pass null to
toStringHelper
. If you do want it to be displayed as an empty string rather thannull
, then useStrings.nullToEmpty.