This is an automated email from the ASF dual-hosted git repository.
asf-gitbox-commits pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/main by this push:
new 0c3d2f86e4a SOLR-18285: Change JettySolrRunner's use of
GracefulHandler to be opt-in
0c3d2f86e4a is described below
commit 0c3d2f86e4a55323a6da0f1d21a61a1d161030cd
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
---
.../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 4550eabe36f..653a001ff1d 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
@@ -368,10 +368,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);
+ }
}
/**