package com.dianping.pigeon.remoting.invoker.process.statistics;
import java.util.Map;
import com.dianping.pigeon.log.Logger;
import com.dianping.pigeon.log.LoggerLoader;
public class InvokerStatisticsChecker implements Runnable {
private static final Logger logger = LoggerLoader.getLogger(InvokerStatisticsChecker.class);
@Override
public void run() {
InvokerStatisticsHolder.init();
InvokerCapacityBucket.init();
int i = 0, j = 0;
while (!Thread.currentThread().isInterrupted()) {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
}
Map<String, InvokerCapacityBucket> buckets = InvokerStatisticsHolder.getCapacityBuckets();
if (buckets != null) {
try {
for (String key : buckets.keySet()) {
InvokerCapacityBucket bucket = buckets.get(key);
bucket.resetRequestsInSecondCounter();
}
if (++i % 12 == 0) {
i = 0;
for (InvokerCapacityBucket bucket : buckets.values()) {
bucket.resetRequestsInMinuteCounter();
}
}
if (++j % 17280 == 0) {
j = 0;
for (InvokerCapacityBucket bucket : buckets.values()) {
bucket.resetRequestsInDayCounter();
}
}
} catch (Throwable e) {
logger.error("Check expired request in app statistics failed, detail[" + e.getMessage() + "].", e);
}
}
}
}
}