This is an automated email from the ASF dual-hosted git repository.
dsmiley 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 2da47367799 SolrQueryResponse.getResponseHeader/addResponseHeader to
SimpleOrderedMap (#4809)
2da47367799 is described below
commit 2da47367799fe87f6a7366e5349f9bd54320483f
Author: Serhiy Bzhezytskyy <[email protected]>
AuthorDate: Wed Sep 2 01:37:12 2026 +0300
SolrQueryResponse.getResponseHeader/addResponseHeader to SimpleOrderedMap
(#4809)
---
.../SOLR-solrqueryresponse-return-types.yml | 10 ++++++++++
.../src/java/org/apache/solr/core/SolrCore.java | 2 +-
.../handler/component/CombinedQueryComponent.java | 14 ++++++--------
.../solr/handler/component/QueryComponent.java | 21 ++++++++-------------
.../org/apache/solr/response/SolrQueryResponse.java | 9 ++++-----
.../IgnoreCommitOptimizeUpdateProcessorFactory.java | 2 +-
.../apache/solr/response/TestSolrQueryResponse.java | 4 ++--
7 files changed, 32 insertions(+), 30 deletions(-)
diff --git a/changelog/unreleased/SOLR-solrqueryresponse-return-types.yml
b/changelog/unreleased/SOLR-solrqueryresponse-return-types.yml
new file mode 100644
index 00000000000..6b13f8f6c1a
--- /dev/null
+++ b/changelog/unreleased/SOLR-solrqueryresponse-return-types.yml
@@ -0,0 +1,10 @@
+title: >
+ SolrQueryResponse.getResponseHeader()/addResponseHeader() are now declared
to return/accept
+ SimpleOrderedMap<Object> instead of NamedList<Object>. External code
compiled against the old
+ signature will get a NoSuchMethodError at runtime and must recompile.
+type: changed
+authors:
+ - name: Serhiy Bzhezytskyy
+links:
+ - name: PR#4809
+ url: https://github.com/apache/solr/pull/4809
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCore.java
b/solr/core/src/java/org/apache/solr/core/SolrCore.java
index 6c636b51902..3ee0813f914 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -2953,7 +2953,7 @@ public class SolrCore implements SolrInfoBean, Closeable {
public static void preDecorateResponse(SolrQueryRequest req,
SolrQueryResponse rsp) {
// setup response header
- final NamedList<Object> responseHeader = new SimpleOrderedMap<>();
+ final SimpleOrderedMap<Object> responseHeader = new SimpleOrderedMap<>();
rsp.addResponseHeader(responseHeader);
rsp.addToLog(PATH, req.getContext().get(PATH));
diff --git
a/solr/core/src/java/org/apache/solr/handler/component/CombinedQueryComponent.java
b/solr/core/src/java/org/apache/solr/handler/component/CombinedQueryComponent.java
index 54a73256e28..5447b57a79c 100644
---
a/solr/core/src/java/org/apache/solr/handler/component/CombinedQueryComponent.java
+++
b/solr/core/src/java/org/apache/solr/handler/component/CombinedQueryComponent.java
@@ -455,10 +455,9 @@ public class CombinedQueryComponent extends QueryComponent
implements SolrCoreAw
populateNextCursorMarkFromMergedShards(rb);
if (thereArePartialResults) {
- updateResponseHeader(
- rb.rsp.getResponseHeader(),
- SolrQueryResponse.RESPONSE_HEADER_PARTIAL_RESULTS_KEY,
- Boolean.TRUE);
+ rb.rsp
+ .getResponseHeader()
+ .put(SolrQueryResponse.RESPONSE_HEADER_PARTIAL_RESULTS_KEY,
Boolean.TRUE);
}
if (segmentTerminatedEarly != null) {
final Object existingSegmentTerminatedEarly =
@@ -472,10 +471,9 @@ public class CombinedQueryComponent extends QueryComponent
implements SolrCoreAw
SolrQueryResponse.RESPONSE_HEADER_SEGMENT_TERMINATED_EARLY_KEY,
segmentTerminatedEarly);
} else if (!Boolean.TRUE.equals(existingSegmentTerminatedEarly) &&
segmentTerminatedEarly) {
- updateResponseHeader(
- rb.rsp.getResponseHeader(),
- SolrQueryResponse.RESPONSE_HEADER_SEGMENT_TERMINATED_EARLY_KEY,
- true);
+ rb.rsp
+ .getResponseHeader()
+
.put(SolrQueryResponse.RESPONSE_HEADER_SEGMENT_TERMINATED_EARLY_KEY, true);
}
}
if (maxHitsTerminatedEarly) {
diff --git
a/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
b/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
index 9d51160bba2..0cd1c076060 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
@@ -1237,10 +1237,9 @@ public class QueryComponent extends SearchComponent {
populateNextCursorMarkFromMergedShards(rb);
if (thereArePartialResults) {
- updateResponseHeader(
- rb.rsp.getResponseHeader(),
- SolrQueryResponse.RESPONSE_HEADER_PARTIAL_RESULTS_KEY,
- Boolean.TRUE);
+ rb.rsp
+ .getResponseHeader()
+ .put(SolrQueryResponse.RESPONSE_HEADER_PARTIAL_RESULTS_KEY,
Boolean.TRUE);
}
if (segmentTerminatedEarly != null) {
final Object existingSegmentTerminatedEarly =
@@ -1255,10 +1254,11 @@ public class QueryComponent extends SearchComponent {
segmentTerminatedEarly);
} else if (!Boolean.TRUE.equals(existingSegmentTerminatedEarly)
&& Boolean.TRUE.equals(segmentTerminatedEarly)) {
- updateResponseHeader(
- rb.rsp.getResponseHeader(),
- SolrQueryResponse.RESPONSE_HEADER_SEGMENT_TERMINATED_EARLY_KEY,
- segmentTerminatedEarly);
+ rb.rsp
+ .getResponseHeader()
+ .put(
+ SolrQueryResponse.RESPONSE_HEADER_SEGMENT_TERMINATED_EARLY_KEY,
+ segmentTerminatedEarly);
}
}
if (maxHitsTerminatedEarly) {
@@ -1280,11 +1280,6 @@ public class QueryComponent extends SearchComponent {
}
}
- @SuppressWarnings("unchecked")
- protected static void updateResponseHeader(NamedList<Object> header, String
key, Object value) {
- ((SimpleOrderedMap<Object>) header).put(key, value);
- }
-
protected void setResultIdsAndResponseDocs(
ResponseBuilder rb,
ShardDocQueue shardDocQueue,
diff --git a/solr/core/src/java/org/apache/solr/response/SolrQueryResponse.java
b/solr/core/src/java/org/apache/solr/response/SolrQueryResponse.java
index 5f2b67622d6..9e3a6dcb7c8 100644
--- a/solr/core/src/java/org/apache/solr/response/SolrQueryResponse.java
+++ b/solr/core/src/java/org/apache/solr/response/SolrQueryResponse.java
@@ -258,7 +258,7 @@ public class SolrQueryResponse {
}
/** Set response header */
- public void addResponseHeader(NamedList<Object> header) {
+ public void addResponseHeader(SimpleOrderedMap<Object> header) {
values.add(RESPONSE_HEADER_KEY, header);
}
@@ -268,10 +268,9 @@ public class SolrQueryResponse {
}
/** Response header to be logged */
- public NamedList<Object> getResponseHeader() {
- @SuppressWarnings("unchecked")
- SimpleOrderedMap<Object> header = (SimpleOrderedMap<Object>)
values.get(RESPONSE_HEADER_KEY);
- return header;
+ @SuppressWarnings("unchecked")
+ public SimpleOrderedMap<Object> getResponseHeader() {
+ return (SimpleOrderedMap<Object>) values.get(RESPONSE_HEADER_KEY);
}
/** Set response */
diff --git
a/solr/core/src/java/org/apache/solr/update/processor/IgnoreCommitOptimizeUpdateProcessorFactory.java
b/solr/core/src/java/org/apache/solr/update/processor/IgnoreCommitOptimizeUpdateProcessorFactory.java
index 9e8eff7cb55..f4d8abb901e 100644
---
a/solr/core/src/java/org/apache/solr/update/processor/IgnoreCommitOptimizeUpdateProcessorFactory.java
+++
b/solr/core/src/java/org/apache/solr/update/processor/IgnoreCommitOptimizeUpdateProcessorFactory.java
@@ -139,7 +139,7 @@ public class IgnoreCommitOptimizeUpdateProcessorFactory
extends UpdateRequestPro
IgnoreCommitOptimizeUpdateProcessorFactory.log.info(
"{} from client application ignored with status code: 200",
cmdType);
if (responseMsg != null) {
- NamedList<Object> responseHeader = rsp.getResponseHeader();
+ SimpleOrderedMap<Object> responseHeader = rsp.getResponseHeader();
if (responseHeader != null) {
responseHeader.add("msg", responseMsg);
} else {
diff --git
a/solr/core/src/test/org/apache/solr/response/TestSolrQueryResponse.java
b/solr/core/src/test/org/apache/solr/response/TestSolrQueryResponse.java
index 3d6fbe46e57..b414eb5bdd7 100644
--- a/solr/core/src/test/org/apache/solr/response/TestSolrQueryResponse.java
+++ b/solr/core/src/test/org/apache/solr/response/TestSolrQueryResponse.java
@@ -279,7 +279,7 @@ public class TestSolrQueryResponse extends SolrTestCase {
public void testResponseHeader() {
final SolrQueryResponse response = new SolrQueryResponse();
assertNull("responseHeader initially present",
response.getResponseHeader());
- final NamedList<Object> newValue = new SimpleOrderedMap<>();
+ final SimpleOrderedMap<Object> newValue = new SimpleOrderedMap<>();
newValue.add("key1", "value1");
response.add("key2", "value2");
response.addResponseHeader(newValue);
@@ -300,7 +300,7 @@ public class TestSolrQueryResponse extends SolrTestCase {
@Test
public void testConvertToHEADStyleResponse() {
final SolrQueryResponse response = new SolrQueryResponse();
- final NamedList<Object> newValue = new SimpleOrderedMap<>();
+ final SimpleOrderedMap<Object> newValue = new SimpleOrderedMap<>();
newValue.add("responseHeaderKey1", "value1");
response.add("responseHeaderKey2", "value2");
response.addResponseHeader(newValue);