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

dsmiley pushed a commit to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/solr.git


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

commit b8433bb9ec7a86e2fd2637a661ad1a27df2ae183
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
    
    9x delta: uses StatisticsHandler.setGracefulShutdownWaitsForRequests(true) 
instead of Jetty 12's GracefulHandler, which doesn't exist in Jetty 10.
    
    (cherry picked from commit 0c3d2f86e4a55323a6da0f1d21a61a1d161030cd)
    (cherry picked from commit ef212f023b6c487bdfe82364966a8f20748876d9)
---
 .../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    | 12 +++++++-----
 4 files changed, 29 insertions(+), 8 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 cc863035318..a6abcfedf4c 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
@@ -36,6 +36,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,
@@ -47,7 +48,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;
@@ -58,6 +60,7 @@ public class JettyConfig {
     this.extraFilters = extraFilters;
     this.sslConfig = sslConfig;
     this.enableV2 = enableV2;
+    this.enableGracefulShutdown = enableGracefulShutdown;
   }
 
   public static Builder builder() {
@@ -77,6 +80,7 @@ public class JettyConfig {
     builder.extraFilters = other.extraFilters;
     builder.sslConfig = other.sslConfig;
     builder.enableV2 = other.enableV2;
+    builder.enableGracefulShutdown = other.enableGracefulShutdown;
     return builder;
   }
 
@@ -86,6 +90,7 @@ public class JettyConfig {
     int port = 0;
     String context = "/solr";
     boolean enableV2 = true;
+    boolean enableGracefulShutdown = false;
     boolean stopAtShutdown = true;
     Long waitForLoadingCoresToFinishMs = 300000L;
     Map<ServletHolder, String> extraServlets = new TreeMap<>();
@@ -104,6 +109,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;
@@ -165,7 +175,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 76dd1add5f7..1b3e607a879 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
@@ -440,11 +440,13 @@ public class JettySolrRunner {
 
     server.setHandler(gzipHandler);
 
-    // Mimic "graceful.mod"
-    final StatisticsHandler graceful = new StatisticsHandler();
-    graceful.setGracefulShutdownWaitsForRequests(true);
-    server.insertHandler(graceful);
-    server.setStopTimeout(15 * 1000);
+    if (config.enableGracefulShutdown) {
+      // Mimic "graceful.mod"
+      final StatisticsHandler graceful = new StatisticsHandler();
+      graceful.setGracefulShutdownWaitsForRequests(true);
+      server.insertHandler(graceful);
+      server.setStopTimeout(15 * 1000);
+    }
   }
 
   /**

Reply via email to