diff --git hbase-client/src/main/java/org/apache/hadoop/hbase/client/Operation.java hbase-client/src/main/java/org/apache/hadoop/hbase/client/Operation.java index f57470d..05af89a 100644 --- hbase-client/src/main/java/org/apache/hadoop/hbase/client/Operation.java +++ hbase-client/src/main/java/org/apache/hadoop/hbase/client/Operation.java @@ -37,6 +37,8 @@ public abstract class Operation { // TODO Do we need this anymore now we have protobuffed it all? private static final int DEFAULT_MAX_COLS = 5; + private static final ObjectMapper MAPPER = new ObjectMapper(); + /** * Produces a Map containing a fingerprint which identifies the type and * the static schema components of a query (i.e. column families) @@ -67,8 +69,7 @@ public abstract class Operation { * @return a JSONObject containing this Operation's information, as a string */ public String toJSON(int maxCols) throws IOException { - ObjectMapper mapper = new ObjectMapper(); - return mapper.writeValueAsString(toMap(maxCols)); + return MAPPER.writeValueAsString(toMap(maxCols)); } /** @@ -110,4 +111,4 @@ public abstract class Operation { public String toString() { return toString(DEFAULT_MAX_COLS); } -} \ No newline at end of file +} diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java index dbafafb..25ca73c 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java @@ -213,7 +213,7 @@ public class RpcServer implements RpcServerInterface { protected final boolean tcpKeepAlive; // if T then use keepalives protected final long purgeTimeout; // in milliseconds - volatile protected boolean running = true; // true while server runs + protected volatile boolean running = true; // true while server runs protected BlockingQueue callQueue; // queued calls protected final Counter callQueueSize = new Counter(); protected BlockingQueue priorityCallQueue; @@ -243,6 +243,8 @@ public class RpcServer implements RpcServerInterface { private static final int DEFAULT_WARN_RESPONSE_TIME = 10000; // milliseconds private static final int DEFAULT_WARN_RESPONSE_SIZE = 100 * 1024 * 1024; + private static final ObjectMapper MAPPER = new ObjectMapper(); + private final int warnResponseTime; private final int warnResponseSize; private final Object serverInstance; @@ -2179,8 +2181,6 @@ public class RpcServer implements RpcServerInterface { String clientAddress, long startTime, int processingTime, int qTime, long responseSize) throws IOException { - // for JSON encoding - ObjectMapper mapper = new ObjectMapper(); // base information that is reported regardless of type of call Map responseInfo = new HashMap(); responseInfo.put("starttimems", startTime); @@ -2202,19 +2202,19 @@ public class RpcServer implements RpcServerInterface { responseInfo.putAll(((Operation) params[1]).toMap()); // report to the log file LOG.warn("(operation" + tag + "): " + - mapper.writeValueAsString(responseInfo)); + MAPPER.writeValueAsString(responseInfo)); } else if (params.length == 1 && serverInstance instanceof HRegionServer && params[0] instanceof Operation) { // annotate the response map with operation details responseInfo.putAll(((Operation) params[0]).toMap()); // report to the log file LOG.warn("(operation" + tag + "): " + - mapper.writeValueAsString(responseInfo)); + MAPPER.writeValueAsString(responseInfo)); } else { // can't get JSON details, so just report call.toString() along with // a more generic tag. responseInfo.put("call", call); - LOG.warn("(response" + tag + "): " + mapper.writeValueAsString(responseInfo)); + LOG.warn("(response" + tag + "): " + MAPPER.writeValueAsString(responseInfo)); } } diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/MonitoredTaskImpl.java hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/MonitoredTaskImpl.java index 9a19cb2..4dbf04c 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/MonitoredTaskImpl.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/monitoring/MonitoredTaskImpl.java @@ -35,7 +35,9 @@ class MonitoredTaskImpl implements MonitoredTask { private volatile String description; protected volatile State state = State.RUNNING; - + + private static final ObjectMapper MAPPER = new ObjectMapper(); + public MonitoredTaskImpl() { startTime = System.currentTimeMillis(); statusTime = startTime; @@ -158,8 +160,7 @@ class MonitoredTaskImpl implements MonitoredTask { @Override public String toJSON() throws IOException { - ObjectMapper mapper = new ObjectMapper(); - return mapper.writeValueAsString(toMap()); + return MAPPER.writeValueAsString(toMap()); } @Override diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogPrettyPrinter.java hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogPrettyPrinter.java index 160ec3d..3f5bb66 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogPrettyPrinter.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogPrettyPrinter.java @@ -72,7 +72,7 @@ public class HLogPrettyPrinter { // useful for programatic capture of JSON output private PrintStream out; // for JSON encoding - private ObjectMapper mapper; + private static final ObjectMapper MAPPER = new ObjectMapper(); /** * Basic constructor that simply initializes values to reasonable defaults. @@ -86,7 +86,6 @@ public class HLogPrettyPrinter { persistentOutput = false; firstTxn = true; out = System.out; - mapper = new ObjectMapper(); } /** @@ -277,7 +276,7 @@ public class HLogPrettyPrinter { else out.print(","); // encode and print JSON - out.print(mapper.writeValueAsString(txn)); + out.print(MAPPER.writeValueAsString(txn)); } else { // Pretty output, complete with indentation by atomic action out.println("Sequence " + txn.get("sequence") + " "