You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by yu...@apache.org on 2013/08/12 18:14:19 UTC
[5/9] git commit: suppress sending too many progress notifications
suppress sending too many progress notifications
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a3479008
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a3479008
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a3479008
Branch: refs/heads/cassandra-2.0.0
Commit: a34790085ae7f79615f7225911ba9cf8ceb8f3e2
Parents: a0d6ed1
Author: Yuki Morishita <yu...@apache.org>
Authored: Mon Aug 12 11:07:53 2013 -0500
Committer: Yuki Morishita <yu...@apache.org>
Committed: Mon Aug 12 11:10:37 2013 -0500
----------------------------------------------------------------------
.../management/StreamEventJMXNotifier.java | 26 ++++++++++++++------
1 file changed, 18 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a3479008/src/java/org/apache/cassandra/streaming/management/StreamEventJMXNotifier.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/streaming/management/StreamEventJMXNotifier.java b/src/java/org/apache/cassandra/streaming/management/StreamEventJMXNotifier.java
index f8c54ec..01ca9a1 100644
--- a/src/java/org/apache/cassandra/streaming/management/StreamEventJMXNotifier.java
+++ b/src/java/org/apache/cassandra/streaming/management/StreamEventJMXNotifier.java
@@ -21,17 +21,19 @@ import java.util.concurrent.atomic.AtomicLong;
import javax.management.Notification;
import javax.management.NotificationBroadcasterSupport;
-import org.apache.cassandra.streaming.StreamEvent;
-import org.apache.cassandra.streaming.StreamEventHandler;
-import org.apache.cassandra.streaming.StreamManagerMBean;
-import org.apache.cassandra.streaming.StreamState;
+import org.apache.cassandra.streaming.*;
/**
*/
public class StreamEventJMXNotifier extends NotificationBroadcasterSupport implements StreamEventHandler
{
+ // interval in millisec to use for progress notification
+ private static final long PROGRESS_NOTIFICATION_INTERVAL = 1000;
+
private final AtomicLong seq = new AtomicLong();
+ private long progressLastSent;
+
public void handleStreamEvent(StreamEvent event)
{
Notification notif = null;
@@ -49,10 +51,18 @@ public class StreamEventJMXNotifier extends NotificationBroadcasterSupport imple
notif.setUserData(SessionCompleteEventCompositeData.toCompositeData((StreamEvent.SessionCompleteEvent) event));
break;
case FILE_PROGRESS:
- notif = new Notification(StreamEvent.ProgressEvent.class.getCanonicalName(),
- StreamManagerMBean.OBJECT_NAME,
- seq.getAndIncrement());
- notif.setUserData(ProgressInfoCompositeData.toCompositeData(event.planId, ((StreamEvent.ProgressEvent) event).progress));
+ ProgressInfo progress = ((StreamEvent.ProgressEvent) event).progress;
+ long current = System.currentTimeMillis();
+ if (current - progressLastSent >= PROGRESS_NOTIFICATION_INTERVAL || progress.isCompleted())
+ {
+ notif = new Notification(StreamEvent.ProgressEvent.class.getCanonicalName(),
+ StreamManagerMBean.OBJECT_NAME,
+ seq.getAndIncrement());
+ notif.setUserData(ProgressInfoCompositeData.toCompositeData(event.planId, progress));
+ progressLastSent = System.currentTimeMillis();
+ } else {
+ return;
+ }
break;
}
sendNotification(notif);