Repository: drill Updated Branches: refs/heads/master 9620e3482 -> 44d5cc8eb
DRILL-5745: Corrected 'location' information in Drill web server closes #948 Project: http://git-wip-us.apache.org/repos/asf/drill/repo Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/61c48a9c Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/61c48a9c Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/61c48a9c Branch: refs/heads/master Commit: 61c48a9cf935c43de4cfca28fe11fbe6fdb1a36f Parents: 9620e34 Author: Prasad Subramanya <prasadsubramanya@psubram-1010.local> Authored: Tue Sep 19 18:32:49 2017 -0700 Committer: Paul Rogers <prog...@maprtech.com> Committed: Mon Sep 25 09:35:34 2017 -0700 ---------------------------------------------------------------------- .../server/rest/profile/ProfileResources.java | 42 ++++++++++++++++---- 1 file changed, 34 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/drill/blob/61c48a9c/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/ProfileResources.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/ProfileResources.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/ProfileResources.java index 468ec56..af47ee1 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/ProfileResources.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/profile/ProfileResources.java @@ -37,6 +37,7 @@ import javax.ws.rs.core.SecurityContext; import javax.ws.rs.core.UriInfo; import javax.xml.bind.annotation.XmlRootElement; +import org.apache.drill.common.config.DrillConfig; import org.apache.drill.common.exceptions.DrillRuntimeException; import org.apache.drill.common.exceptions.UserException; import org.apache.drill.exec.ExecConstants; @@ -55,7 +56,6 @@ import org.apache.drill.exec.store.sys.PersistentStore; import org.apache.drill.exec.store.sys.PersistentStoreProvider; import org.apache.drill.exec.work.WorkManager; import org.apache.drill.exec.work.foreman.Foreman; -import org.apache.drill.exec.work.foreman.QueryManager; import org.glassfish.jersey.server.mvc.Viewable; import com.google.common.collect.Lists; @@ -77,19 +77,19 @@ public class ProfileResources { private long startTime; private long endTime; private Date time; - private String location; + private String link; private String foreman; private String query; private String state; private String user; - public ProfileInfo(String queryId, long startTime, long endTime, String foreman, String query, String state, String user) { + public ProfileInfo(DrillConfig drillConfig, String queryId, long startTime, long endTime, String foreman, String query, String state, String user) { this.queryId = queryId; this.startTime = startTime; this.endTime = endTime; this.time = new Date(startTime); this.foreman = foreman; - this.location = "http://localhost:8047/profile/" + queryId + ".json"; + this.link = generateLink(drillConfig, foreman, queryId); this.query = query.substring(0, Math.min(query.length(), 150)); this.state = state; this.user = user; @@ -127,8 +127,8 @@ public class ProfileResources { return state; } - public String getLocation() { - return location; + public String getLink() { + return link; } @Override @@ -140,6 +140,30 @@ public class ProfileResources { return foreman; } + /** + * Generates link which will return query profile in json representation. + * + * @param drillConfig drill configuration + * @param foreman foreman hostname + * @param queryId query id + * @return link + */ + private String generateLink(DrillConfig drillConfig, String foreman, String queryId) { + StringBuilder sb = new StringBuilder(); + if (drillConfig.getBoolean(ExecConstants.HTTP_ENABLE_SSL)) { + sb.append("https://"); + } else { + sb.append("http://"); + } + sb.append(foreman); + sb.append(":"); + sb.append(drillConfig.getInt(ExecConstants.HTTP_PORT)); + sb.append("/profiles/"); + sb.append(queryId); + sb.append(".json"); + return sb.toString(); + } + } protected PersistentStoreProvider getProvider() { @@ -195,7 +219,8 @@ public class ProfileResources { final Map.Entry<String, QueryInfo> runningEntry = runningEntries.next(); final QueryInfo profile = runningEntry.getValue(); if (principal.canManageProfileOf(profile.getUser())) { - runningQueries.add(new ProfileInfo(runningEntry.getKey(), profile.getStart(), System.currentTimeMillis(), profile.getForeman().getAddress(), profile.getQuery(), profile.getState().name(), profile.getUser())); + runningQueries.add(new ProfileInfo(work.getContext().getConfig(), runningEntry.getKey(), profile.getStart(), System.currentTimeMillis(), profile.getForeman() + .getAddress(), profile.getQuery(), profile.getState().name(), profile.getUser())); } } catch (Exception e) { errors.add(e.getMessage()); @@ -221,7 +246,8 @@ public class ProfileResources { final Map.Entry<String, QueryProfile> profileEntry = range.next(); final QueryProfile profile = profileEntry.getValue(); if (principal.canManageProfileOf(profile.getUser())) { - finishedQueries.add(new ProfileInfo(profileEntry.getKey(), profile.getStart(), profile.getEnd(), profile.getForeman().getAddress(), profile.getQuery(), profile.getState().name(), profile.getUser())); + finishedQueries.add(new ProfileInfo(work.getContext().getConfig(), profileEntry.getKey(), profile.getStart(), profile.getEnd(), profile.getForeman().getAddress(), + profile.getQuery(), profile.getState().name(), profile.getUser())); } } catch (Exception e) { errors.add(e.getMessage());