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

asf-gitbox-commits pushed a commit to branch branch_10x
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/branch_10x by this push:
     new ef212f023b6 SOLR-18285: Change JettySolrRunner's use of 
GracefulHandler to be opt-in
ef212f023b6 is described below

commit ef212f023b6c487bdfe82364966a8f20748876d9
Author: Chris Hostetter <[email protected]>
AuthorDate: Fri Jun 12 11:09:42 2026 -0700

    SOLR-18285: Change JettySolrRunner's use of GracefulHandler to be opt-in
    
    (cherry picked from commit 0c3d2f86e4a55323a6da0f1d21a61a1d161030cd)
---
 .../SOLR-18285-jettysolrrunner-graceful-optin.yml         |  7 +++++++
 .../org/apache/solr/cloud/TestGracefulJettyShutdown.java  |  3 ++-
 .../src/java/org/apache/solr/embedded/JettyConfig.java    | 15 +++++++++++++--
 .../java/org/apache/solr/embedded/JettySolrRunner.java    | 10 ++++++----
 4 files changed, 28 insertions(+), 7 deletions(-)

diff --git a/changelog/unreleased/SOLR-18285-jettysolrrunner-graceful-optin.yml 
b/changelog/unreleased/SOLR-18285-jettysolrrunner-graceful-optin.yml
new file mode 100644
index 00000000000..aa3affeaee5
--- /dev/null
+++ b/changelog/unreleased/SOLR-18285-jettysolrrunner-graceful-optin.yml
@@ -0,0 +1,7 @@
+title: Change JettySolrRunner's use of GracefulHandler to be opt-in
+type: changed
+authors:
+- name: hossman
+links:
+- name: SOLR-18285
+  url: https://issues.apache.org/jira/browse/SOLR-18285
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/TestGracefulJettyShutdown.java 
b/solr/core/src/test/org/apache/solr/cloud/TestGracefulJettyShutdown.java
index 44caa313c52..8c0689585d2 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestGracefulJettyShutdown.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestGracefulJettyShutdown.java
@@ -55,7 +55,8 @@ public class TestGracefulJettyShutdown extends SolrTestCaseJ4 
{
 
     final ExecutorService exec = 
ExecutorUtil.newMDCAwareCachedThreadPool("client-requests");
     final MiniSolrCloudCluster cluster =
-        new MiniSolrCloudCluster(1, createTempDir(), 
JettyConfig.builder().build());
+        new MiniSolrCloudCluster(
+            1, createTempDir(), 
JettyConfig.builder().enableGracefulShutdown(true).build());
     try {
       assertTrue(
           CollectionAdminRequest.createCollection(collection, "_default", 1, 1)
diff --git 
a/solr/test-framework/src/java/org/apache/solr/embedded/JettyConfig.java 
b/solr/test-framework/src/java/org/apache/solr/embedded/JettyConfig.java
index 0f8cfb28238..601c6b5f2b5 100644
--- a/solr/test-framework/src/java/org/apache/solr/embedded/JettyConfig.java
+++ b/solr/test-framework/src/java/org/apache/solr/embedded/JettyConfig.java
@@ -35,6 +35,7 @@ public class JettyConfig {
   public final Map<Class<? extends Filter>, String> extraFilters;
   public final SSLConfig sslConfig;
   public final boolean enableV2;
+  public final boolean enableGracefulShutdown;
 
   private JettyConfig(
       boolean onlyHttp1,
@@ -45,7 +46,8 @@ public class JettyConfig {
       Map<ServletHolder, String> extraServlets,
       Map<Class<? extends Filter>, String> extraFilters,
       SSLConfig sslConfig,
-      boolean enableV2) {
+      boolean enableV2,
+      boolean enableGracefulShutdown) {
     this.onlyHttp1 = onlyHttp1;
     this.port = port;
     this.portRetryTime = portRetryTime;
@@ -55,6 +57,7 @@ public class JettyConfig {
     this.extraFilters = extraFilters;
     this.sslConfig = sslConfig;
     this.enableV2 = enableV2;
+    this.enableGracefulShutdown = enableGracefulShutdown;
   }
 
   public static Builder builder() {
@@ -73,6 +76,7 @@ public class JettyConfig {
     builder.extraFilters = other.extraFilters;
     builder.sslConfig = other.sslConfig;
     builder.enableV2 = other.enableV2;
+    builder.enableGracefulShutdown = other.enableGracefulShutdown;
     return builder;
   }
 
@@ -81,6 +85,7 @@ public class JettyConfig {
     boolean onlyHttp1 = false;
     int port = 0;
     boolean enableV2 = true;
+    boolean enableGracefulShutdown = false;
     boolean stopAtShutdown = true;
     Long waitForLoadingCoresToFinishMs = 300000L;
     Map<ServletHolder, String> extraServlets = new TreeMap<>();
@@ -99,6 +104,11 @@ public class JettyConfig {
       return this;
     }
 
+    public Builder enableGracefulShutdown(boolean flag) {
+      this.enableGracefulShutdown = flag;
+      return this;
+    }
+
     public Builder setPort(int port) {
       this.port = port;
       return this;
@@ -154,7 +164,8 @@ public class JettyConfig {
           extraServlets,
           extraFilters,
           sslConfig,
-          enableV2);
+          enableV2,
+          enableGracefulShutdown);
     }
   }
 }
diff --git 
a/solr/test-framework/src/java/org/apache/solr/embedded/JettySolrRunner.java 
b/solr/test-framework/src/java/org/apache/solr/embedded/JettySolrRunner.java
index 10906c15e66..30e1a45f54c 100644
--- a/solr/test-framework/src/java/org/apache/solr/embedded/JettySolrRunner.java
+++ b/solr/test-framework/src/java/org/apache/solr/embedded/JettySolrRunner.java
@@ -370,10 +370,12 @@ public class JettySolrRunner implements SolrBackend {
 
     server.setHandler(chain);
 
-    // Mimic "graceful.mod"
-    GracefulHandler graceful = new GracefulHandler();
-    server.insertHandler(graceful);
-    server.setStopTimeout(15 * 1000);
+    if (config.enableGracefulShutdown) {
+      // Mimic "graceful.mod"
+      GracefulHandler graceful = new GracefulHandler();
+      server.insertHandler(graceful);
+      server.setStopTimeout(15 * 1000);
+    }
   }
 
   /**

Reply via email to