diff --git a/processing/src/main/java/io/druid/query/MetricsEmittingQueryRunner.java b/processing/src/main/java/io/druid/query/MetricsEmittingQueryRunner.java index 0734c2b6a948..be68a24ca1e9 100644 --- a/processing/src/main/java/io/druid/query/MetricsEmittingQueryRunner.java +++ b/processing/src/main/java/io/druid/query/MetricsEmittingQueryRunner.java @@ -19,6 +19,7 @@ package io.druid.query; +import io.druid.java.util.common.logger.Logger; import io.druid.java.util.emitter.service.ServiceEmitter; import io.druid.java.util.common.guava.LazySequence; import io.druid.java.util.common.guava.Sequence; @@ -39,6 +40,7 @@ public class MetricsEmittingQueryRunner implements QueryRunner private final long creationTimeNs; private final ObjLongConsumer> reportMetric; private final Consumer> applyCustomDimensions; + private static final Logger log = new Logger(MetricsEmittingQueryRunner.class); private MetricsEmittingQueryRunner( ServiceEmitter emitter, @@ -117,7 +119,13 @@ public void after(boolean isDone, Throwable thrown) if (creationTimeNs > 0) { queryMetrics.reportWaitTime(startTimeNs - creationTimeNs); } - queryMetrics.emit(emitter); + try { + queryMetrics.emit(emitter); + } + catch (Exception e) { + // Query should not fail, because of emitter failure. Swallowing the exception. + log.error("Failure while trying to emit [%s] with stacktrace [%s]", emitter.toString(), e); + } } } );