From ce00ba64434091795e93f100158a5373621f46f3 Mon Sep 17 00:00:00 2001 From: Gian Merlino Date: Wed, 14 Mar 2018 09:25:57 -0700 Subject: [PATCH 1/2] Emitter: Clarify contract of "emit". --- .../main/java/io/druid/java/util/emitter/core/Emitter.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/java-util/src/main/java/io/druid/java/util/emitter/core/Emitter.java b/java-util/src/main/java/io/druid/java/util/emitter/core/Emitter.java index a3fdf88b92e2..5586207caf7f 100644 --- a/java-util/src/main/java/io/druid/java/util/emitter/core/Emitter.java +++ b/java-util/src/main/java/io/druid/java/util/emitter/core/Emitter.java @@ -28,6 +28,13 @@ public interface Emitter extends Closeable, Flushable { void start(); + + /** + * Emit an event. This method must not throw exceptions. If it receives input it considers to be invalid, + * or has an internal problem, it may deal with that by logging a warning instead. Implementations that do + * this should consider throttling warnings to avoid excessive logs, since a busy Druid cluster can emit a + * high volume of metric events. + */ void emit(Event event); @Override From bbb1bcee5a6c267441608207035f8e2783086d19 Mon Sep 17 00:00:00 2001 From: Gian Merlino Date: Wed, 14 Mar 2018 09:33:14 -0700 Subject: [PATCH 2/2] New wording --- .../io/druid/java/util/emitter/core/Emitter.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/java-util/src/main/java/io/druid/java/util/emitter/core/Emitter.java b/java-util/src/main/java/io/druid/java/util/emitter/core/Emitter.java index 5586207caf7f..f6a7f777bb48 100644 --- a/java-util/src/main/java/io/druid/java/util/emitter/core/Emitter.java +++ b/java-util/src/main/java/io/druid/java/util/emitter/core/Emitter.java @@ -30,10 +30,14 @@ public interface Emitter extends Closeable, Flushable void start(); /** - * Emit an event. This method must not throw exceptions. If it receives input it considers to be invalid, - * or has an internal problem, it may deal with that by logging a warning instead. Implementations that do - * this should consider throttling warnings to avoid excessive logs, since a busy Druid cluster can emit a - * high volume of metric events. + * Emit an event. This method must not throw exceptions or block. + * + * If an implementation receives too many events and internal queues fill up, it should drop events rather than + * blocking or consuming excessive memory. + * + * If an implementation receives input it considers to be invalid, or has an internal problem, it should deal with + * that by logging a warning rather than throwing an exception. Implementations that log warnings should consider + * throttling warnings to avoid excessive logs, since a busy Druid cluster can emit a high volume of metric events. */ void emit(Event event);