[ https://issues.apache.org/jira/browse/DRILL-4604?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15636771#comment-15636771 ]
ASF GitHub Bot commented on DRILL-4604: --------------------------------------- Github user paul-rogers commented on a diff in the pull request: https://github.com/apache/drill/pull/482#discussion_r86568915 --- Diff: exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/DrillRoot.java --- @@ -55,44 +59,89 @@ public Viewable getStats() { @GET @Path("/stats.json") @Produces(MediaType.APPLICATION_JSON) - public List<Stat> getStatsJSON() { - List<Stat> stats = Lists.newLinkedList(); - stats.add(new Stat("Number of Drill Bits", work.getContext().getBits().size())); - int number = 0; - for (CoordinationProtos.DrillbitEndpoint bit : work.getContext().getBits()) { - String initialized = bit.isInitialized() ? " initialized" : " not initialized"; - stats.add(new Stat("Bit #" + number, bit.getAddress() + initialized)); - ++number; + public Stats getStatsJSON() { + final String version = work.getContext().getOptionManager().getOption(ExecConstants.CLUSTER_VERSION).string_val; + + final Map<String, Object> props = Maps.newLinkedHashMap(); + props.put("Cluster Version", version); + props.put("Number of Drillbits", work.getContext().getBits().size()); + CoordinationProtos.DrillbitEndpoint currentEndpoint = work.getContext().getEndpoint(); + final String address = currentEndpoint.getAddress(); + props.put("Data Port Address", address + ":" + currentEndpoint.getDataPort()); + props.put("User Port Address", address + ":" + currentEndpoint.getUserPort()); + props.put("Control Port Address", address + ":" + currentEndpoint.getControlPort()); + props.put("Maximum Direct Memory", DrillConfig.getMaxDirectMemory()); + + return new Stats(props, collectDrillbits(version)); + } + + private Collection<DrillbitInfo> collectDrillbits(String version) { + Set<DrillbitInfo> drillbits = Sets.newTreeSet(); + for (CoordinationProtos.DrillbitEndpoint endpoint : work.getContext().getBits()) { + boolean versionMatch = version.equals(endpoint.getVersion()); + DrillbitInfo drillbit = new DrillbitInfo(endpoint.getAddress(), endpoint.isInitialized(), endpoint.getVersion(), versionMatch); + drillbits.add(drillbit); } - stats.add(new Stat("Data Port Address", work.getContext().getEndpoint().getAddress() + - ":" + work.getContext().getEndpoint().getDataPort())); - stats.add(new Stat("User Port Address", work.getContext().getEndpoint().getAddress() + - ":" + work.getContext().getEndpoint().getUserPort())); - stats.add(new Stat("Control Port Address", work.getContext().getEndpoint().getAddress() + - ":" + work.getContext().getEndpoint().getControlPort())); - stats.add(new Stat("Maximum Direct Memory", DrillConfig.getMaxDirectMemory())); - - return stats; + return drillbits; } @XmlRootElement - public class Stat { - private String name; - private Object value; + public static class Stats { --- End diff -- Would actually be helpful to include Javadoc to explain the use of this stuff. Is this used as the data model for the Freemarker-based web UI? > Generate warning on Web UI if drillbits version mismatch is detected > -------------------------------------------------------------------- > > Key: DRILL-4604 > URL: https://issues.apache.org/jira/browse/DRILL-4604 > Project: Apache Drill > Issue Type: Improvement > Affects Versions: 1.6.0 > Reporter: Arina Ielchiieva > Assignee: Sudheesh Katkam > Labels: doc-impacting > Fix For: Future > > Attachments: index_page.JPG, index_page_mismatch.JPG, > screenshots_with_different_states.docx > > > Display drillbit version on web UI. If any of drillbits version doesn't match > with current drillbit, generate warning. > Screenshots - screenshots_with_different_states.docx. -- This message was sent by Atlassian JIRA (v6.3.4#6332)