You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by dl...@apache.org on 2021/10/08 21:04:36 UTC
[asterixdb] branch master updated: [NO ISSUE][API] Make
QueryServiceServlet return 'server' header
This is an automated email from the ASF dual-hosted git repository.
dlych pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git
The following commit(s) were added to refs/heads/master by this push:
new b65e682 [NO ISSUE][API] Make QueryServiceServlet return 'server' header
b65e682 is described below
commit b65e68243efc77911eeb66b0ff4c0fbd605da978
Author: Dmitry Lychagin <dm...@couchbase.com>
AuthorDate: Wed Oct 6 11:20:28 2021 -0700
[NO ISSUE][API] Make QueryServiceServlet return 'server' header
- user model changes: no
- storage format changes: no
- interface changes: yes
Details:
- Add 'server' header to QueryServiceServlet's
'options' method response
Change-Id: If2e465f1f48235d5bd036ed0da8b0100a9ec7612
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/13585
Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Michael Blow <mb...@apache.org>
---
.../api/http/server/QueryServiceServlet.java | 22 ++++++++++++++++++++++
.../hyracks/bootstrap/ApplicationConfigurator.java | 9 ++++++++-
.../apache/hyracks/http/server/utils/HttpUtil.java | 4 ++++
3 files changed, 34 insertions(+), 1 deletion(-)
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
index 74682cf..26e4b96 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
@@ -63,6 +63,7 @@ import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.common.exceptions.RuntimeDataException;
import org.apache.asterix.compiler.provider.ILangCompilationProvider;
+import org.apache.asterix.hyracks.bootstrap.ApplicationConfigurator;
import org.apache.asterix.lang.common.base.IParser;
import org.apache.asterix.lang.common.base.IParserFactory;
import org.apache.asterix.lang.common.base.Statement;
@@ -145,6 +146,10 @@ public class QueryServiceServlet extends AbstractQueryApiServlet {
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
}
response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
+ String server = getServerHeaderValue();
+ if (server != null) {
+ HttpUtil.setServerHeader(response, server);
+ }
response.setStatus(HttpResponseStatus.OK);
}
@@ -520,4 +525,21 @@ public class QueryServiceServlet extends AbstractQueryApiServlet {
protected static boolean isPrintingProfile(IStatementExecutor.Stats stats) {
return stats.getProfileType() == Stats.ProfileType.FULL && stats.getJobProfile() != null;
}
+
+ protected final String getServerHeaderValue() {
+ String name = getApplicationName();
+ if (name == null) {
+ return null;
+ }
+ String version = getApplicationVersion();
+ return version != null ? name + "/" + version : name;
+ }
+
+ protected String getApplicationName() {
+ return ApplicationConfigurator.APPLICATION_NAME;
+ }
+
+ protected String getApplicationVersion() {
+ return ApplicationConfigurator.getApplicationVersion(appCtx.getBuildProperties());
+ }
}
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ApplicationConfigurator.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ApplicationConfigurator.java
index c76d9b8..98a1820 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ApplicationConfigurator.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/ApplicationConfigurator.java
@@ -24,6 +24,7 @@ import java.io.StringWriter;
import java.util.Properties;
import org.apache.asterix.common.config.AsterixProperties;
+import org.apache.asterix.common.config.BuildProperties;
import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.common.exceptions.RuntimeDataException;
import org.apache.hyracks.api.config.IConfigManager;
@@ -36,9 +37,11 @@ import org.apache.hyracks.util.file.FileUtil;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-class ApplicationConfigurator {
+public class ApplicationConfigurator {
private static final Logger LOGGER = LogManager.getLogger();
+ public static final String APPLICATION_NAME = "Apache AsterixDB";
+
private ApplicationConfigurator() {
}
@@ -83,4 +86,8 @@ class ApplicationConfigurator {
LOGGER.warn("JRE version \"" + javaVersion + "\" is untested");
}
}
+
+ public static String getApplicationVersion(BuildProperties buildProperties) {
+ return buildProperties.getAllProps().get("git.build.version");
+ }
}
diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/utils/HttpUtil.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/utils/HttpUtil.java
index 835cd54..1d5df5c 100644
--- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/utils/HttpUtil.java
+++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/utils/HttpUtil.java
@@ -110,6 +110,10 @@ public class HttpUtil {
response.setHeader(HttpHeaderNames.CONTENT_TYPE, type);
}
+ public static void setServerHeader(IServletResponse response, String value) throws IOException {
+ response.setHeader(HttpHeaderNames.SERVER, value);
+ }
+
public static Map<String, String> getRequestHeaders(IServletRequest request) {
Map<String, String> headers = new HashMap<>();
request.getHttpRequest().headers().forEach(entry -> headers.put(entry.getKey(), entry.getValue()));