diff --git a/server/src/main/java/io/druid/server/emitter/HttpEmitterModule.java b/server/src/main/java/io/druid/server/emitter/HttpEmitterModule.java index f5e301fa52bf..4792b4495d4f 100644 --- a/server/src/main/java/io/druid/server/emitter/HttpEmitterModule.java +++ b/server/src/main/java/io/druid/server/emitter/HttpEmitterModule.java @@ -21,7 +21,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.base.Supplier; -import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.google.inject.Binder; import com.google.inject.Module; import com.google.inject.Provides; @@ -30,12 +29,14 @@ import com.metamx.emitter.core.Emitter; import com.metamx.emitter.core.HttpEmitterConfig; import com.metamx.emitter.core.HttpPostEmitter; +import io.druid.concurrent.Execs; import io.druid.guice.JsonConfigProvider; import io.druid.guice.LazySingleton; import io.druid.guice.ManageLifecycle; import io.druid.java.util.common.lifecycle.Lifecycle; import io.netty.handler.ssl.ClientAuth; import io.netty.handler.ssl.JdkSslContext; +import io.netty.util.HashedWheelTimer; import org.asynchttpclient.AsyncHttpClient; import org.asynchttpclient.DefaultAsyncHttpClient; import org.asynchttpclient.DefaultAsyncHttpClientConfig; @@ -71,16 +72,13 @@ static void configureSsl(Binder binder) static AsyncHttpClient createAsyncHttpClient( String nameFormat, + String timerThreadNameFormat, @Nullable SSLContext sslContext ) { final DefaultAsyncHttpClientConfig.Builder builder = new DefaultAsyncHttpClientConfig.Builder() - .setThreadFactory( - new ThreadFactoryBuilder() - .setDaemon(true) - .setNameFormat(nameFormat) - .build() - ); + .setThreadFactory(Execs.makeThreadFactory(nameFormat)) + .setNettyTimer(new HashedWheelTimer(Execs.makeThreadFactory(timerThreadNameFormat))); if (sslContext != null) { builder.setSslContext(new JdkSslContext(sslContext, true, ClientAuth.NONE)); } @@ -100,7 +98,11 @@ public Emitter getEmitter( return new HttpPostEmitter( config.get(), lifecycle.addCloseableInstance( - createAsyncHttpClient("HttpPostEmitter-AsyncHttpClient-%d", sslContext) + createAsyncHttpClient( + "HttpPostEmitter-AsyncHttpClient-%d", + "HttpPostEmitter-AsyncHttpClient-Timer-%d", + sslContext + ) ), jsonMapper ); diff --git a/server/src/main/java/io/druid/server/emitter/ParametrizedUriEmitterModule.java b/server/src/main/java/io/druid/server/emitter/ParametrizedUriEmitterModule.java index 370869f6e77f..6cba3bea7696 100644 --- a/server/src/main/java/io/druid/server/emitter/ParametrizedUriEmitterModule.java +++ b/server/src/main/java/io/druid/server/emitter/ParametrizedUriEmitterModule.java @@ -57,7 +57,11 @@ public Emitter getEmitter( return new ParametrizedUriEmitter( config.get(), lifecycle.addCloseableInstance( - HttpEmitterModule.createAsyncHttpClient("ParmetrizedUriEmitter-AsyncHttpClient-%d", sslContext) + HttpEmitterModule.createAsyncHttpClient( + "ParmetrizedUriEmitter-AsyncHttpClient-%d", + "ParmetrizedUriEmitter-AsyncHttpClient-Timer-%d", + sslContext + ) ), jsonMapper );