From 6dc459c18be5d4eb079ee79ae283674bf3d487cb Mon Sep 17 00:00:00 2001 From: freegians Date: Fri, 15 Apr 2016 14:00:34 +0900 Subject: [PATCH 1/5] TAJO-2120 add to Change tajo.master.info-http.address and tajo.master.info-http.address.context.path for tajo-site.xml --- .../src/main/java/org/apache/tajo/conf/TajoConf.java | 3 ++- .../main/java/org/apache/tajo/webapp/HttpServer.java | 6 +++++- tajo-dist/src/main/bin/start-tajo.sh | 3 ++- tajo-dist/src/main/conf/tajo-site.xml.template | 12 ++++++++++++ 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java b/tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java index c36f43bcae..e932fd0b79 100644 --- a/tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java +++ b/tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java @@ -137,7 +137,8 @@ public static enum ConfVars implements ConfigKey { Validators.networkAddr()), TAJO_MASTER_CLIENT_RPC_ADDRESS("tajo.master.client-rpc.address", "localhost:26002", Validators.networkAddr()), - TAJO_MASTER_INFO_ADDRESS("tajo.master.info-http.address", "0.0.0.0:26080", Validators.networkAddr()), + TAJO_MASTER_INFO_ADDRESS("tajo.master.info-http.address", "0.0.0.0:26088", Validators.networkAddr()), + TAJO_MASTER_INFO_ADDRESS_CONTEXT_PATH("tajo.master.info-http.address.context.path", "/tajo", Validators.javaString()), // Tajo Rest Service REST_SERVICE_ADDRESS("tajo.rest.service.address", "0.0.0.0:26880", Validators.networkAddr()), diff --git a/tajo-core/src/main/java/org/apache/tajo/webapp/HttpServer.java b/tajo-core/src/main/java/org/apache/tajo/webapp/HttpServer.java index 7a6b603104..8e967634b1 100644 --- a/tajo-core/src/main/java/org/apache/tajo/webapp/HttpServer.java +++ b/tajo-core/src/main/java/org/apache/tajo/webapp/HttpServer.java @@ -22,6 +22,8 @@ import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.security.UserGroupInformation; +import org.apache.tajo.conf.TajoConf; +import org.apache.tajo.util.TUtil; import org.mortbay.jetty.Connector; import org.mortbay.jetty.Handler; import org.mortbay.jetty.Server; @@ -65,6 +67,8 @@ public HttpServer(String name, String bindAddress, int port, this.webServer = new Server(); this.findPort = findPort; + TajoConf tajoConf = TUtil.checkTypeAndGet(conf, TajoConf.class); + if (connector == null) { listenerStartedExternally = false; listener = createBaseListener(conf); @@ -92,7 +96,7 @@ public HttpServer(String name, String bindAddress, int port, webAppContext = new WebAppContext(); webAppContext.setDisplayName(name); - webAppContext.setContextPath("/"); + webAppContext.setContextPath(tajoConf.getVar(TajoConf.ConfVars.TAJO_MASTER_INFO_ADDRESS_CONTEXT_PATH)); webAppContext.setResourceBase(appDir + "/" + name); webAppContext.setDescriptor(appDir + "/" + name + "/WEB-INF/web.xml"); diff --git a/tajo-dist/src/main/bin/start-tajo.sh b/tajo-dist/src/main/bin/start-tajo.sh index ef816f3289..6038539e94 100755 --- a/tajo-dist/src/main/bin/start-tajo.sh +++ b/tajo-dist/src/main/bin/start-tajo.sh @@ -54,6 +54,7 @@ fi # Display WEB UI URL and TajoMaster RPC address. # Getting configuration value of http address and rpc address. HTTP_ADDRESS=$("$bin"/tajo getconf tajo.master.info-http.address) +HTTP_ADDRESS_CONTEXT_PATH=$("$bin"/tajo getconf tajo.master.info-http.address.context.path) RPC_ADDRESS=$("$bin"/tajo getconf tajo.master.client-rpc.address) HTTP_ADDRESS=(${HTTP_ADDRESS//:/ }) RPC_ADDRESS=(${RPC_ADDRESS//:/ }) @@ -70,5 +71,5 @@ if [ ${RPC_ADDRESS[0]} = "0.0.0.0" ] || RPC_ADDRESS[0]=`hostname` fi -echo "Tajo master web UI: http://${HTTP_ADDRESS[0]}:${HTTP_ADDRESS[1]}" +echo "Tajo master web UI: http://${HTTP_ADDRESS[0]}:${HTTP_ADDRESS[1]}${HTTP_ADDRESS_CONTEXT_PATH}" echo "Tajo Client Service: ${RPC_ADDRESS[0]}:${RPC_ADDRESS[1]}" diff --git a/tajo-dist/src/main/conf/tajo-site.xml.template b/tajo-dist/src/main/conf/tajo-site.xml.template index 4982cb2213..a857196a3b 100644 --- a/tajo-dist/src/main/conf/tajo-site.xml.template +++ b/tajo-dist/src/main/conf/tajo-site.xml.template @@ -30,6 +30,18 @@ Base directory including system directories. + + tajo.master.info-http.address + hostname:26080 + TajoMaster info-http binding address. + + + + tajo.master.info-http.address.context.path + / + TajoMaster info-http context-path. + + tajo.master.umbilical-rpc.address hostname:26001 From ba3c47782d9c027f2361e8495c6e9598a6d8ea44 Mon Sep 17 00:00:00 2001 From: freegians Date: Fri, 15 Apr 2016 14:07:29 +0900 Subject: [PATCH 2/5] TAJO-2120 modify default address, port, path --- tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java b/tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java index e932fd0b79..73378bbfae 100644 --- a/tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java +++ b/tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java @@ -137,8 +137,8 @@ public static enum ConfVars implements ConfigKey { Validators.networkAddr()), TAJO_MASTER_CLIENT_RPC_ADDRESS("tajo.master.client-rpc.address", "localhost:26002", Validators.networkAddr()), - TAJO_MASTER_INFO_ADDRESS("tajo.master.info-http.address", "0.0.0.0:26088", Validators.networkAddr()), - TAJO_MASTER_INFO_ADDRESS_CONTEXT_PATH("tajo.master.info-http.address.context.path", "/tajo", Validators.javaString()), + TAJO_MASTER_INFO_ADDRESS("tajo.master.info-http.address", "0.0.0.0:26080", Validators.networkAddr()), + TAJO_MASTER_INFO_ADDRESS_CONTEXT_PATH("tajo.master.info-http.address.context.path", "/", Validators.javaString()), // Tajo Rest Service REST_SERVICE_ADDRESS("tajo.rest.service.address", "0.0.0.0:26880", Validators.networkAddr()), From 153f157fee8cfd40d2aebc9c8d49bc7f3a47ec45 Mon Sep 17 00:00:00 2001 From: freegians Date: Thu, 21 Apr 2016 18:15:26 +0900 Subject: [PATCH 3/5] TAJO-2120 restore tajo-site.xml.template --- tajo-dist/src/main/conf/tajo-site.xml.template | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/tajo-dist/src/main/conf/tajo-site.xml.template b/tajo-dist/src/main/conf/tajo-site.xml.template index a857196a3b..4982cb2213 100644 --- a/tajo-dist/src/main/conf/tajo-site.xml.template +++ b/tajo-dist/src/main/conf/tajo-site.xml.template @@ -30,18 +30,6 @@ Base directory including system directories. - - tajo.master.info-http.address - hostname:26080 - TajoMaster info-http binding address. - - - - tajo.master.info-http.address.context.path - / - TajoMaster info-http context-path. - - tajo.master.umbilical-rpc.address hostname:26001 From 235b984718aafbacab84985d3f6dc17036fe77ac Mon Sep 17 00:00:00 2001 From: freegians Date: Thu, 21 Apr 2016 18:16:16 +0900 Subject: [PATCH 4/5] TAJO-2120 add function for get context-path --- .../java/org/apache/tajo/util/JSPUtil.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tajo-core/src/main/java/org/apache/tajo/util/JSPUtil.java b/tajo-core/src/main/java/org/apache/tajo/util/JSPUtil.java index f7928ea6a8..0de0b4f870 100644 --- a/tajo-core/src/main/java/org/apache/tajo/util/JSPUtil.java +++ b/tajo-core/src/main/java/org/apache/tajo/util/JSPUtil.java @@ -393,4 +393,25 @@ public static List getPageNavigationList(List originLis return originList; } + + public static String getTajoMasterHttpAddrContextPath(Configuration config) { + if (!(config instanceof TajoConf)) { + throw new IllegalArgumentException("config should be a TajoConf type."); + } + try { + TajoConf conf = (TajoConf) config; + String tajoMasterHttpAddrContextPath = conf.getVar(ConfVars.TAJO_MASTER_INFO_ADDRESS_CONTEXT_PATH); + if (tajoMasterHttpAddrContextPath == null || tajoMasterHttpAddrContextPath.length() == 0 || "/".equals(tajoMasterHttpAddrContextPath)) { + tajoMasterHttpAddrContextPath = ""; + } else { + if(!tajoMasterHttpAddrContextPath.startsWith("/") && tajoMasterHttpAddrContextPath.length() > 0) { + tajoMasterHttpAddrContextPath = "/" + tajoMasterHttpAddrContextPath; + } + } + return tajoMasterHttpAddrContextPath; + } catch (Exception e) { + e.printStackTrace(); + return e.getMessage(); + } + } } From 7bc90facef714b7b682efc46558b76e86e0eb64a Mon Sep 17 00:00:00 2001 From: freegians Date: Thu, 21 Apr 2016 18:19:44 +0900 Subject: [PATCH 5/5] TAJO-2120 patch for broke link in the cluster page and query detail page --- tajo-core/src/main/resources/webapps/admin/cluster.jsp | 9 ++++++--- tajo-core/src/main/resources/webapps/admin/query.jsp | 4 +++- .../src/main/resources/webapps/admin/querytasks.jsp | 4 +++- tajo-core/src/main/resources/webapps/worker/header.jsp | 4 +++- .../src/main/resources/webapps/worker/querytasks.jsp | 2 +- 5 files changed, 16 insertions(+), 7 deletions(-) diff --git a/tajo-core/src/main/resources/webapps/admin/cluster.jsp b/tajo-core/src/main/resources/webapps/admin/cluster.jsp index bc81ff971d..f4c864d0e7 100644 --- a/tajo-core/src/main/resources/webapps/admin/cluster.jsp +++ b/tajo-core/src/main/resources/webapps/admin/cluster.jsp @@ -30,6 +30,7 @@ <%@ page import="org.apache.tajo.webapp.StaticHttpServer" %> <%@ page import="java.util.*" %> <%@ page import="java.net.InetSocketAddress" %> +<%@ page import="org.apache.tajo.conf.TajoConf" %> <% TajoMaster master = (TajoMaster) StaticHttpServer.getInstance().getAttribute("tajo.info.server.object"); @@ -38,6 +39,8 @@ InetSocketAddress socketAddress = new InetSocketAddress(masterName[0], Integer.parseInt(masterName[1])); String masterLabel = socketAddress.getAddress().getHostName()+ ":" + socketAddress.getPort(); + String tajoMasterInfoAddressContextPath = JSPUtil.getTajoMasterHttpAddrContextPath(master.getConfig()); + Map nodes = master.getContext().getResourceManager().getNodes(); List wokerKeys = new ArrayList<>(nodes.keySet()); Collections.sort(wokerKeys); @@ -126,7 +129,7 @@ for(TajoMasterInfo eachMaster : masters) { String tajoMasterHttp = "http://" + eachMaster.getWebServerAddress().getHostName() + ":" + - eachMaster.getWebServerAddress().getPort() + "/index.jsp"; + eachMaster.getWebServerAddress().getPort() + tajoMasterInfoAddressContextPath + "/index.jsp"; String isActive = eachMaster.isActive() == true ? "ACTIVE" : "BACKUP"; String isAvailable = eachMaster.isAvailable() == true ? "RUNNING" : "FAILED"; %> @@ -174,7 +177,7 @@ for(NodeStatus queryMaster: liveQueryMasters) { WorkerConnectionInfo connectionInfo = queryMaster.getConnectionInfo(); String queryMasterHttp = "http://" + connectionInfo.getHost() - + ":" + connectionInfo.getHttpInfoPort() + "/index.jsp"; + + ":" + connectionInfo.getHttpInfoPort() + tajoMasterInfoAddressContextPath + "/index.jsp"; %> <%=no++%> @@ -234,7 +237,7 @@ int no = 1; for(NodeStatus node: liveNodes) { WorkerConnectionInfo connectionInfo = node.getConnectionInfo(); - String nodeHttp = "http://" + connectionInfo.getHost() + ":" + connectionInfo.getHttpInfoPort() + "/index.jsp"; + String nodeHttp = "http://" + connectionInfo.getHost() + ":" + connectionInfo.getHttpInfoPort() + tajoMasterInfoAddressContextPath + "/index.jsp"; %> <%=no++%> diff --git a/tajo-core/src/main/resources/webapps/admin/query.jsp b/tajo-core/src/main/resources/webapps/admin/query.jsp index e44ac8cf5f..334c1c4bc6 100644 --- a/tajo-core/src/main/resources/webapps/admin/query.jsp +++ b/tajo-core/src/main/resources/webapps/admin/query.jsp @@ -38,6 +38,8 @@ InetSocketAddress socketAddress = new InetSocketAddress(masterName[0], Integer.parseInt(masterName[1])); String masterLabel = socketAddress.getAddress().getHostName()+ ":" + socketAddress.getPort(); + String tajoMasterInfoAddressContextPath = JSPUtil.getTajoMasterHttpAddrContextPath(master.getConfig()); + List submittedQueries = new ArrayList<>(master.getContext().getQueryJobManager().getSubmittedQueries()); JSPUtil.sortQueryInProgress(submittedQueries, true); @@ -158,7 +160,7 @@ for(QueryInProgress eachQuery: runningQueries) { long time = System.currentTimeMillis() - eachQuery.getQueryInfo().getStartTime(); String detailView = "http://" + eachQuery.getQueryInfo().getQueryMasterHost() + ":" + portMap.get(eachQuery.getQueryInfo().getQueryMasterHost()) + - "/querydetail.jsp?queryId=" + eachQuery.getQueryId() + "&startTime=" + eachQuery.getQueryInfo().getStartTime(); + tajoMasterInfoAddressContextPath + "/querydetail.jsp?queryId=" + eachQuery.getQueryId() + "&startTime=" + eachQuery.getQueryInfo().getStartTime(); %> <%=eachQuery.getQueryId()%> diff --git a/tajo-core/src/main/resources/webapps/admin/querytasks.jsp b/tajo-core/src/main/resources/webapps/admin/querytasks.jsp index 695e30474a..2a634213c3 100644 --- a/tajo-core/src/main/resources/webapps/admin/querytasks.jsp +++ b/tajo-core/src/main/resources/webapps/admin/querytasks.jsp @@ -36,6 +36,8 @@ TajoMaster master = (TajoMaster) StaticHttpServer.getInstance().getAttribute("tajo.info.server.object"); HistoryReader reader = master.getContext().getHistoryReader(); + String tajoMasterInfoAddressContextPath = JSPUtil.getTajoMasterHttpAddrContextPath(master.getConfig()); + String queryId = request.getParameter("queryId"); String startTime = request.getParameter("startTime"); String ebId = request.getParameter("ebid"); @@ -221,7 +223,7 @@ NodeStatus nodeStatus = nodeMap.get(eachTask.getHostAndPort()); if (nodeStatus != null) { String[] hostTokens = eachTask.getHostAndPort().split(":"); - taskHost = "" + eachTask.getHostAndPort() + ""; } diff --git a/tajo-core/src/main/resources/webapps/worker/header.jsp b/tajo-core/src/main/resources/webapps/worker/header.jsp index 93f7612366..5d074bd20b 100644 --- a/tajo-core/src/main/resources/webapps/worker/header.jsp +++ b/tajo-core/src/main/resources/webapps/worker/header.jsp @@ -20,10 +20,12 @@ <%@ page import="org.apache.tajo.util.JSPUtil" %> <%@ page import="org.apache.tajo.webapp.StaticHttpServer" %> <%@ page import="org.apache.tajo.worker.TajoWorker" %> +<%@ page import="org.apache.tajo.conf.TajoConf" %> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% TajoWorker tmpTajoWorker = (TajoWorker) StaticHttpServer.getInstance().getAttribute("tajo.info.server.object"); - String tajoMasterHttp = "http://" + JSPUtil.getTajoMasterHttpAddr(tmpTajoWorker.getConfig()); + String tajoMasterInfoAddressContextPath = JSPUtil.getTajoMasterHttpAddrContextPath(tmpTajoWorker.getConfig()); + String tajoMasterHttp = "http://" + JSPUtil.getTajoMasterHttpAddr(tmpTajoWorker.getConfig()) + tajoMasterInfoAddressContextPath; %>