Pritom Ahmed has uploaded a new change for review. https://asterix-gerrit.ics.uci.edu/355
Change subject: PLEASE EDIT to provide a meaningful commit message! ...................................................................... PLEASE EDIT to provide a meaningful commit message! The following commits from your working branch will be included: commit 9bc623c48d37b77cdc483405916cf3fb6f57d1d9 Author: Pritom Ahmed <pritom...@gmail.com> Date: Fri Aug 14 13:07:00 2015 -0700 * Fixed the job details page in adminconsole. Previously it was broken. Now it shows the raw JSON data sent to it. * Optimized the node details information sent by the adminconsole API. Previously, the API was sending the full array everytime even though the whole array was not full. As a result, there were many instances with no data. Now its sending only the subarrays that actually contains data. Change-Id: Idbbb326dfc9b0756184be50287a8d8c57aa493e3 --- M hyracks/hyracks-control/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/NodeControllerState.java M hyracks/hyracks-control/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/job/JobRun.java M hyracks/hyracks-control/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/web/JobsRESTAPIFunction.java M hyracks/hyracks-control/hyracks-control-cc/src/main/resources/edu/uci/ics/hyracks/control/cc/adminconsole/pages/JobDetailsPage.html 4 files changed, 86 insertions(+), 42 deletions(-) git pull ssh://asterix-gerrit.ics.uci.edu:29418/hyracks refs/changes/55/355/1 diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/NodeControllerState.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/NodeControllerState.java index 63fc26b..e843026 100644 --- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/NodeControllerState.java +++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/NodeControllerState.java @@ -14,10 +14,7 @@ */ package edu.uci.ics.hyracks.control.cc; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import org.json.JSONArray; import org.json.JSONException; @@ -285,35 +282,48 @@ o.put("boot-classpath", bootClasspath); o.put("input-arguments", new JSONArray(inputArguments)); o.put("rrd-ptr", rrdPtr); - o.put("heartbeat-times", hbTime); - o.put("heap-init-sizes", heapInitSize); - o.put("heap-used-sizes", heapUsedSize); - o.put("heap-committed-sizes", heapCommittedSize); - o.put("heap-max-sizes", heapMaxSize); - o.put("nonheap-init-sizes", nonheapInitSize); - o.put("nonheap-used-sizes", nonheapUsedSize); - o.put("nonheap-committed-sizes", nonheapCommittedSize); - o.put("nonheap-max-sizes", nonheapMaxSize); - o.put("thread-counts", threadCount); - o.put("peak-thread-counts", peakThreadCount); - o.put("system-load-averages", systemLoadAverage); - o.put("gc-names", gcNames); - o.put("gc-collection-counts", gcCollectionCounts); - o.put("gc-collection-times", gcCollectionTimes); - o.put("net-payload-bytes-read", netPayloadBytesRead); - o.put("net-payload-bytes-written", netPayloadBytesWritten); - o.put("net-signaling-bytes-read", netSignalingBytesRead); - o.put("net-signaling-bytes-written", netSignalingBytesWritten); - o.put("dataset-net-payload-bytes-read", datasetNetPayloadBytesRead); - o.put("dataset-net-payload-bytes-written", datasetNetPayloadBytesWritten); - o.put("dataset-net-signaling-bytes-read", datasetNetSignalingBytesRead); - o.put("dataset-net-signaling-bytes-written", datasetNetSignalingBytesWritten); - o.put("ipc-messages-sent", ipcMessagesSent); - o.put("ipc-message-bytes-sent", ipcMessageBytesSent); - o.put("ipc-messages-received", ipcMessagesReceived); - o.put("ipc-message-bytes-received", ipcMessageBytesReceived); - o.put("disk-reads", diskReads); - o.put("disk-writes", diskWrites); + o.put("heartbeat-times", Arrays.copyOfRange(hbTime, 0, rrdPtr)); + o.put("heap-init-sizes", Arrays.copyOfRange(heapInitSize, 0, rrdPtr)); + o.put("heap-used-sizes", Arrays.copyOfRange(heapUsedSize, 0, rrdPtr)); + o.put("heap-committed-sizes", Arrays.copyOfRange(heapCommittedSize, 0, rrdPtr)); + o.put("heap-max-sizes", Arrays.copyOfRange(heapMaxSize, 0, rrdPtr)); + o.put("nonheap-init-sizes", Arrays.copyOfRange(nonheapInitSize, 0, rrdPtr)); + o.put("nonheap-used-sizes", Arrays.copyOfRange(nonheapUsedSize, 0, rrdPtr)); + o.put("nonheap-committed-sizes", Arrays.copyOfRange(nonheapCommittedSize, 0, rrdPtr)); + o.put("nonheap-max-sizes", Arrays.copyOfRange(nonheapMaxSize, 0, rrdPtr)); + o.put("thread-counts", Arrays.copyOfRange(threadCount, 0, rrdPtr)); + o.put("peak-thread-counts", Arrays.copyOfRange(peakThreadCount, 0, rrdPtr)); + o.put("system-load-averages", Arrays.copyOfRange(systemLoadAverage, 0, rrdPtr)); + o.put("gc-names", Arrays.copyOfRange(gcNames, 0, rrdPtr)); + + + + int gcN = hbSchema.getGarbageCollectorInfos().length; + long[][] tempGccCollectionCounts = new long[gcN][rrdPtr]; + long[][] tempGccCollectionTimes = new long[gcN][rrdPtr]; + for (int i = 0; i < gcN; ++i) { + for (int j = 0; j< rrdPtr; j++) { + tempGccCollectionCounts[i][j] = gcCollectionCounts[i][j]; + tempGccCollectionTimes[i][j] = gcCollectionTimes[i][j]; + } + } + o.put("gc-collection-counts", Arrays.copyOfRange(tempGccCollectionCounts, 0, gcN)); + o.put("gc-collection-times", Arrays.copyOfRange(tempGccCollectionTimes, 0, gcN)); + + o.put("net-payload-bytes-read", Arrays.copyOfRange(netPayloadBytesRead, 0, rrdPtr)); + o.put("net-payload-bytes-written", Arrays.copyOfRange(netPayloadBytesWritten, 0, rrdPtr)); + o.put("net-signaling-bytes-read", Arrays.copyOfRange(netSignalingBytesRead, 0, rrdPtr)); + o.put("net-signaling-bytes-written", Arrays.copyOfRange(netSignalingBytesWritten, 0, rrdPtr)); + o.put("dataset-net-payload-bytes-read", Arrays.copyOfRange(datasetNetPayloadBytesRead, 0, rrdPtr)); + o.put("dataset-net-payload-bytes-written", Arrays.copyOfRange(datasetNetPayloadBytesWritten, 0, rrdPtr)); + o.put("dataset-net-signaling-bytes-read", Arrays.copyOfRange(datasetNetSignalingBytesRead, 0, rrdPtr)); + o.put("dataset-net-signaling-bytes-written", Arrays.copyOfRange(datasetNetSignalingBytesWritten, 0, rrdPtr)); + o.put("ipc-messages-sent", Arrays.copyOfRange(ipcMessagesSent, 0, rrdPtr)); + o.put("ipc-message-bytes-sent", Arrays.copyOfRange(ipcMessageBytesSent, 0, rrdPtr)); + o.put("ipc-messages-received", Arrays.copyOfRange(ipcMessagesReceived, 0, rrdPtr)); + o.put("ipc-message-bytes-received", Arrays.copyOfRange(ipcMessageBytesReceived, 0, rrdPtr)); + o.put("disk-reads", Arrays.copyOfRange(diskReads, 0, rrdPtr)); + o.put("disk-writes", Arrays.copyOfRange(diskWrites, 0, rrdPtr)); return o; } diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/job/JobRun.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/job/JobRun.java index de3c1c0..ace34ec 100644 --- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/job/JobRun.java +++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/job/JobRun.java @@ -228,6 +228,7 @@ return scheduler; } + public Map<ConnectorDescriptorId, IConnectorPolicy> getConnectorPolicyMap() { return connectorPolicyMap; } diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/web/JobsRESTAPIFunction.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/web/JobsRESTAPIFunction.java index ef79449..e419283 100644 --- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/web/JobsRESTAPIFunction.java +++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/web/JobsRESTAPIFunction.java @@ -14,14 +14,13 @@ */ package edu.uci.ics.hyracks.control.cc.web; -import org.json.JSONObject; - import edu.uci.ics.hyracks.api.job.JobId; import edu.uci.ics.hyracks.control.cc.ClusterControllerService; import edu.uci.ics.hyracks.control.cc.web.util.IJSONOutputFunction; import edu.uci.ics.hyracks.control.cc.work.GetActivityClusterGraphJSONWork; import edu.uci.ics.hyracks.control.cc.work.GetJobRunJSONWork; import edu.uci.ics.hyracks.control.cc.work.GetJobSummariesJSONWork; +import org.json.JSONObject; public class JobsRESTAPIFunction implements IJSONOutputFunction { private ClusterControllerService ccs; @@ -56,6 +55,13 @@ GetJobRunJSONWork gjre = new GetJobRunJSONWork(ccs, jobId); ccs.getWorkQueue().scheduleAndSync(gjre); result.put("result", gjre.getJSON()); + } else if ("job-summaries".equalsIgnoreCase(arguments[0])) { //Shown in index page of adminconsole + GetJobSummariesJSONWork gjse = new GetJobSummariesJSONWork(ccs); + ccs.getWorkQueue().scheduleAndSync(gjse); + /*for (int i = 0; i < gjse.getSummaries().length(); i++) { + result.put("result" + i, gjse.getSummaries().getJSONObject(i)); + }*/ + result.put("result", gjse.getSummaries()); /* JSONArray */ } break; diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/resources/edu/uci/ics/hyracks/control/cc/adminconsole/pages/JobDetailsPage.html b/hyracks/hyracks-control/hyracks-control-cc/src/main/resources/edu/uci/ics/hyracks/control/cc/adminconsole/pages/JobDetailsPage.html index 145848e..62b7b2c 100644 --- a/hyracks/hyracks-control/hyracks-control-cc/src/main/resources/edu/uci/ics/hyracks/control/cc/adminconsole/pages/JobDetailsPage.html +++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/resources/edu/uci/ics/hyracks/control/cc/adminconsole/pages/JobDetailsPage.html @@ -13,15 +13,42 @@ ! limitations under the License. !--> <wicket:extend xmlns:wicket> - <div id="job-specification" wicket:id="job-specification" style="display: none;"> - </div> - <div id="job-activity-graph" wicket:id="job-activity-graph" style="display: none;"> - </div> - <div id="job-run" wicket:id="job-run" style="display: none;"> - </div> + <!--<div id="job-specification"> <!–wicket:id="job-specification" style="display: none;"–> + </div>--> + <table> + <tr> + <td> + <h>activity-cluster-graph</h> + </td> + <td> + <div wicket:id="activity-cluster-graph"> <!--style="display: none;"--> </div> + </td> + </tr> + <tr> + <td> + <h>job-run</h> + </td> + <td> + <div wicket:id="job-run"> <!--style="display: none;"--> </div> + </td> + </tr> + <tr> + <td> + <h>job-timeline</h> + </td> + <td> <div wicket:id="job-timeline" style="overflow: auto;"></div> + </td> + </tr> + <tr> + <td> + job Graph + </td> + <td> <div id="job-graph" style="position:relative"></div> - + </td> + </tr> + </table> <script src="/static/javascript/adminconsole/Graphs.js" type="text/javascript"></script> <script src="/static/javascript/adminconsole/JobDetailsPage.js" type="text/javascript"></script> </wicket:extend> \ No newline at end of file -- To view, visit https://asterix-gerrit.ics.uci.edu/355 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Idbbb326dfc9b0756184be50287a8d8c57aa493e3 Gerrit-PatchSet: 1 Gerrit-Project: hyracks Gerrit-Branch: master Gerrit-Owner: Pritom Ahmed <pritom...@gmail.com>