This is an automated email from the ASF dual-hosted git repository.

abhishek pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git


The following commit(s) were added to refs/heads/master by this push:
     new 0ab2781a7f2 Disable eager initialization for non-query connection 
requests (#15751)
0ab2781a7f2 is described below

commit 0ab2781a7f2a861e5fc34ab708505fda692f7eae
Author: Abhishek Agarwal <[email protected]>
AuthorDate: Thu Jan 25 14:38:50 2024 +0530

    Disable eager initialization for non-query connection requests (#15751)
---
 docs/configuration/index.md                              |  2 +-
 .../conf/druid/auto/_common/common.runtime.properties    |  5 -----
 .../conf/druid/cluster/_common/common.runtime.properties |  5 -----
 .../large/_common/common.runtime.properties              |  4 ----
 .../medium/_common/common.runtime.properties             |  4 ----
 .../micro-quickstart/_common/common.runtime.properties   |  4 ----
 .../nano-quickstart/_common/common.runtime.properties    |  4 ----
 .../small/_common/common.runtime.properties              |  4 ----
 .../xlarge/_common/common.runtime.properties             |  4 ----
 .../org/apache/druid/testsEx/config/Initializer.java     |  4 ++--
 .../apache/druid/guice/http/DruidHttpClientConfig.java   |  7 +++++--
 .../org/apache/druid/guice/http/HttpClientModule.java    | 16 ++++++++++------
 .../apache/druid/initialization/CoreInjectorBuilder.java |  4 ++--
 13 files changed, 20 insertions(+), 47 deletions(-)

diff --git a/docs/configuration/index.md b/docs/configuration/index.md
index d2994e8634b..2e4d1f99722 100644
--- a/docs/configuration/index.md
+++ b/docs/configuration/index.md
@@ -820,7 +820,7 @@ All Druid components can communicate with each other over 
HTTP.
 |Property|Description|Default|
 |--------|-----------|-------|
 |`druid.global.http.numConnections`|Size of connection pool per destination 
URL. If there are more HTTP requests than this number that all need to speak to 
the same URL, then they will queue up.|`20`|
-|`druid.global.http.eagerInitialization`|Indicates that http connections 
should be eagerly initialized. If set to true, `numConnections` connections are 
created upon initialization|`true`|
+|`druid.global.http.eagerInitialization`|Indicates that http connections 
should be eagerly initialized. If set to true, `numConnections` connections are 
created upon initialization|`false`|
 |`druid.global.http.compressionCodec`|Compression codec to communicate with 
others. May be "gzip" or "identity".|`gzip`|
 |`druid.global.http.readTimeout`|The timeout for data reads.|`PT15M`|
 |`druid.global.http.unusedConnectionTimeout`|The timeout for idle connections 
in connection pool. The connection in the pool will be closed after this 
timeout and a new one will be established. This timeout should be less than 
`druid.global.http.readTimeout`. Set this timeout = ~90% of 
`druid.global.http.readTimeout`|`PT4M`|
diff --git a/examples/conf/druid/auto/_common/common.runtime.properties 
b/examples/conf/druid/auto/_common/common.runtime.properties
index 4f4884d5264..8a9058f6b8c 100644
--- a/examples/conf/druid/auto/_common/common.runtime.properties
+++ b/examples/conf/druid/auto/_common/common.runtime.properties
@@ -151,8 +151,3 @@ druid.lookup.enableLookupSyncOnStartup=false
 # Expression processing config
 #
 druid.expressions.useStrictBooleans=true
-
-#
-# Http client
-#
-druid.global.http.eagerInitialization=false
diff --git a/examples/conf/druid/cluster/_common/common.runtime.properties 
b/examples/conf/druid/cluster/_common/common.runtime.properties
index 4f4884d5264..8a9058f6b8c 100644
--- a/examples/conf/druid/cluster/_common/common.runtime.properties
+++ b/examples/conf/druid/cluster/_common/common.runtime.properties
@@ -151,8 +151,3 @@ druid.lookup.enableLookupSyncOnStartup=false
 # Expression processing config
 #
 druid.expressions.useStrictBooleans=true
-
-#
-# Http client
-#
-druid.global.http.eagerInitialization=false
diff --git 
a/examples/conf/druid/single-server/large/_common/common.runtime.properties 
b/examples/conf/druid/single-server/large/_common/common.runtime.properties
index 4f4884d5264..dcb1687ca70 100644
--- a/examples/conf/druid/single-server/large/_common/common.runtime.properties
+++ b/examples/conf/druid/single-server/large/_common/common.runtime.properties
@@ -152,7 +152,3 @@ druid.lookup.enableLookupSyncOnStartup=false
 #
 druid.expressions.useStrictBooleans=true
 
-#
-# Http client
-#
-druid.global.http.eagerInitialization=false
diff --git 
a/examples/conf/druid/single-server/medium/_common/common.runtime.properties 
b/examples/conf/druid/single-server/medium/_common/common.runtime.properties
index 4f4884d5264..dcb1687ca70 100644
--- a/examples/conf/druid/single-server/medium/_common/common.runtime.properties
+++ b/examples/conf/druid/single-server/medium/_common/common.runtime.properties
@@ -152,7 +152,3 @@ druid.lookup.enableLookupSyncOnStartup=false
 #
 druid.expressions.useStrictBooleans=true
 
-#
-# Http client
-#
-druid.global.http.eagerInitialization=false
diff --git 
a/examples/conf/druid/single-server/micro-quickstart/_common/common.runtime.properties
 
b/examples/conf/druid/single-server/micro-quickstart/_common/common.runtime.properties
index 4f4884d5264..dcb1687ca70 100644
--- 
a/examples/conf/druid/single-server/micro-quickstart/_common/common.runtime.properties
+++ 
b/examples/conf/druid/single-server/micro-quickstart/_common/common.runtime.properties
@@ -152,7 +152,3 @@ druid.lookup.enableLookupSyncOnStartup=false
 #
 druid.expressions.useStrictBooleans=true
 
-#
-# Http client
-#
-druid.global.http.eagerInitialization=false
diff --git 
a/examples/conf/druid/single-server/nano-quickstart/_common/common.runtime.properties
 
b/examples/conf/druid/single-server/nano-quickstart/_common/common.runtime.properties
index 4f4884d5264..dcb1687ca70 100644
--- 
a/examples/conf/druid/single-server/nano-quickstart/_common/common.runtime.properties
+++ 
b/examples/conf/druid/single-server/nano-quickstart/_common/common.runtime.properties
@@ -152,7 +152,3 @@ druid.lookup.enableLookupSyncOnStartup=false
 #
 druid.expressions.useStrictBooleans=true
 
-#
-# Http client
-#
-druid.global.http.eagerInitialization=false
diff --git 
a/examples/conf/druid/single-server/small/_common/common.runtime.properties 
b/examples/conf/druid/single-server/small/_common/common.runtime.properties
index 4f4884d5264..dcb1687ca70 100644
--- a/examples/conf/druid/single-server/small/_common/common.runtime.properties
+++ b/examples/conf/druid/single-server/small/_common/common.runtime.properties
@@ -152,7 +152,3 @@ druid.lookup.enableLookupSyncOnStartup=false
 #
 druid.expressions.useStrictBooleans=true
 
-#
-# Http client
-#
-druid.global.http.eagerInitialization=false
diff --git 
a/examples/conf/druid/single-server/xlarge/_common/common.runtime.properties 
b/examples/conf/druid/single-server/xlarge/_common/common.runtime.properties
index 4f4884d5264..dcb1687ca70 100644
--- a/examples/conf/druid/single-server/xlarge/_common/common.runtime.properties
+++ b/examples/conf/druid/single-server/xlarge/_common/common.runtime.properties
@@ -152,7 +152,3 @@ druid.lookup.enableLookupSyncOnStartup=false
 #
 druid.expressions.useStrictBooleans=true
 
-#
-# Http client
-#
-druid.global.http.eagerInitialization=false
diff --git 
a/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/Initializer.java
 
b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/Initializer.java
index 7931115c6eb..ac3f8415488 100644
--- 
a/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/Initializer.java
+++ 
b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/Initializer.java
@@ -489,8 +489,8 @@ public class Initializer
             new EscalatorModule(),
             HttpClientModule.global(),
             HttpClientModule.escalatedGlobal(),
-            new HttpClientModule("druid.broker.http", Client.class),
-            new HttpClientModule("druid.broker.http", EscalatedClient.class),
+            new HttpClientModule("druid.broker.http", Client.class, true),
+            new HttpClientModule("druid.broker.http", EscalatedClient.class, 
true),
             // For ZK discovery
             new CuratorModule(),
             new AnnouncerModule(),
diff --git 
a/server/src/main/java/org/apache/druid/guice/http/DruidHttpClientConfig.java 
b/server/src/main/java/org/apache/druid/guice/http/DruidHttpClientConfig.java
index d8e9db13853..70ed44f2eb8 100644
--- 
a/server/src/main/java/org/apache/druid/guice/http/DruidHttpClientConfig.java
+++ 
b/server/src/main/java/org/apache/druid/guice/http/DruidHttpClientConfig.java
@@ -70,7 +70,7 @@ public class DruidHttpClientConfig
   private HumanReadableBytes maxQueuedBytes = computeDefaultMaxQueuedBytes();
 
   @JsonProperty
-  private boolean eagerInitialization = true;
+  private Boolean eagerInitialization = null;
 
   public int getNumConnections()
   {
@@ -121,8 +121,11 @@ public class DruidHttpClientConfig
     return maxQueuedBytes.getBytes();
   }
 
-  public boolean isEagerInitialization()
+  public boolean isEagerInitialization(boolean defaultValue)
   {
+    if (null == eagerInitialization) {
+      return defaultValue;
+    }
     return eagerInitialization;
   }
 
diff --git 
a/server/src/main/java/org/apache/druid/guice/http/HttpClientModule.java 
b/server/src/main/java/org/apache/druid/guice/http/HttpClientModule.java
index d4753241e2a..2aaf30a469f 100644
--- a/server/src/main/java/org/apache/druid/guice/http/HttpClientModule.java
+++ b/server/src/main/java/org/apache/druid/guice/http/HttpClientModule.java
@@ -47,12 +47,12 @@ public class HttpClientModule implements Module
 {
   public static HttpClientModule global()
   {
-    return new HttpClientModule("druid.global.http", Global.class);
+    return new HttpClientModule("druid.global.http", Global.class, false);
   }
 
   public static HttpClientModule escalatedGlobal()
   {
-    return new HttpClientModule("druid.global.http", EscalatedGlobal.class);
+    return new HttpClientModule("druid.global.http", EscalatedGlobal.class, 
false);
   }
 
   private static final Set<Class<? extends Annotation>> ESCALATING_ANNOTATIONS 
=
@@ -61,11 +61,13 @@ public class HttpClientModule implements Module
   private final String propertyPrefix;
   private final Class<? extends Annotation> annotationClazz;
   private final boolean isEscalated;
+  private final boolean eagerByDefault;
 
-  public HttpClientModule(String propertyPrefix, Class<? extends Annotation> 
annotationClazz)
+  public HttpClientModule(String propertyPrefix, Class<? extends Annotation> 
annotationClazz, boolean eagerByDefault)
   {
     this.propertyPrefix = Preconditions.checkNotNull(propertyPrefix, 
"propertyPrefix");
     this.annotationClazz = Preconditions.checkNotNull(annotationClazz, 
"annotationClazz");
+    this.eagerByDefault = eagerByDefault;
 
     isEscalated = ESCALATING_ANNOTATIONS.contains(this.annotationClazz);
   }
@@ -76,19 +78,21 @@ public class HttpClientModule implements Module
     JsonConfigProvider.bind(binder, propertyPrefix, 
DruidHttpClientConfig.class, annotationClazz);
     binder.bind(HttpClient.class)
           .annotatedWith(annotationClazz)
-          .toProvider(new HttpClientProvider(annotationClazz, isEscalated))
+          .toProvider(new HttpClientProvider(annotationClazz, isEscalated, 
eagerByDefault))
           .in(LazySingleton.class);
   }
 
   public static class HttpClientProvider extends 
AbstractHttpClientProvider<HttpClient>
   {
     private final boolean isEscalated;
+    private final boolean eagerByDefault;
     private Escalator escalator;
 
-    public HttpClientProvider(Class<? extends Annotation> annotationClazz, 
boolean isEscalated)
+    public HttpClientProvider(Class<? extends Annotation> annotationClazz, 
boolean isEscalated, boolean eagerByDefault)
     {
       super(annotationClazz);
       this.isEscalated = isEscalated;
+      this.eagerByDefault = eagerByDefault;
     }
 
     @Inject
@@ -105,7 +109,7 @@ public class HttpClientModule implements Module
       final HttpClientConfig.Builder builder = HttpClientConfig
           .builder()
           .withNumConnections(config.getNumConnections())
-          .withEagerInitialization(config.isEagerInitialization())
+          
.withEagerInitialization(config.isEagerInitialization(eagerByDefault))
           .withReadTimeout(config.getReadTimeout())
           .withWorkerCount(config.getNumMaxThreads())
           .withCompressionCodec(
diff --git 
a/server/src/main/java/org/apache/druid/initialization/CoreInjectorBuilder.java 
b/server/src/main/java/org/apache/druid/initialization/CoreInjectorBuilder.java
index d27fdf75b1e..59516f8d4c4 100644
--- 
a/server/src/main/java/org/apache/druid/initialization/CoreInjectorBuilder.java
+++ 
b/server/src/main/java/org/apache/druid/initialization/CoreInjectorBuilder.java
@@ -104,8 +104,8 @@ public class CoreInjectorBuilder extends 
DruidInjectorBuilder
         EmitterModule.class,
         HttpClientModule.global(),
         HttpClientModule.escalatedGlobal(),
-        new HttpClientModule("druid.broker.http", Client.class),
-        new HttpClientModule("druid.broker.http", EscalatedClient.class),
+        new HttpClientModule("druid.broker.http", Client.class, true),
+        new HttpClientModule("druid.broker.http", EscalatedClient.class, true),
         new CuratorModule(),
         new AnnouncerModule(),
         new MetricsModule(),


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to