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);
+ }
}
/**