From 4e2910af419d4a5e58acebccc10d4ae89094ede2 Mon Sep 17 00:00:00 2001 From: Sam Hobbs Date: Fri, 16 Jun 2023 12:06:20 +0100 Subject: [PATCH 01/21] Added server distribution and version into response header Signed-off-by: Sam Hobbs --- CHANGELOG.md | 1 + .../org/opensearch/http/DefaultRestChannel.java | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f5bc63794e46d..d6850b5aafcf9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Allow mmap to use new JDK-19 preview APIs in Apache Lucene 9.4+ ([#5151](https://github.com/opensearch-project/OpenSearch/pull/5151)) - Add events correlation engine plugin ([#6854](https://github.com/opensearch-project/OpenSearch/issues/6854)) - Add support for ignoring missing Javadoc on generated code using annotation ([#7604](https://github.com/opensearch-project/OpenSearch/pull/7604)) +- Added server version as response header [#6583](https://github.com/opensearch-project/OpenSearch/issues/6583) ### Dependencies - Bump `log4j-core` from 2.18.0 to 2.19.0 diff --git a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java index bee7ae9d31d27..8593bc92bdabf 100644 --- a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java +++ b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java @@ -32,6 +32,7 @@ package org.opensearch.http; +import org.opensearch.Build; import org.opensearch.action.ActionListener; import org.opensearch.common.Nullable; import org.opensearch.common.bytes.BytesArray; @@ -50,6 +51,7 @@ import org.opensearch.rest.RestStatus; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -77,6 +79,7 @@ public class DefaultRestChannel extends AbstractRestChannel implements RestChann private final HttpChannel httpChannel; private final CorsHandler corsHandler; + @Nullable private final HttpTracer tracerLog; @@ -147,12 +150,25 @@ public void sendResponse(RestResponse restResponse) { addCustomHeaders(httpResponse, restResponse.getHeaders()); addCustomHeaders(httpResponse, threadContext.getResponseHeaders()); + Map> serverHeader = new HashMap<>(); + List serverHeaderString = new ArrayList<>(); + + serverHeaderString.add("OpenSearch/" + Build.CURRENT.getQualifiedVersion() + " (" + Build.CURRENT.getDistribution() + ")"); + + serverHeader.put("serverHeader", serverHeaderString); + + addCustomHeaders(httpResponse, serverHeader); + // If our response doesn't specify a content-type header, set one setHeaderField(httpResponse, CONTENT_TYPE, restResponse.contentType(), false); // If our response has no content-length, calculate and set one contentLength = String.valueOf(restResponse.content().length()); setHeaderField(httpResponse, CONTENT_LENGTH, contentLength, false); + + + + addCookies(httpResponse); BytesStreamOutput bytesStreamOutput = bytesOutputOrNull(); From 1bc1e3dde1efe42543f5d8431a5a2ebd851fc4a0 Mon Sep 17 00:00:00 2001 From: Sam Hobbs Date: Fri, 16 Jun 2023 12:18:03 +0100 Subject: [PATCH 02/21] Removed extra lines Signed-off-by: Sam Hobbs --- .../src/main/java/org/opensearch/http/DefaultRestChannel.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java index 8593bc92bdabf..e98e7b76107c4 100644 --- a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java +++ b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java @@ -165,10 +165,6 @@ public void sendResponse(RestResponse restResponse) { contentLength = String.valueOf(restResponse.content().length()); setHeaderField(httpResponse, CONTENT_LENGTH, contentLength, false); - - - - addCookies(httpResponse); BytesStreamOutput bytesStreamOutput = bytesOutputOrNull(); From 1e218cbeb37a779ec815c54375f2cfd45260f63d Mon Sep 17 00:00:00 2001 From: Sam Hobbs <118170270+Sam-ScottLogic@users.noreply.github.com> Date: Fri, 16 Jun 2023 12:18:06 +0100 Subject: [PATCH 03/21] Update server/src/main/java/org/opensearch/http/DefaultRestChannel.java Co-authored-by: Owais Kazi Signed-off-by: Sam Hobbs <118170270+Sam-ScottLogic@users.noreply.github.com> --- .../src/main/java/org/opensearch/http/DefaultRestChannel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java index e98e7b76107c4..4e4154037e75b 100644 --- a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java +++ b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java @@ -155,7 +155,7 @@ public void sendResponse(RestResponse restResponse) { serverHeaderString.add("OpenSearch/" + Build.CURRENT.getQualifiedVersion() + " (" + Build.CURRENT.getDistribution() + ")"); - serverHeader.put("serverHeader", serverHeaderString); + serverHeader.put("serverHeader", Arrays.asList("OpenSearch/" + Build.CURRENT.getQualifiedVersion() + " (" + Build.CURRENT.getDistribution() + ")")); addCustomHeaders(httpResponse, serverHeader); From d24139bafc3efda03a28693e3cb7291de4617822 Mon Sep 17 00:00:00 2001 From: Sam Hobbs Date: Fri, 16 Jun 2023 12:31:50 +0100 Subject: [PATCH 04/21] Moved defining of server header string Signed-off-by: Sam Hobbs --- .../org/opensearch/http/DefaultRestChannel.java | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java index 4e4154037e75b..ddc0a3f1d4325 100644 --- a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java +++ b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java @@ -50,10 +50,7 @@ import org.opensearch.rest.RestResponse; import org.opensearch.rest.RestStatus; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import static org.opensearch.tasks.Task.X_OPAQUE_ID; @@ -78,7 +75,7 @@ public class DefaultRestChannel extends AbstractRestChannel implements RestChann private final ThreadContext threadContext; private final HttpChannel httpChannel; private final CorsHandler corsHandler; - + private final Map> serverHeader; @Nullable private final HttpTracer tracerLog; @@ -101,6 +98,7 @@ public class DefaultRestChannel extends AbstractRestChannel implements RestChann this.threadContext = threadContext; this.corsHandler = corsHandler; this.tracerLog = tracerLog; + this.serverHeader = new HashMap<>(); } @Override @@ -150,11 +148,6 @@ public void sendResponse(RestResponse restResponse) { addCustomHeaders(httpResponse, restResponse.getHeaders()); addCustomHeaders(httpResponse, threadContext.getResponseHeaders()); - Map> serverHeader = new HashMap<>(); - List serverHeaderString = new ArrayList<>(); - - serverHeaderString.add("OpenSearch/" + Build.CURRENT.getQualifiedVersion() + " (" + Build.CURRENT.getDistribution() + ")"); - serverHeader.put("serverHeader", Arrays.asList("OpenSearch/" + Build.CURRENT.getQualifiedVersion() + " (" + Build.CURRENT.getDistribution() + ")")); addCustomHeaders(httpResponse, serverHeader); From 00dadc7d53e6831d19bcda0da250619baefb8e0e Mon Sep 17 00:00:00 2001 From: Sam Hobbs Date: Mon, 19 Jun 2023 14:43:01 +0100 Subject: [PATCH 05/21] Removed wildcard import Signed-off-by: Sam Hobbs --- .../main/java/org/opensearch/http/DefaultRestChannel.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java index ddc0a3f1d4325..f648c1f94fd71 100644 --- a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java +++ b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java @@ -49,8 +49,12 @@ import org.opensearch.rest.RestRequest; import org.opensearch.rest.RestResponse; import org.opensearch.rest.RestStatus; +import java.util.List; +import java.util.ArrayList; +import java.util.Map; +import java.util.HashMap; +import java.util.Arrays; -import java.util.*; import static org.opensearch.tasks.Task.X_OPAQUE_ID; From d16008c09639e8833c3b44b45a857b5ddd940863 Mon Sep 17 00:00:00 2001 From: Sam Hobbs Date: Tue, 20 Jun 2023 09:23:42 +0100 Subject: [PATCH 06/21] Applied spotless to files Signed-off-by: Sam Hobbs --- .../main/java/org/opensearch/http/DefaultRestChannel.java | 8 +++++--- .../java/org/opensearch/http/DefaultRestChannelTests.java | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java index f648c1f94fd71..51ee500bab9ba 100644 --- a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java +++ b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java @@ -55,7 +55,6 @@ import java.util.HashMap; import java.util.Arrays; - import static org.opensearch.tasks.Task.X_OPAQUE_ID; /** @@ -152,9 +151,12 @@ public void sendResponse(RestResponse restResponse) { addCustomHeaders(httpResponse, restResponse.getHeaders()); addCustomHeaders(httpResponse, threadContext.getResponseHeaders()); - serverHeader.put("serverHeader", Arrays.asList("OpenSearch/" + Build.CURRENT.getQualifiedVersion() + " (" + Build.CURRENT.getDistribution() + ")")); + serverHeader.put( + "serverHeader", + Arrays.asList("OpenSearch/" + Build.CURRENT.getQualifiedVersion() + " (" + Build.CURRENT.getDistribution() + ")") + ); - addCustomHeaders(httpResponse, serverHeader); + addCustomHeaders(httpResponse, serverHeader); // If our response doesn't specify a content-type header, set one setHeaderField(httpResponse, CONTENT_TYPE, restResponse.contentType(), false); diff --git a/server/src/test/java/org/opensearch/http/DefaultRestChannelTests.java b/server/src/test/java/org/opensearch/http/DefaultRestChannelTests.java index c0f6a9ba68383..4fb65ad877d22 100644 --- a/server/src/test/java/org/opensearch/http/DefaultRestChannelTests.java +++ b/server/src/test/java/org/opensearch/http/DefaultRestChannelTests.java @@ -189,6 +189,7 @@ public void testHeadersSet() { assertEquals("abc", headers.get(Task.X_OPAQUE_ID).get(0)); assertEquals(Integer.toString(resp.content().length()), headers.get(DefaultRestChannel.CONTENT_LENGTH).get(0)); assertEquals(resp.contentType(), headers.get(DefaultRestChannel.CONTENT_TYPE).get(0)); + } public void testCookiesSet() { From 2b6335574535a231fdc83c067212db12f81940b4 Mon Sep 17 00:00:00 2001 From: Sam Hobbs Date: Tue, 20 Jun 2023 09:50:16 +0100 Subject: [PATCH 07/21] Added to testHeadersSet test within the default rest channel test file to test that server version is returned Signed-off-by: Sam Hobbs --- .../test/java/org/opensearch/http/DefaultRestChannelTests.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/src/test/java/org/opensearch/http/DefaultRestChannelTests.java b/server/src/test/java/org/opensearch/http/DefaultRestChannelTests.java index 4fb65ad877d22..5e23a043b9903 100644 --- a/server/src/test/java/org/opensearch/http/DefaultRestChannelTests.java +++ b/server/src/test/java/org/opensearch/http/DefaultRestChannelTests.java @@ -32,6 +32,7 @@ package org.opensearch.http; +import org.opensearch.Build; import org.opensearch.action.ActionListener; import org.opensearch.common.bytes.BytesArray; import org.opensearch.common.bytes.BytesReference; @@ -189,7 +190,7 @@ public void testHeadersSet() { assertEquals("abc", headers.get(Task.X_OPAQUE_ID).get(0)); assertEquals(Integer.toString(resp.content().length()), headers.get(DefaultRestChannel.CONTENT_LENGTH).get(0)); assertEquals(resp.contentType(), headers.get(DefaultRestChannel.CONTENT_TYPE).get(0)); - + assertEquals("OpenSearch/" + Build.CURRENT.getQualifiedVersion() + " (" + Build.CURRENT.getDistribution() + ")",headers.get("serverHeader").get(0)); } public void testCookiesSet() { From a0fee3693e72009efffb326da5d65b8c8ee39547 Mon Sep 17 00:00:00 2001 From: Sam Hobbs Date: Tue, 20 Jun 2023 13:29:35 +0100 Subject: [PATCH 08/21] Ran spotless Signed-off-by: Sam Hobbs --- .../java/org/opensearch/http/DefaultRestChannelTests.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/server/src/test/java/org/opensearch/http/DefaultRestChannelTests.java b/server/src/test/java/org/opensearch/http/DefaultRestChannelTests.java index 5e23a043b9903..652041b473582 100644 --- a/server/src/test/java/org/opensearch/http/DefaultRestChannelTests.java +++ b/server/src/test/java/org/opensearch/http/DefaultRestChannelTests.java @@ -190,7 +190,10 @@ public void testHeadersSet() { assertEquals("abc", headers.get(Task.X_OPAQUE_ID).get(0)); assertEquals(Integer.toString(resp.content().length()), headers.get(DefaultRestChannel.CONTENT_LENGTH).get(0)); assertEquals(resp.contentType(), headers.get(DefaultRestChannel.CONTENT_TYPE).get(0)); - assertEquals("OpenSearch/" + Build.CURRENT.getQualifiedVersion() + " (" + Build.CURRENT.getDistribution() + ")",headers.get("serverHeader").get(0)); + assertEquals( + "OpenSearch/" + Build.CURRENT.getQualifiedVersion() + " (" + Build.CURRENT.getDistribution() + ")", + headers.get("serverHeader").get(0) + ); } public void testCookiesSet() { From bac79db749d87b2ac9552f410e5e877983d4a4c9 Mon Sep 17 00:00:00 2001 From: Sam Hobbs Date: Tue, 27 Jun 2023 14:47:19 +0100 Subject: [PATCH 09/21] Added comment Signed-off-by: Sam Hobbs --- server/src/main/java/org/opensearch/http/DefaultRestChannel.java | 1 + 1 file changed, 1 insertion(+) diff --git a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java index 51ee500bab9ba..cb0149456d42c 100644 --- a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java +++ b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java @@ -151,6 +151,7 @@ public void sendResponse(RestResponse restResponse) { addCustomHeaders(httpResponse, restResponse.getHeaders()); addCustomHeaders(httpResponse, threadContext.getResponseHeaders()); + // Add server header serverHeader.put( "serverHeader", Arrays.asList("OpenSearch/" + Build.CURRENT.getQualifiedVersion() + " (" + Build.CURRENT.getDistribution() + ")") From 8299b6f84a7e78e3d8f34a0f5975bc348a769e72 Mon Sep 17 00:00:00 2001 From: Sam Hobbs Date: Thu, 29 Jun 2023 10:36:21 +0100 Subject: [PATCH 10/21] Created static string for reused server header title and name of application strings, also refactored server header to server version Signed-off-by: Sam Hobbs --- .../main/java/org/opensearch/http/DefaultRestChannel.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java index cb0149456d42c..6bc6d5849ddc6 100644 --- a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java +++ b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java @@ -71,6 +71,8 @@ public class DefaultRestChannel extends AbstractRestChannel implements RestChann static final String CONTENT_TYPE = "content-type"; static final String CONTENT_LENGTH = "content-length"; static final String SET_COOKIE = "set-cookie"; + static final String SERVER_VERSION = "server-version"; + static final String OPEN_SEARCH_NAME = "OpenSearch"; private final HttpRequest httpRequest; private final BigArrays bigArrays; @@ -80,6 +82,7 @@ public class DefaultRestChannel extends AbstractRestChannel implements RestChann private final CorsHandler corsHandler; private final Map> serverHeader; + @Nullable private final HttpTracer tracerLog; @@ -153,8 +156,8 @@ public void sendResponse(RestResponse restResponse) { // Add server header serverHeader.put( - "serverHeader", - Arrays.asList("OpenSearch/" + Build.CURRENT.getQualifiedVersion() + " (" + Build.CURRENT.getDistribution() + ")") + SERVER_VERSION, + Arrays.asList(OPEN_SEARCH_NAME + "/" + Build.CURRENT.getQualifiedVersion() + " (" + Build.CURRENT.getDistribution() + ")") ); addCustomHeaders(httpResponse, serverHeader); From d1cc7c59cff2188cd73a3b656e7b768b0ba551b8 Mon Sep 17 00:00:00 2001 From: Sam Hobbs Date: Thu, 29 Jun 2023 11:21:50 +0100 Subject: [PATCH 11/21] Refactored hash map from server header to server version and updated test Signed-off-by: Sam Hobbs --- .../main/java/org/opensearch/http/DefaultRestChannel.java | 8 ++++---- .../java/org/opensearch/http/DefaultRestChannelTests.java | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java index 6bc6d5849ddc6..ac8828322cbc1 100644 --- a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java +++ b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java @@ -80,7 +80,7 @@ public class DefaultRestChannel extends AbstractRestChannel implements RestChann private final ThreadContext threadContext; private final HttpChannel httpChannel; private final CorsHandler corsHandler; - private final Map> serverHeader; + private final Map> serverVersion; @Nullable @@ -104,7 +104,7 @@ public class DefaultRestChannel extends AbstractRestChannel implements RestChann this.threadContext = threadContext; this.corsHandler = corsHandler; this.tracerLog = tracerLog; - this.serverHeader = new HashMap<>(); + this.serverVersion = new HashMap<>(); } @Override @@ -155,12 +155,12 @@ public void sendResponse(RestResponse restResponse) { addCustomHeaders(httpResponse, threadContext.getResponseHeaders()); // Add server header - serverHeader.put( + serverVersion.put( SERVER_VERSION, Arrays.asList(OPEN_SEARCH_NAME + "/" + Build.CURRENT.getQualifiedVersion() + " (" + Build.CURRENT.getDistribution() + ")") ); - addCustomHeaders(httpResponse, serverHeader); + addCustomHeaders(httpResponse, serverVersion); // If our response doesn't specify a content-type header, set one setHeaderField(httpResponse, CONTENT_TYPE, restResponse.contentType(), false); diff --git a/server/src/test/java/org/opensearch/http/DefaultRestChannelTests.java b/server/src/test/java/org/opensearch/http/DefaultRestChannelTests.java index 652041b473582..4b401b276b52f 100644 --- a/server/src/test/java/org/opensearch/http/DefaultRestChannelTests.java +++ b/server/src/test/java/org/opensearch/http/DefaultRestChannelTests.java @@ -192,7 +192,7 @@ public void testHeadersSet() { assertEquals(resp.contentType(), headers.get(DefaultRestChannel.CONTENT_TYPE).get(0)); assertEquals( "OpenSearch/" + Build.CURRENT.getQualifiedVersion() + " (" + Build.CURRENT.getDistribution() + ")", - headers.get("serverHeader").get(0) + headers.get("server-version").get(0) ); } From fb2ea8c476291933862fdbf8151d2e8e153acde3 Mon Sep 17 00:00:00 2001 From: Sam Hobbs Date: Thu, 29 Jun 2023 11:26:59 +0100 Subject: [PATCH 12/21] Ran spotless Signed-off-by: Sam Hobbs --- server/src/main/java/org/opensearch/http/DefaultRestChannel.java | 1 - 1 file changed, 1 deletion(-) diff --git a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java index ac8828322cbc1..36426247f3a46 100644 --- a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java +++ b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java @@ -82,7 +82,6 @@ public class DefaultRestChannel extends AbstractRestChannel implements RestChann private final CorsHandler corsHandler; private final Map> serverVersion; - @Nullable private final HttpTracer tracerLog; From 8537e22cb71f7af8f0fe2e0c8fb47de7ff46cc58 Mon Sep 17 00:00:00 2001 From: Sam Hobbs Date: Thu, 29 Jun 2023 15:55:28 +0100 Subject: [PATCH 13/21] Moved server version field from global variable to local, defined sever string as static value Signed-off-by: Sam Hobbs --- .../main/java/org/opensearch/http/DefaultRestChannel.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java index 36426247f3a46..936ac8b07b5aa 100644 --- a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java +++ b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java @@ -73,6 +73,7 @@ public class DefaultRestChannel extends AbstractRestChannel implements RestChann static final String SET_COOKIE = "set-cookie"; static final String SERVER_VERSION = "server-version"; static final String OPEN_SEARCH_NAME = "OpenSearch"; + static final String SERVER_VERSION_VALUE = "OpenSearch/" + Build.CURRENT.getQualifiedVersion() + " (" + Build.CURRENT.getDistribution() + ")"; private final HttpRequest httpRequest; private final BigArrays bigArrays; @@ -80,7 +81,6 @@ public class DefaultRestChannel extends AbstractRestChannel implements RestChann private final ThreadContext threadContext; private final HttpChannel httpChannel; private final CorsHandler corsHandler; - private final Map> serverVersion; @Nullable private final HttpTracer tracerLog; @@ -103,7 +103,6 @@ public class DefaultRestChannel extends AbstractRestChannel implements RestChann this.threadContext = threadContext; this.corsHandler = corsHandler; this.tracerLog = tracerLog; - this.serverVersion = new HashMap<>(); } @Override @@ -154,9 +153,10 @@ public void sendResponse(RestResponse restResponse) { addCustomHeaders(httpResponse, threadContext.getResponseHeaders()); // Add server header + Map> serverVersion = new HashMap<>(); serverVersion.put( SERVER_VERSION, - Arrays.asList(OPEN_SEARCH_NAME + "/" + Build.CURRENT.getQualifiedVersion() + " (" + Build.CURRENT.getDistribution() + ")") + Arrays.asList(SERVER_VERSION_VALUE) ); addCustomHeaders(httpResponse, serverVersion); From f96fc2d003f9372730a8f4acb2d4a11efc69bdac Mon Sep 17 00:00:00 2001 From: Sam Hobbs Date: Thu, 29 Jun 2023 15:58:23 +0100 Subject: [PATCH 14/21] Added prefix to header title Signed-off-by: Sam Hobbs --- .../src/main/java/org/opensearch/http/DefaultRestChannel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java index 936ac8b07b5aa..cba8d42dac42e 100644 --- a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java +++ b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java @@ -71,7 +71,7 @@ public class DefaultRestChannel extends AbstractRestChannel implements RestChann static final String CONTENT_TYPE = "content-type"; static final String CONTENT_LENGTH = "content-length"; static final String SET_COOKIE = "set-cookie"; - static final String SERVER_VERSION = "server-version"; + static final String SERVER_VERSION = "X-OpenSearch-Version"; static final String OPEN_SEARCH_NAME = "OpenSearch"; static final String SERVER_VERSION_VALUE = "OpenSearch/" + Build.CURRENT.getQualifiedVersion() + " (" + Build.CURRENT.getDistribution() + ")"; From 9f65b3cce129c3fc624fa09a25014432d0fa0d7b Mon Sep 17 00:00:00 2001 From: Sam Hobbs Date: Thu, 29 Jun 2023 16:01:12 +0100 Subject: [PATCH 15/21] Removed redundant serverVersion field and instead inlined creation of map passed into addCustomHeader method Signed-off-by: Sam Hobbs --- .../java/org/opensearch/http/DefaultRestChannel.java | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java index cba8d42dac42e..185f0baa60861 100644 --- a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java +++ b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java @@ -152,14 +152,7 @@ public void sendResponse(RestResponse restResponse) { addCustomHeaders(httpResponse, restResponse.getHeaders()); addCustomHeaders(httpResponse, threadContext.getResponseHeaders()); - // Add server header - Map> serverVersion = new HashMap<>(); - serverVersion.put( - SERVER_VERSION, - Arrays.asList(SERVER_VERSION_VALUE) - ); - - addCustomHeaders(httpResponse, serverVersion); + addCustomHeaders(httpResponse, Map.of(SERVER_VERSION,List.of(SERVER_VERSION_VALUE))); // If our response doesn't specify a content-type header, set one setHeaderField(httpResponse, CONTENT_TYPE, restResponse.contentType(), false); From 04ed8fe6d972fce42e82f8519e483dba3dd9c817 Mon Sep 17 00:00:00 2001 From: Sam Hobbs Date: Thu, 29 Jun 2023 16:05:56 +0100 Subject: [PATCH 16/21] Ran spotless Signed-off-by: Sam Hobbs --- .../java/org/opensearch/http/DefaultRestChannel.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java index 185f0baa60861..392ef3d0b33e5 100644 --- a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java +++ b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java @@ -52,8 +52,6 @@ import java.util.List; import java.util.ArrayList; import java.util.Map; -import java.util.HashMap; -import java.util.Arrays; import static org.opensearch.tasks.Task.X_OPAQUE_ID; @@ -73,7 +71,11 @@ public class DefaultRestChannel extends AbstractRestChannel implements RestChann static final String SET_COOKIE = "set-cookie"; static final String SERVER_VERSION = "X-OpenSearch-Version"; static final String OPEN_SEARCH_NAME = "OpenSearch"; - static final String SERVER_VERSION_VALUE = "OpenSearch/" + Build.CURRENT.getQualifiedVersion() + " (" + Build.CURRENT.getDistribution() + ")"; + static final String SERVER_VERSION_VALUE = "OpenSearch/" + + Build.CURRENT.getQualifiedVersion() + + " (" + + Build.CURRENT.getDistribution() + + ")"; private final HttpRequest httpRequest; private final BigArrays bigArrays; @@ -152,7 +154,7 @@ public void sendResponse(RestResponse restResponse) { addCustomHeaders(httpResponse, restResponse.getHeaders()); addCustomHeaders(httpResponse, threadContext.getResponseHeaders()); - addCustomHeaders(httpResponse, Map.of(SERVER_VERSION,List.of(SERVER_VERSION_VALUE))); + addCustomHeaders(httpResponse, Map.of(SERVER_VERSION, List.of(SERVER_VERSION_VALUE))); // If our response doesn't specify a content-type header, set one setHeaderField(httpResponse, CONTENT_TYPE, restResponse.contentType(), false); From a34147c5f68b975656c6b60019bb5cdf32594a67 Mon Sep 17 00:00:00 2001 From: Sam Hobbs Date: Thu, 29 Jun 2023 16:08:57 +0100 Subject: [PATCH 17/21] Removed redundant OPEN_SEARCH_NAME_VALUE Signed-off-by: Sam Hobbs --- server/src/main/java/org/opensearch/http/DefaultRestChannel.java | 1 - 1 file changed, 1 deletion(-) diff --git a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java index 392ef3d0b33e5..922f3b7bb7892 100644 --- a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java +++ b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java @@ -70,7 +70,6 @@ public class DefaultRestChannel extends AbstractRestChannel implements RestChann static final String CONTENT_LENGTH = "content-length"; static final String SET_COOKIE = "set-cookie"; static final String SERVER_VERSION = "X-OpenSearch-Version"; - static final String OPEN_SEARCH_NAME = "OpenSearch"; static final String SERVER_VERSION_VALUE = "OpenSearch/" + Build.CURRENT.getQualifiedVersion() + " (" From c887a0e0233501d5680d589df94ad968abe054be Mon Sep 17 00:00:00 2001 From: Sam Hobbs <118170270+Sam-ScottLogic@users.noreply.github.com> Date: Fri, 30 Jun 2023 12:36:03 +0100 Subject: [PATCH 18/21] Update server/src/test/java/org/opensearch/http/DefaultRestChannelTests.java Co-authored-by: Andriy Redko Signed-off-by: Sam Hobbs <118170270+Sam-ScottLogic@users.noreply.github.com> --- .../test/java/org/opensearch/http/DefaultRestChannelTests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/test/java/org/opensearch/http/DefaultRestChannelTests.java b/server/src/test/java/org/opensearch/http/DefaultRestChannelTests.java index 4b401b276b52f..7f75361289bee 100644 --- a/server/src/test/java/org/opensearch/http/DefaultRestChannelTests.java +++ b/server/src/test/java/org/opensearch/http/DefaultRestChannelTests.java @@ -192,7 +192,7 @@ public void testHeadersSet() { assertEquals(resp.contentType(), headers.get(DefaultRestChannel.CONTENT_TYPE).get(0)); assertEquals( "OpenSearch/" + Build.CURRENT.getQualifiedVersion() + " (" + Build.CURRENT.getDistribution() + ")", - headers.get("server-version").get(0) + headers.get("X-OpenSearch-Version").get(0) ); } From ec0876f48ffce987728b2dc4a3be03c1f8d1835c Mon Sep 17 00:00:00 2001 From: Sam Hobbs Date: Mon, 10 Jul 2023 10:29:13 +0100 Subject: [PATCH 19/21] Moved change log addition to 2.x unreleased and wrote message in imperative Signed-off-by: Sam Hobbs --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eaa1f6b71b8f0..b2d2261a063ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Allow mmap to use new JDK-19 preview APIs in Apache Lucene 9.4+ ([#5151](https://github.com/opensearch-project/OpenSearch/pull/5151)) - Add events correlation engine plugin ([#6854](https://github.com/opensearch-project/OpenSearch/issues/6854)) - Add support for ignoring missing Javadoc on generated code using annotation ([#7604](https://github.com/opensearch-project/OpenSearch/pull/7604)) -- Added server version as response header [#6583](https://github.com/opensearch-project/OpenSearch/issues/6583) ### Dependencies - Bump `log4j-core` from 2.18.0 to 2.19.0 @@ -93,6 +92,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Make remote cluster connection setup in async ([#8038](https://github.com/opensearch-project/OpenSearch/pull/8038)) - Add API to initialize extensions ([#8029]()https://github.com/opensearch-project/OpenSearch/pull/8029) - Add distributed tracing framework ([#7543](https://github.com/opensearch-project/OpenSearch/issues/7543)) +- Add server version as REST response header [#6583](https://github.com/opensearch-project/OpenSearch/issues/6583) ### Dependencies - Bump `com.azure:azure-storage-common` from 12.21.0 to 12.21.1 (#7566, #7814) From 1f43b86edbfca7f73225db3356b30d724b2a85b1 Mon Sep 17 00:00:00 2001 From: Sam Hobbs Date: Mon, 10 Jul 2023 10:43:56 +0100 Subject: [PATCH 20/21] Corrected name of fetched header in header test Signed-off-by: Sam Hobbs --- .../test/java/org/opensearch/http/DefaultRestChannelTests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/test/java/org/opensearch/http/DefaultRestChannelTests.java b/server/src/test/java/org/opensearch/http/DefaultRestChannelTests.java index 4b401b276b52f..7f75361289bee 100644 --- a/server/src/test/java/org/opensearch/http/DefaultRestChannelTests.java +++ b/server/src/test/java/org/opensearch/http/DefaultRestChannelTests.java @@ -192,7 +192,7 @@ public void testHeadersSet() { assertEquals(resp.contentType(), headers.get(DefaultRestChannel.CONTENT_TYPE).get(0)); assertEquals( "OpenSearch/" + Build.CURRENT.getQualifiedVersion() + " (" + Build.CURRENT.getDistribution() + ")", - headers.get("server-version").get(0) + headers.get("X-OpenSearch-Version").get(0) ); } From fc1abacedda95b7e1967e75e45292464bb72e5b0 Mon Sep 17 00:00:00 2001 From: Sam Hobbs Date: Wed, 12 Jul 2023 09:50:30 +0100 Subject: [PATCH 21/21] Added server version header value as constant Signed-off-by: Sam Hobbs --- .../src/main/java/org/opensearch/http/DefaultRestChannel.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java index 922f3b7bb7892..3612c2c23bc4d 100644 --- a/server/src/main/java/org/opensearch/http/DefaultRestChannel.java +++ b/server/src/main/java/org/opensearch/http/DefaultRestChannel.java @@ -82,6 +82,7 @@ public class DefaultRestChannel extends AbstractRestChannel implements RestChann private final ThreadContext threadContext; private final HttpChannel httpChannel; private final CorsHandler corsHandler; + private final Map> SERVER_VERSION_HEADER = Map.of(SERVER_VERSION, List.of(SERVER_VERSION_VALUE)); @Nullable private final HttpTracer tracerLog; @@ -153,7 +154,7 @@ public void sendResponse(RestResponse restResponse) { addCustomHeaders(httpResponse, restResponse.getHeaders()); addCustomHeaders(httpResponse, threadContext.getResponseHeaders()); - addCustomHeaders(httpResponse, Map.of(SERVER_VERSION, List.of(SERVER_VERSION_VALUE))); + addCustomHeaders(httpResponse, SERVER_VERSION_HEADER); // If our response doesn't specify a content-type header, set one setHeaderField(httpResponse, CONTENT_TYPE, restResponse.contentType(), false);