From 410806a68fc9389916c340d31901926cc24303ba Mon Sep 17 00:00:00 2001 From: Athou Date: Fri, 28 Jun 2013 12:20:49 +0200 Subject: [PATCH] better rolling mechanism for metrics --- src/main/java/com/commafeed/backend/MetricsBean.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/commafeed/backend/MetricsBean.java b/src/main/java/com/commafeed/backend/MetricsBean.java index ca630da9..e7e921c9 100644 --- a/src/main/java/com/commafeed/backend/MetricsBean.java +++ b/src/main/java/com/commafeed/backend/MetricsBean.java @@ -1,6 +1,8 @@ package com.commafeed.backend; import javax.ejb.Singleton; +import javax.interceptor.AroundInvoke; +import javax.interceptor.InvocationContext; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; @@ -23,7 +25,8 @@ public class MetricsBean { private long minuteTimestamp; private long hourTimestamp; - public void feedRefreshed() { + @AroundInvoke + private Object roll(InvocationContext context) throws Exception { long now = System.currentTimeMillis(); if (now - minuteTimestamp > 60000) { lastMinute = thisMinute; @@ -31,7 +34,6 @@ public class MetricsBean { minuteTimestamp = now; } - thisMinute.feedsRefreshed++; if (now - hourTimestamp > 60000 * 60) { lastHour = thisHour; @@ -39,6 +41,11 @@ public class MetricsBean { hourTimestamp = now; } + return context.proceed(); + } + + public void feedRefreshed() { + thisMinute.feedsRefreshed++; thisHour.feedsRefreshed++; }