You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by jt...@apache.org on 2012/12/17 16:22:50 UTC
svn commit: r1422979 - in /accumulo/trunk: pom.xml server/pom.xml
server/src/main/java/org/apache/accumulo/server/monitor/servlets/JSONServlet.java
Author: jtrost
Date: Mon Dec 17 15:22:49 2012
New Revision: 1422979
URL: http://svn.apache.org/viewvc?rev=1422979&view=rev
Log:
ACCUMULO-903
Integrating patch from Christian Rohling (crohling88 at gmail dot com) that add GSON json lib and makes the JSON Servlet output JSON spec compliant data.
Modified:
accumulo/trunk/pom.xml
accumulo/trunk/server/pom.xml
accumulo/trunk/server/src/main/java/org/apache/accumulo/server/monitor/servlets/JSONServlet.java
Modified: accumulo/trunk/pom.xml
URL: http://svn.apache.org/viewvc/accumulo/trunk/pom.xml?rev=1422979&r1=1422978&r2=1422979&view=diff
==============================================================================
--- accumulo/trunk/pom.xml (original)
+++ accumulo/trunk/pom.xml Mon Dec 17 15:22:49 2012
@@ -144,7 +144,7 @@
<configuration>
<outputDirectory>../lib</outputDirectory>
<!-- just grab the non-provided runtime dependencies -->
- <includeArtifactIds>commons-collections,commons-configuration,commons-io,commons-lang,jline,log4j,libthrift,commons-jci-core,commons-jci-fam,commons-logging,commons-logging-api,commons-vfs2</includeArtifactIds>
+ <includeArtifactIds>commons-collections,commons-configuration,commons-io,commons-lang,jline,log4j,libthrift,commons-jci-core,commons-jci-fam,commons-logging,commons-logging-api,commons-vfs2,gson</includeArtifactIds>
<excludeTransitive>true</excludeTransitive>
</configuration>
</execution>
@@ -712,6 +712,11 @@
<artifactId>commons-jci-fam</artifactId>
<version>1.0</version>
</dependency>
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>2.2.2</version>
+ </dependency>
</dependencies>
</dependencyManagement>
Modified: accumulo/trunk/server/pom.xml
URL: http://svn.apache.org/viewvc/accumulo/trunk/server/pom.xml?rev=1422979&r1=1422978&r2=1422979&view=diff
==============================================================================
--- accumulo/trunk/server/pom.xml (original)
+++ accumulo/trunk/server/pom.xml Mon Dec 17 15:22:49 2012
@@ -114,6 +114,10 @@
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
</dependency>
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ </dependency>
</dependencies>
<profiles>
Modified: accumulo/trunk/server/src/main/java/org/apache/accumulo/server/monitor/servlets/JSONServlet.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/server/src/main/java/org/apache/accumulo/server/monitor/servlets/JSONServlet.java?rev=1422979&r1=1422978&r2=1422979&view=diff
==============================================================================
--- accumulo/trunk/server/src/main/java/org/apache/accumulo/server/monitor/servlets/JSONServlet.java (original)
+++ accumulo/trunk/server/src/main/java/org/apache/accumulo/server/monitor/servlets/JSONServlet.java Mon Dec 17 15:22:49 2012
@@ -16,6 +16,10 @@
*/
package org.apache.accumulo.server.monitor.servlets;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import java.util.Map.Entry;
import javax.servlet.http.HttpServletRequest;
@@ -27,9 +31,13 @@ import org.apache.accumulo.core.master.t
import org.apache.accumulo.server.monitor.Monitor;
import org.apache.accumulo.server.monitor.util.celltypes.TServerLinkType;
+import com.google.gson.Gson;
+
public class JSONServlet extends BasicServlet {
private static final long serialVersionUID = 1L;
+ private Gson gson = new Gson();
+
@Override
protected String getTitle(HttpServletRequest req) {
return "JSON Report";
@@ -38,15 +46,22 @@ public class JSONServlet extends BasicSe
@Override
protected void pageStart(HttpServletRequest req, HttpServletResponse resp, StringBuilder sb) {
resp.setContentType("application/json");
- sb.append("{ 'servers': [\n");
}
- private static void addServerLine(StringBuilder sb, String ip, String hostname, double osload, double ingest, double query, double ingestMB, double queryMB,
+ private static Map<String,Object> addServer(String ip, String hostname, double osload, double ingest, double query, double ingestMB, double queryMB,
int scans, double scansessions, long holdtime) {
- sb.append(" {'ip': '").append(ip).append("',\n 'hostname': '").append(hostname).append("',\n 'osload': ").append(osload).append(",\n 'ingest': ")
- .append(ingest).append(",\n 'query': ").append(query).append(",\n 'ingestMB': ").append(ingestMB).append(",\n 'queryMB': ").append(queryMB)
- .append(",\n 'scans': ").append(scans).append(",\n 'scansessions': ").append(scansessions).append(",\n 'holdtime': ").append(holdtime)
- .append("},\n");
+ Map<String,Object> map = new HashMap<String,Object>();
+ map.put("ip", ip);
+ map.put("hostname", hostname);
+ map.put("osload", osload);
+ map.put("ingest", ingest);
+ map.put("query", query);
+ map.put("ingestMB", ingestMB);
+ map.put("queryMB", queryMB);
+ map.put("scans", scans);
+ map.put("scans", scansessions);
+ map.put("holdtime", holdtime);
+ return map;
}
@Override
@@ -55,26 +70,34 @@ public class JSONServlet extends BasicSe
return;
}
+ Map<String,Object> results = new HashMap<String,Object>();
+ List<Map<String,Object>> servers = new ArrayList<Map<String,Object>>();
+
for (TabletServerStatus status : Monitor.getMmi().tServerInfo) {
TableInfo summary = Monitor.summarizeTableStats(status);
- addServerLine(sb, status.name, TServerLinkType.displayName(status.name), status.osLoad, summary.ingestRate, summary.queryRate,
+ servers.add(addServer(status.name, TServerLinkType.displayName(status.name), status.osLoad, summary.ingestRate, summary.queryRate,
summary.ingestByteRate / 1000000.0, summary.queryByteRate / 1000000.0, summary.scans.running + summary.scans.queued, Monitor.getLookupRate(),
- status.holdTime);
+ status.holdTime));
}
for (Entry<String,Byte> entry : Monitor.getMmi().badTServers.entrySet()) {
- sb.append(" {'ip': '").append(entry.getKey()).append("',\n 'bad':true},\n");
+ Map<String,Object> badServer = new HashMap<String,Object>();
+ badServer.put("ip", entry.getKey());
+ badServer.put("bad", true);
+ servers.add(badServer);
}
for (DeadServer dead : Monitor.getMmi().deadTabletServers) {
- sb.append(" {'ip': '").append(dead.server).append("',\n 'dead': true},\n");
+ Map<String,Object> deadServer = new HashMap<String,Object>();
+ deadServer.put("ip", dead.server);
+ deadServer.put("dead", true);
+ servers.add(deadServer);
}
- if (Monitor.getMmi().tServerInfo.size() > 0 || Monitor.getMmi().badTServers.size() > 0 || Monitor.getMmi().deadTabletServers.size() > 0)
- sb.setLength(sb.length() - 2);
+
+ results.put("servers", servers);
+ sb.append(gson.toJson(results));
}
@Override
- protected void pageEnd(HttpServletRequest req, HttpServletResponse resp, StringBuilder sb) {
- sb.append("\n ]\n}\n");
- }
+ protected void pageEnd(HttpServletRequest req, HttpServletResponse resp, StringBuilder sb) {}
}