diff --git a/service/src/java/org/apache/hive/service/servlet/HS2LeadershipStatus.java b/service/src/java/org/apache/hive/service/servlet/HS2LeadershipStatus.java index 708fa0c..738c1db 100644 --- a/service/src/java/org/apache/hive/service/servlet/HS2LeadershipStatus.java +++ b/service/src/java/org/apache/hive/service/servlet/HS2LeadershipStatus.java @@ -17,8 +17,6 @@ */ package org.apache.hive.service.servlet; -import static org.apache.hive.http.HttpServer.CONF_CONTEXT_ATTRIBUTE; - import java.io.IOException; import java.util.concurrent.atomic.AtomicBoolean; @@ -27,9 +25,6 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.fs.CommonConfigurationKeys; -import org.apache.hadoop.security.authentication.client.KerberosAuthenticator; import org.apache.hive.http.HttpServer; import org.apache.hive.service.server.HiveServer2; import org.codehaus.jackson.map.ObjectMapper; @@ -45,6 +40,9 @@ public class HS2LeadershipStatus extends HttpServlet { private static final Logger LOG = LoggerFactory.getLogger(HS2LeadershipStatus.class); + private static final String ACCESS_CONTROL_ALLOW_METHODS = "Access-Control-Allow-Methods"; + private static final String ACCESS_CONTROL_ALLOW_ORIGIN = "Access-Control-Allow-Origin"; + @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { // admin check - @@ -57,6 +55,8 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro return; } + setResponseHeaders(response); + ServletContext ctx = getServletContext(); AtomicBoolean isLeader = (AtomicBoolean) ctx.getAttribute("hs2.isLeader"); LOG.info("Returning isLeader: {}", isLeader); @@ -66,11 +66,18 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro response.flushBuffer(); } + private void setResponseHeaders(final HttpServletResponse response) { + response.setContentType("application/json; charset=utf8"); + response.setHeader(ACCESS_CONTROL_ALLOW_METHODS, "GET,DELETE"); + response.setHeader(ACCESS_CONTROL_ALLOW_ORIGIN, "*"); + } + private class FailoverResponse { private boolean success; private String message; - FailoverResponse() { } + FailoverResponse() { + } public boolean isSuccess() { return success; @@ -101,6 +108,8 @@ public void doDelete(final HttpServletRequest request, final HttpServletResponse return; } + setResponseHeaders(response); + LOG.info("DELETE handler invoked for failover.."); ObjectMapper mapper = new ObjectMapper(); FailoverResponse failoverResponse = new FailoverResponse(); diff --git a/service/src/java/org/apache/hive/service/servlet/HS2Peers.java b/service/src/java/org/apache/hive/service/servlet/HS2Peers.java index bde6d6b..b19682d 100644 --- a/service/src/java/org/apache/hive/service/servlet/HS2Peers.java +++ b/service/src/java/org/apache/hive/service/servlet/HS2Peers.java @@ -42,6 +42,9 @@ */ public class HS2Peers extends HttpServlet { private static final Logger LOG = LoggerFactory.getLogger(HS2Peers.class); + private static final String ACCESS_CONTROL_ALLOW_METHODS = "Access-Control-Allow-Methods"; + private static final String ACCESS_CONTROL_ALLOW_ORIGIN = "Access-Control-Allow-Origin"; + public static class HS2Instances { private Collection hiveServer2Instances; @@ -81,6 +84,10 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro return; } + response.setContentType("application/json; charset=utf8"); + response.setHeader(ACCESS_CONTROL_ALLOW_METHODS, "GET"); + response.setHeader(ACCESS_CONTROL_ALLOW_ORIGIN, "*"); + ServletContext ctx = getServletContext(); HiveConf hiveConf = (HiveConf) ctx.getAttribute("hiveconf"); HS2ActivePassiveHARegistry hs2Registry = HS2ActivePassiveHARegistryClient.getClient(hiveConf);