You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ct...@apache.org on 2015/01/09 03:44:18 UTC
[14/66] [abbrv] accumulo git commit: ACCUMULO-3451 Format master
branch (1.7.0-SNAPSHOT)
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/NullScanner.java
----------------------------------------------------------------------
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/NullScanner.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/NullScanner.java
index bf35557..750cdcd 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/NullScanner.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/NullScanner.java
@@ -28,79 +28,79 @@ import org.apache.accumulo.core.data.Value;
import org.apache.hadoop.io.Text;
public class NullScanner implements Scanner {
-
+
@Override
public void addScanIterator(IteratorSetting cfg) {}
-
+
@Override
public void updateScanIteratorOption(String iteratorName, String key, String value) {}
-
+
@Override
public void fetchColumnFamily(Text col) {}
-
+
@Override
public void fetchColumn(Text colFam, Text colQual) {}
-
+
@Override
public void clearColumns() {}
-
+
@Override
public void clearScanIterators() {}
-
+
@Deprecated
@Override
public void setTimeOut(int timeOut) {}
-
+
@Deprecated
@Override
public int getTimeOut() {
return 0;
}
-
+
@Override
public void setRange(Range range) {}
-
+
@Override
public Range getRange() {
return null;
}
-
+
@Override
public void setBatchSize(int size) {
-
+
}
-
+
@Override
public int getBatchSize() {
return 0;
}
-
+
@Override
public void enableIsolation() {
-
+
}
-
+
@Override
public void disableIsolation() {
-
+
}
-
+
@Override
public Iterator<Entry<Key,Value>> iterator() {
return new NullKeyValueIterator();
}
-
+
@Override
public void removeScanIterator(String iteratorName) {}
-
+
@Override
public void setTimeout(long timeOut, TimeUnit timeUnit) {}
-
+
@Override
public long getTimeout(TimeUnit timeUnit) {
return 0;
}
-
+
@Override
public void close() {}
@@ -111,6 +111,6 @@ public class NullScanner implements Scanner {
@Override
public void setReadaheadThreshold(long batches) {
-
+
}
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/ShowTrace.java
----------------------------------------------------------------------
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/ShowTrace.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/ShowTrace.java
index 067f184..214c12d 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/ShowTrace.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/ShowTrace.java
@@ -41,15 +41,15 @@ import org.apache.accumulo.tracer.thrift.RemoteSpan;
import org.apache.hadoop.io.Text;
public class ShowTrace extends Basic {
-
+
private static final long serialVersionUID = 1L;
private static final String checkboxIdSuffix = "_checkbox";
private static final String pageLoadFunctionName = "pageload";
-
+
String getTraceId(HttpServletRequest req) {
return getStringParameter(req, "id", null);
}
-
+
@Override
public String getTitle(HttpServletRequest req) {
String id = getTraceId(req);
@@ -57,7 +57,7 @@ public class ShowTrace extends Basic {
return "No trace id specified";
return "Trace ID " + id;
}
-
+
@Override
public void pageBody(HttpServletRequest req, HttpServletResponse resp, final StringBuilder sb) throws Exception {
String id = getTraceId(req);
@@ -91,7 +91,7 @@ public class ShowTrace extends Basic {
sb.append(" elt.style.display='none';\n ");
sb.append(" }\n");
sb.append("}\n");
-
+
sb.append("function ").append(pageLoadFunctionName).append("() {\n");
sb.append(" var checkboxes = document.getElementsByTagName('input');\n");
sb.append(" for (var i = 0; i < checkboxes.length; i++) {\n");
@@ -102,13 +102,13 @@ public class ShowTrace extends Basic {
sb.append(" }\n");
sb.append(" }\n");
sb.append("}\n");
-
+
sb.append("</script>\n");
sb.append("<div>");
sb.append("<table><caption>");
sb.append(String.format("<span class='table-caption'>Trace %s started at<br>%s</span></caption>", id, dateString(start)));
sb.append("<tr><th>Time</th><th>Start</th><th>Service@Location</th><th>Name</th><th>Addl Data</th></tr>");
-
+
final long finalStart = start;
Set<Long> visited = tree.visit(new SpanTreeVisitor() {
@Override
@@ -135,7 +135,7 @@ public class ShowTrace extends Basic {
sb.append(" <table class='indent,noborder'>\n");
if (hasData) {
sb.append(" <tr><th>Key</th><th>Value</th></tr>\n");
- for (Entry<ByteBuffer, ByteBuffer> entry : node.data.entrySet()) {
+ for (Entry<ByteBuffer,ByteBuffer> entry : node.data.entrySet()) {
String key = new String(entry.getKey().array(), entry.getKey().arrayOffset(), entry.getKey().limit(), UTF_8);
String value = new String(entry.getValue().array(), entry.getValue().arrayOffset(), entry.getValue().limit(), UTF_8);
sb.append(" <tr><td>" + BasicServlet.sanitize(key) + "</td>");
@@ -167,7 +167,7 @@ public class ShowTrace extends Basic {
sb.append("</table>\n");
sb.append("</div>\n");
}
-
+
@Override
protected String getBodyAttributes() {
return " onload=\"" + pageLoadFunctionName + "()\" ";
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/ShowTraceLinkType.java
----------------------------------------------------------------------
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/ShowTraceLinkType.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/ShowTraceLinkType.java
index d9de107..f7a0e1d 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/ShowTraceLinkType.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/ShowTraceLinkType.java
@@ -23,7 +23,7 @@ import org.apache.accumulo.tracer.TraceFormatter;
import org.apache.accumulo.tracer.thrift.RemoteSpan;
/**
- *
+ *
*/
public class ShowTraceLinkType extends StringType<RemoteSpan> {
@Override
@@ -33,7 +33,7 @@ public class ShowTraceLinkType extends StringType<RemoteSpan> {
RemoteSpan span = (RemoteSpan) obj;
return String.format("<a href='/trace/show?id=%s'>%s</a>", Long.toHexString(span.traceId), TraceFormatter.formatDate(new Date(span.start)));
}
-
+
@Override
public int compare(RemoteSpan o1, RemoteSpan o2) {
if (o1 == null && o2 == null)
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/Summary.java
----------------------------------------------------------------------
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/Summary.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/Summary.java
index 8cc451f..75541be 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/Summary.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/Summary.java
@@ -37,26 +37,26 @@ import org.apache.accumulo.tracer.thrift.RemoteSpan;
import org.apache.hadoop.io.Text;
public class Summary extends Basic {
-
+
private static final long serialVersionUID = 1L;
public static final int DEFAULT_MINUTES = 10;
-
+
int getMinutes(HttpServletRequest req) {
return getIntParameter(req, "minutes", DEFAULT_MINUTES);
}
-
+
@Override
public String getTitle(HttpServletRequest req) {
return "Traces for the last " + getMinutes(req) + " minutes";
}
-
+
static private class Stats {
int count;
long min = Long.MAX_VALUE;
long max = Long.MIN_VALUE;
long total = 0l;
long histogram[] = new long[] {0, 0, 0, 0, 0, 0};
-
+
void addSpan(RemoteSpan span) {
count++;
long ms = span.stop - span.start;
@@ -70,20 +70,20 @@ public class Summary extends Basic {
}
histogram[index]++;
}
-
+
long average() {
return total / count;
}
}
-
+
private static class ShowTypeLink extends StringType<String> {
-
+
int minutes;
-
+
public ShowTypeLink(int minutes) {
this.minutes = minutes;
}
-
+
@Override
public String format(Object obj) {
if (obj == null)
@@ -93,7 +93,7 @@ public class Summary extends Basic {
return String.format("<a href='/trace/listType?type=%s&minutes=%d'>%s</a>", encodedType, minutes, type);
}
}
-
+
static private class HistogramType extends StringType<Stats> {
@Override
public String format(Object obj) {
@@ -110,7 +110,7 @@ public class Summary extends Basic {
sb.append("</tr></table>");
return sb.toString();
}
-
+
@Override
public int compare(Stats o1, Stats o2) {
for (int i = 0; i < o1.histogram.length; i++) {
@@ -140,11 +140,11 @@ public class Summary extends Basic {
return new Range(new Text("start:" + startHexTime), new Text("start:" + endHexTime));
}
-
+
@Override
public void pageBody(HttpServletRequest req, HttpServletResponse resp, StringBuilder sb) throws Exception {
int minutes = getMinutes(req);
-
+
Scanner scanner = getScanner(sb);
if (scanner == null) {
return;
@@ -171,7 +171,7 @@ public class Summary extends Basic {
"Histogram",
new HistogramType(),
"Counts of spans of different duration. Columns start at milliseconds, and each column is ten times longer: tens of milliseconds, seconds, tens of seconds, etc.");
-
+
for (Entry<String,Stats> entry : summary.entrySet()) {
Stats stat = entry.getValue();
trace.addRow(entry.getKey(), stat.count, stat.min, stat.max, stat.average(), stat);
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/monitor/src/main/java/org/apache/accumulo/monitor/util/TableColumn.java
----------------------------------------------------------------------
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/TableColumn.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/TableColumn.java
index a7330ac..1e00927 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/TableColumn.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/TableColumn.java
@@ -23,25 +23,25 @@ public class TableColumn<T> {
private String title;
private CellType<T> type;
private String legend;
-
+
public TableColumn(String title, CellType<T> type, String legend) {
this.title = title;
this.type = type != null ? type : new StringType<T>();
this.legend = legend;
}
-
+
public void setTitle(String title) {
this.title = title;
}
-
+
public String getTitle() {
return title;
}
-
+
public String getLegend() {
return legend;
}
-
+
public CellType<T> getCellType() {
return type;
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/monitor/src/main/java/org/apache/accumulo/monitor/util/TableRow.java
----------------------------------------------------------------------
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/TableRow.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/TableRow.java
index 5de0863..c1ce1c5 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/TableRow.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/TableRow.java
@@ -22,43 +22,43 @@ import java.util.Comparator;
public class TableRow {
private int size;
private ArrayList<Object> row;
-
+
TableRow(int size) {
this.size = size;
this.row = new ArrayList<Object>(size);
}
-
+
public boolean add(Object obj) {
if (row.size() == size)
throw new IllegalStateException("Row is full.");
return row.add(obj);
}
-
+
Object get(int index) {
return row.get(index);
}
-
+
int size() {
return row.size();
}
-
+
Object set(int i, Object value) {
return row.set(i, value);
}
-
+
public static <T> Comparator<TableRow> getComparator(int index, Comparator<T> comp) {
return new TableRowComparator<T>(index, comp);
}
-
+
private static class TableRowComparator<T> implements Comparator<TableRow> {
private int index;
private Comparator<T> comp;
-
+
public TableRowComparator(int index, Comparator<T> comp) {
this.index = index;
this.comp = comp;
}
-
+
@SuppressWarnings("unchecked")
@Override
public int compare(TableRow o1, TableRow o2) {
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/CellType.java
----------------------------------------------------------------------
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/CellType.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/CellType.java
index 23071a8..71aa317 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/CellType.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/CellType.java
@@ -20,15 +20,15 @@ import java.util.Comparator;
public abstract class CellType<T> implements Comparator<T> {
private boolean sortable = true;
-
+
abstract public String alignment();
-
+
abstract public String format(Object obj);
-
+
public final void setSortable(boolean sortable) {
this.sortable = sortable;
}
-
+
public final boolean isSortable() {
return sortable;
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/CompactionsType.java
----------------------------------------------------------------------
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/CompactionsType.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/CompactionsType.java
index 704aa42..e649b84 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/CompactionsType.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/CompactionsType.java
@@ -20,13 +20,13 @@ import org.apache.accumulo.core.master.thrift.Compacting;
import org.apache.accumulo.core.master.thrift.TableInfo;
public class CompactionsType extends CellType<TableInfo> {
-
+
private String fieldName;
-
+
public CompactionsType(String which) {
this.fieldName = which;
}
-
+
@Override
public String format(Object obj) {
if (obj == null)
@@ -41,7 +41,7 @@ public class CompactionsType extends CellType<TableInfo> {
c = new Compacting();
return String.format("%s (%,d)", NumberType.commas(c.running, c.queued == 0 ? 0 : 1, summary.onlineTablets), c.queued);
}
-
+
@Override
public int compare(TableInfo o1, TableInfo o2) {
if (o1 == null)
@@ -63,10 +63,10 @@ public class CompactionsType extends CellType<TableInfo> {
return 1;
return c1.running + c1.queued - c2.running - c2.queued;
}
-
+
@Override
public String alignment() {
return "right";
}
-
+
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/DateTimeType.java
----------------------------------------------------------------------
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/DateTimeType.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/DateTimeType.java
index 8ff3b60..5a8ca58 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/DateTimeType.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/DateTimeType.java
@@ -25,17 +25,17 @@ public class DateTimeType extends CellType<Long> {
private SimpleDateFormat simple;
private int dateFormat;
private int timeFormat;
-
+
public DateTimeType(int dateFormat, int timeFormat) {
this.dateFormat = dateFormat;
this.timeFormat = timeFormat;
this.simple = null;
}
-
+
public DateTimeType(SimpleDateFormat fmt) {
simple = fmt;
}
-
+
@Override
public String format(Object obj) {
if (obj == null)
@@ -47,7 +47,7 @@ public class DateTimeType extends CellType<Long> {
return simple.format(new Date(millis)).replace(" ", " ");
return DateFormat.getDateTimeInstance(dateFormat, timeFormat, Locale.getDefault()).format(new Date(millis)).replace(" ", " ");
}
-
+
@Override
public int compare(Long o1, Long o2) {
if (o1 == null && o2 == null)
@@ -57,10 +57,10 @@ public class DateTimeType extends CellType<Long> {
else
return o1.compareTo(o2);
}
-
+
@Override
public String alignment() {
return "right";
}
-
+
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/DurationType.java
----------------------------------------------------------------------
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/DurationType.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/DurationType.java
index 7f3472e..65dd214 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/DurationType.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/DurationType.java
@@ -21,16 +21,16 @@ import org.apache.accumulo.core.util.Duration;
public class DurationType extends NumberType<Long> {
private Long errMin;
private Long errMax;
-
+
public DurationType() {
this(null, null);
}
-
+
public DurationType(Long errMin, Long errMax) {
this.errMin = errMin;
this.errMax = errMax;
}
-
+
@Override
public String format(Object obj) {
if (obj == null)
@@ -40,12 +40,12 @@ public class DurationType extends NumberType<Long> {
return seconds(millis, errMin, errMax);
return Duration.format(millis);
}
-
+
private static String seconds(long secs, long errMin, long errMax) {
String numbers = Duration.format(secs);
if (secs < errMin || secs > errMax)
return "<span class='error'>" + numbers + "</span>";
return numbers;
}
-
+
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/NumberType.java
----------------------------------------------------------------------
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/NumberType.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/NumberType.java
index b285727..f00ad67 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/NumberType.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/NumberType.java
@@ -19,24 +19,24 @@ package org.apache.accumulo.monitor.util.celltypes;
import static org.apache.accumulo.core.util.NumUtil.bigNumberForQuantity;
public class NumberType<T extends Number> extends CellType<T> {
-
+
protected final T warnMin, warnMax, errMin, errMax;
-
+
public NumberType(T warnMin, T warnMax, T errMin, T errMax) {
this.warnMin = warnMin;
this.warnMax = warnMax;
this.errMin = errMin;
this.errMax = errMax;
}
-
+
public NumberType(T errMin, T errMax) {
this(null, null, errMin, errMax);
}
-
+
public NumberType() {
this(null, null);
}
-
+
@SuppressWarnings("unchecked")
@Override
public String format(Object obj) {
@@ -62,7 +62,7 @@ public class NumberType<T extends Number> extends CellType<T> {
}
return s;
}
-
+
@Override
public int compare(T o1, T o2) {
if (o1 == null && o2 == null)
@@ -74,27 +74,27 @@ public class NumberType<T extends Number> extends CellType<T> {
else
return Double.valueOf(o1.doubleValue()).compareTo(o2.doubleValue());
}
-
+
public static String commas(long i) {
return bigNumberForQuantity(i);
}
-
+
public static String commas(long i, long errMin, long errMax) {
if (i < errMin || i > errMax)
return String.format("<span class='error'>%s</span>", bigNumberForQuantity(i));
return bigNumberForQuantity(i);
}
-
+
public static String commas(double i) {
return bigNumberForQuantity((long) i);
}
-
+
public static String commas(double d, double errMin, double errMax) {
if (d < errMin || d > errMax)
return String.format("<span class='error'>%s</span>", bigNumberForQuantity(d));
return bigNumberForQuantity(d);
}
-
+
public static String commas(long i, long warnMin, long warnMax, long errMin, long errMax) {
if (i < errMin || i > errMax)
return String.format("<span class='error'>%s</span>", bigNumberForQuantity(i));
@@ -102,7 +102,7 @@ public class NumberType<T extends Number> extends CellType<T> {
return String.format("<span class='warning'>%s</span>", bigNumberForQuantity(i));
return bigNumberForQuantity(i);
}
-
+
public static String commas(double d, double warnMin, double warnMax, double errMin, double errMax) {
if (d < errMin || d > errMax)
return String.format("<span class='error'>%s</span>", bigNumberForQuantity(d));
@@ -110,7 +110,7 @@ public class NumberType<T extends Number> extends CellType<T> {
return String.format("<span class='warning'>%s</span>", bigNumberForQuantity(d));
return bigNumberForQuantity(d);
}
-
+
@Override
public String alignment() {
return "right";
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/PercentageType.java
----------------------------------------------------------------------
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/PercentageType.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/PercentageType.java
index 2efc65f..462e33d 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/PercentageType.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/PercentageType.java
@@ -17,24 +17,24 @@
package org.apache.accumulo.monitor.util.celltypes;
public class PercentageType extends CellType<Double> {
-
+
@Override
public int compare(Double o1, Double o2) {
return o1.compareTo(o2);
}
-
+
@Override
public String alignment() {
return "right";
}
-
+
@Override
public String format(Object obj) {
if (obj == null)
return "-";
-
+
return String.format("%.0f%s", 100 * (Double) obj, "%");
-
+
}
-
+
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/PreciseNumberType.java
----------------------------------------------------------------------
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/PreciseNumberType.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/PreciseNumberType.java
index c038d89..775e8dd 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/PreciseNumberType.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/PreciseNumberType.java
@@ -16,7 +16,6 @@
*/
package org.apache.accumulo.monitor.util.celltypes;
-
public class PreciseNumberType extends NumberType<Integer> {
public PreciseNumberType(int warnMin, int warnMax, int errMin, int errMax) {
@@ -27,7 +26,7 @@ public class PreciseNumberType extends NumberType<Integer> {
public String format(Object obj) {
if (obj == null)
return "-";
- int i = ((Number)obj).intValue();
+ int i = ((Number) obj).intValue();
String display = String.format("%,d", obj);
if ((errMin != null && i < errMin) || (errMax != null && i > errMax)) {
return String.format("<span class='error'>%s</span>", display);
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/ProgressChartType.java
----------------------------------------------------------------------
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/ProgressChartType.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/ProgressChartType.java
index 20db871..20836fd 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/ProgressChartType.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/ProgressChartType.java
@@ -17,17 +17,17 @@
package org.apache.accumulo.monitor.util.celltypes;
public class ProgressChartType extends NumberType<Double> {
-
+
private double max;
-
+
public ProgressChartType() {
this(1.0);
}
-
+
public ProgressChartType(Double total) {
max = total == null ? 1.0 : total;
}
-
+
@Override
public String format(Object obj) {
if (obj == null)
@@ -35,13 +35,13 @@ public class ProgressChartType extends NumberType<Double> {
Double num = (Double) obj;
return getChart(num, max);
}
-
+
public static String getChart(double num, double total) {
StringBuilder result = new StringBuilder();
double percent = 0;
if (total != 0)
percent = (num / total) * 100;
-
+
int width = 0;
if (percent < 1)
width = 0;
@@ -49,7 +49,7 @@ public class ProgressChartType extends NumberType<Double> {
width = 100;
else
width = (int) percent;
-
+
result.append("<div class='progress-chart'>");
result.append("<div style='width: ").append(width).append("%;'></div>");
result.append("</div> ");
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/StringType.java
----------------------------------------------------------------------
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/StringType.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/StringType.java
index 8807423..79f8d5e 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/StringType.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/StringType.java
@@ -21,7 +21,7 @@ public class StringType<T> extends CellType<T> {
public String format(Object obj) {
return obj == null ? "-" : obj.toString();
}
-
+
@Override
public int compare(T o1, T o2) {
if (o1 == null && o2 == null)
@@ -32,7 +32,7 @@ public class StringType<T> extends CellType<T> {
return 1;
return o1.toString().compareTo(o2.toString());
}
-
+
@Override
public String alignment() {
return "left";
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/TServerLinkType.java
----------------------------------------------------------------------
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/TServerLinkType.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/TServerLinkType.java
index 26d623a..be3f527 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/TServerLinkType.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/TServerLinkType.java
@@ -19,7 +19,7 @@ package org.apache.accumulo.monitor.util.celltypes;
import org.apache.accumulo.core.master.thrift.TabletServerStatus;
public class TServerLinkType extends CellType<TabletServerStatus> {
-
+
@Override
public String format(Object obj) {
if (obj == null)
@@ -27,25 +27,25 @@ public class TServerLinkType extends CellType<TabletServerStatus> {
TabletServerStatus status = (TabletServerStatus) obj;
return String.format("<a href='/tservers?s=%s'>%s</a>", status.name, displayName(status));
}
-
+
public static String displayName(TabletServerStatus status) {
return displayName(status == null ? null : status.name);
}
-
+
public static String displayName(String address) {
if (address == null)
return "--Unknown--";
return address;
}
-
+
@Override
public int compare(TabletServerStatus o1, TabletServerStatus o2) {
return displayName(o1).compareTo(displayName(o2));
}
-
+
@Override
public String alignment() {
return "left";
}
-
+
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/TableLinkType.java
----------------------------------------------------------------------
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/TableLinkType.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/TableLinkType.java
index 76041d4..0d176f2 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/TableLinkType.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/TableLinkType.java
@@ -23,13 +23,13 @@ import org.apache.accumulo.monitor.servlets.BasicServlet;
import org.apache.accumulo.server.client.HdfsZooInstance;
public class TableLinkType extends CellType<String> {
-
+
private Map<String,String> tidToNameMap;
-
+
public TableLinkType() {
tidToNameMap = Tables.getIdToNameMap(HdfsZooInstance.getInstance());
}
-
+
@Override
public String format(Object obj) {
if (obj == null)
@@ -39,21 +39,21 @@ public class TableLinkType extends CellType<String> {
// e.g. the root table's id of "+r" would not be interpreted properly
return String.format("<a href='/tables?t=%s'>%s</a>", BasicServlet.encode(tableId), displayName(tableId));
}
-
+
private String displayName(String tableId) {
if (tableId == null)
return "-";
return Tables.getPrintableTableNameFromId(tidToNameMap, tableId);
}
-
+
@Override
public int compare(String o1, String o2) {
return displayName(o1).compareTo(displayName(o2));
}
-
+
@Override
public String alignment() {
return "left";
}
-
+
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/TableStateType.java
----------------------------------------------------------------------
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/TableStateType.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/TableStateType.java
index 22fb498..724d220 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/TableStateType.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/celltypes/TableStateType.java
@@ -19,12 +19,12 @@ package org.apache.accumulo.monitor.util.celltypes;
import org.apache.accumulo.core.master.state.tables.TableState;
public class TableStateType extends CellType<TableState> {
-
+
@Override
public String alignment() {
return "center";
}
-
+
@Override
public String format(Object obj) {
TableState state = obj == null ? TableState.UNKNOWN : (TableState) obj;
@@ -44,7 +44,7 @@ public class TableStateType extends CellType<TableState> {
style = style != null ? " class='" + style + "'" : "";
return String.format("<span%s>%s</span>", style, state);
}
-
+
@Override
public int compare(TableState o1, TableState o2) {
if (o1 == null && o2 == null)
@@ -53,5 +53,5 @@ public class TableStateType extends CellType<TableState> {
return -1;
return o1.compareTo(o2);
}
-
+
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/monitor/src/test/java/org/apache/accumulo/monitor/ShowTraceLinkTypeTest.java
----------------------------------------------------------------------
diff --git a/server/monitor/src/test/java/org/apache/accumulo/monitor/ShowTraceLinkTypeTest.java b/server/monitor/src/test/java/org/apache/accumulo/monitor/ShowTraceLinkTypeTest.java
index ef4107b..b4840a7 100644
--- a/server/monitor/src/test/java/org/apache/accumulo/monitor/ShowTraceLinkTypeTest.java
+++ b/server/monitor/src/test/java/org/apache/accumulo/monitor/ShowTraceLinkTypeTest.java
@@ -16,19 +16,19 @@
*/
package org.apache.accumulo.monitor;
+import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Collections;
-import org.apache.accumulo.tracer.thrift.RemoteSpan;
import org.apache.accumulo.tracer.thrift.Annotation;
+import org.apache.accumulo.tracer.thrift.RemoteSpan;
import org.junit.Assert;
import org.junit.Test;
-import java.nio.ByteBuffer;
-
public class ShowTraceLinkTypeTest {
private static RemoteSpan rs(long start, long stop, String description) {
- return new RemoteSpan("sender", "svc", 0l, 0l, 0l, start, stop, description, Collections.<ByteBuffer, ByteBuffer>emptyMap(), Collections.<Annotation>emptyList());
+ return new RemoteSpan("sender", "svc", 0l, 0l, 0l, start, stop, description, Collections.<ByteBuffer,ByteBuffer> emptyMap(),
+ Collections.<Annotation> emptyList());
}
@Test
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/monitor/src/test/java/org/apache/accumulo/monitor/ZooKeeperStatusTest.java
----------------------------------------------------------------------
diff --git a/server/monitor/src/test/java/org/apache/accumulo/monitor/ZooKeeperStatusTest.java b/server/monitor/src/test/java/org/apache/accumulo/monitor/ZooKeeperStatusTest.java
index a90396b..7f56931 100644
--- a/server/monitor/src/test/java/org/apache/accumulo/monitor/ZooKeeperStatusTest.java
+++ b/server/monitor/src/test/java/org/apache/accumulo/monitor/ZooKeeperStatusTest.java
@@ -26,31 +26,31 @@ import org.junit.Assert;
import org.junit.Test;
public class ZooKeeperStatusTest {
-
+
@Test
public void zkHostSortingTest() {
List<String> expectedHosts = Arrays.asList("rack1node1", "rack2node1", "rack4node1", "rack4node4");
-
+
// Add the states in a not correctly sorted order
TreeSet<ZooKeeperState> states = new TreeSet<ZooKeeperState>();
states.add(new ZooKeeperState("rack4node4", "leader", 10));
states.add(new ZooKeeperState("rack4node1", "follower", 10));
states.add(new ZooKeeperState("rack1node1", "follower", 10));
states.add(new ZooKeeperState("rack2node1", "follower", 10));
-
+
List<String> actualHosts = new ArrayList<String>(4);
for (ZooKeeperState state : states) {
actualHosts.add(state.keeper);
}
-
+
// Assert we have 4 of each
Assert.assertEquals(expectedHosts.size(), actualHosts.size());
-
+
// Assert the ordering is correct
for (int i = 0; i < expectedHosts.size(); i++) {
Assert.assertEquals(expectedHosts.get(i), actualHosts.get(i));
}
-
+
}
-
+
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/monitor/src/test/java/org/apache/accumulo/monitor/servlets/trace/SummaryTest.java
----------------------------------------------------------------------
diff --git a/server/monitor/src/test/java/org/apache/accumulo/monitor/servlets/trace/SummaryTest.java b/server/monitor/src/test/java/org/apache/accumulo/monitor/servlets/trace/SummaryTest.java
index 23cdc0b..5c33d66 100644
--- a/server/monitor/src/test/java/org/apache/accumulo/monitor/servlets/trace/SummaryTest.java
+++ b/server/monitor/src/test/java/org/apache/accumulo/monitor/servlets/trace/SummaryTest.java
@@ -20,7 +20,7 @@ import org.junit.Before;
import org.junit.Test;
/**
- *
+ *
*/
public class SummaryTest {
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/monitor/src/test/java/org/apache/accumulo/monitor/util/celltypes/PreciseNumberTypeTest.java
----------------------------------------------------------------------
diff --git a/server/monitor/src/test/java/org/apache/accumulo/monitor/util/celltypes/PreciseNumberTypeTest.java b/server/monitor/src/test/java/org/apache/accumulo/monitor/util/celltypes/PreciseNumberTypeTest.java
index 6e741ae..3bb11e6 100644
--- a/server/monitor/src/test/java/org/apache/accumulo/monitor/util/celltypes/PreciseNumberTypeTest.java
+++ b/server/monitor/src/test/java/org/apache/accumulo/monitor/util/celltypes/PreciseNumberTypeTest.java
@@ -16,8 +16,9 @@
*/
package org.apache.accumulo.monitor.util.celltypes;
+import static org.junit.Assert.assertEquals;
+
import org.junit.Test;
-import static org.junit.Assert.*;
public class PreciseNumberTypeTest {
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/tracer/src/main/java/org/apache/accumulo/tracer/AsyncSpanReceiver.java
----------------------------------------------------------------------
diff --git a/server/tracer/src/main/java/org/apache/accumulo/tracer/AsyncSpanReceiver.java b/server/tracer/src/main/java/org/apache/accumulo/tracer/AsyncSpanReceiver.java
index 7c54b55..55378ad 100644
--- a/server/tracer/src/main/java/org/apache/accumulo/tracer/AsyncSpanReceiver.java
+++ b/server/tracer/src/main/java/org/apache/accumulo/tracer/AsyncSpanReceiver.java
@@ -16,15 +16,6 @@
*/
package org.apache.accumulo.tracer;
-import org.apache.accumulo.core.trace.DistributedTrace;
-import org.apache.accumulo.tracer.thrift.Annotation;
-import org.apache.accumulo.tracer.thrift.RemoteSpan;
-import org.apache.log4j.Logger;
-import org.htrace.HTraceConfiguration;
-import org.htrace.Span;
-import org.htrace.SpanReceiver;
-import org.htrace.TimelineAnnotation;
-
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.nio.ByteBuffer;
@@ -38,6 +29,15 @@ import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.ConcurrentLinkedQueue;
+import org.apache.accumulo.core.trace.DistributedTrace;
+import org.apache.accumulo.tracer.thrift.Annotation;
+import org.apache.accumulo.tracer.thrift.RemoteSpan;
+import org.apache.log4j.Logger;
+import org.htrace.HTraceConfiguration;
+import org.htrace.Span;
+import org.htrace.SpanReceiver;
+import org.htrace.TimelineAnnotation;
+
/**
* Deliver Span information periodically to a destination.
* <ul>
@@ -49,18 +49,18 @@ import java.util.concurrent.ConcurrentLinkedQueue;
public abstract class AsyncSpanReceiver<SpanKey,Destination> implements SpanReceiver {
private static final Logger log = Logger.getLogger(AsyncSpanReceiver.class);
-
+
private final Map<SpanKey,Destination> clients = new HashMap<SpanKey,Destination>();
-
+
protected String host = null;
protected String service = null;
-
+
protected abstract Destination createDestination(SpanKey key) throws Exception;
-
+
protected abstract void send(Destination resource, RemoteSpan span) throws Exception;
-
+
protected abstract SpanKey getSpanKey(Map<ByteBuffer,ByteBuffer> data);
-
+
Timer timer = new Timer("SpanSender", true);
protected final AbstractQueue<RemoteSpan> sendQueue = new ConcurrentLinkedQueue<RemoteSpan>();
@@ -78,7 +78,7 @@ public abstract class AsyncSpanReceiver<SpanKey,Destination> implements SpanRece
log.warn("Exception sending spans to destination", ex);
}
}
-
+
}, millis, millis);
}
@@ -113,11 +113,11 @@ public abstract class AsyncSpanReceiver<SpanKey,Destination> implements SpanRece
}
}
- public static Map<ByteBuffer, ByteBuffer> convertToByteBuffers(Map<byte[], byte[]> bytesMap) {
+ public static Map<ByteBuffer,ByteBuffer> convertToByteBuffers(Map<byte[],byte[]> bytesMap) {
if (bytesMap == null)
return null;
- Map<ByteBuffer, ByteBuffer> result = new HashMap<ByteBuffer, ByteBuffer>();
- for (Entry<byte[], byte[]> bytes : bytesMap.entrySet()) {
+ Map<ByteBuffer,ByteBuffer> result = new HashMap<ByteBuffer,ByteBuffer>();
+ for (Entry<byte[],byte[]> bytes : bytesMap.entrySet()) {
result.put(ByteBuffer.wrap(bytes.getKey()), ByteBuffer.wrap(bytes.getValue()));
}
return result;
@@ -135,12 +135,12 @@ public abstract class AsyncSpanReceiver<SpanKey,Destination> implements SpanRece
@Override
public void receiveSpan(Span s) {
- Map<ByteBuffer, ByteBuffer> data = convertToByteBuffers(s.getKVAnnotations());
+ Map<ByteBuffer,ByteBuffer> data = convertToByteBuffers(s.getKVAnnotations());
SpanKey dest = getSpanKey(data);
if (dest != null) {
List<Annotation> annotations = convertToAnnotations(s.getTimelineAnnotations());
- sendQueue.add(new RemoteSpan(host, service==null ? s.getProcessId() : service, s.getTraceId(), s.getSpanId(), s.getParentId(),
- s.getStartTimeMillis(), s.getStopTimeMillis(), s.getDescription(), data, annotations));
+ sendQueue.add(new RemoteSpan(host, service == null ? s.getProcessId() : service, s.getTraceId(), s.getSpanId(), s.getParentId(), s.getStartTimeMillis(),
+ s.getStopTimeMillis(), s.getDescription(), data, annotations));
}
}
@@ -170,5 +170,5 @@ public abstract class AsyncSpanReceiver<SpanKey,Destination> implements SpanRece
}
service = conf.get(DistributedTrace.TRACE_SERVICE_PROPERTY, service);
}
-
+
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/tracer/src/main/java/org/apache/accumulo/tracer/SendSpansViaThrift.java
----------------------------------------------------------------------
diff --git a/server/tracer/src/main/java/org/apache/accumulo/tracer/SendSpansViaThrift.java b/server/tracer/src/main/java/org/apache/accumulo/tracer/SendSpansViaThrift.java
index 2190570..c585cc1 100644
--- a/server/tracer/src/main/java/org/apache/accumulo/tracer/SendSpansViaThrift.java
+++ b/server/tracer/src/main/java/org/apache/accumulo/tracer/SendSpansViaThrift.java
@@ -18,6 +18,11 @@ package org.apache.accumulo.tracer;
import static java.nio.charset.StandardCharsets.UTF_8;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+import java.nio.ByteBuffer;
+import java.util.Map;
+
import org.apache.accumulo.tracer.thrift.RemoteSpan;
import org.apache.accumulo.tracer.thrift.SpanReceiver.Client;
import org.apache.thrift.protocol.TBinaryProtocol;
@@ -25,18 +30,13 @@ import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport;
-import java.net.InetSocketAddress;
-import java.net.Socket;
-import java.nio.ByteBuffer;
-import java.util.Map;
-
/**
* Send Span data to a destination using thrift.
*/
public class SendSpansViaThrift extends AsyncSpanReceiver<String,Client> {
-
+
private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(SendSpansViaThrift.class);
-
+
private static final String THRIFT = "thrift://";
public SendSpansViaThrift() {
@@ -46,7 +46,7 @@ public class SendSpansViaThrift extends AsyncSpanReceiver<String,Client> {
public SendSpansViaThrift(long millis) {
super(millis);
}
-
+
@Override
protected Client createDestination(String destination) throws Exception {
if (destination == null)
@@ -54,7 +54,7 @@ public class SendSpansViaThrift extends AsyncSpanReceiver<String,Client> {
try {
int portSeparatorIndex = destination.lastIndexOf(':');
String host = destination.substring(0, portSeparatorIndex);
- int port = Integer.parseInt(destination.substring(portSeparatorIndex+1));
+ int port = Integer.parseInt(destination.substring(portSeparatorIndex + 1));
log.debug("Connecting to " + host + ":" + port);
InetSocketAddress addr = new InetSocketAddress(host, port);
Socket sock = new Socket();
@@ -67,7 +67,7 @@ public class SendSpansViaThrift extends AsyncSpanReceiver<String,Client> {
return null;
}
}
-
+
@Override
protected void send(Client client, RemoteSpan s) throws Exception {
if (client != null) {
@@ -93,5 +93,5 @@ public class SendSpansViaThrift extends AsyncSpanReceiver<String,Client> {
}
return null;
}
-
+
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/tracer/src/main/java/org/apache/accumulo/tracer/SpanTree.java
----------------------------------------------------------------------
diff --git a/server/tracer/src/main/java/org/apache/accumulo/tracer/SpanTree.java b/server/tracer/src/main/java/org/apache/accumulo/tracer/SpanTree.java
index 6337ee4..e8f8056 100644
--- a/server/tracer/src/main/java/org/apache/accumulo/tracer/SpanTree.java
+++ b/server/tracer/src/main/java/org/apache/accumulo/tracer/SpanTree.java
@@ -23,22 +23,22 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-import org.htrace.Span;
import org.apache.accumulo.tracer.thrift.RemoteSpan;
+import org.htrace.Span;
public class SpanTree {
final Map<Long,List<Long>> parentChildren = new HashMap<Long,List<Long>>();
public final Map<Long,RemoteSpan> nodes = new HashMap<Long,RemoteSpan>();
-
+
public SpanTree() {}
-
+
public void addNode(RemoteSpan span) {
nodes.put(span.spanId, span);
if (parentChildren.get(span.parentId) == null)
parentChildren.put(span.parentId, new ArrayList<Long>());
parentChildren.get(span.parentId).add(span.spanId);
}
-
+
public Set<Long> visit(SpanTreeVisitor visitor) {
Set<Long> visited = new HashSet<Long>();
List<Long> root = parentChildren.get(Long.valueOf(Span.ROOT_SPAN_ID));
@@ -50,7 +50,7 @@ public class SpanTree {
recurse(0, null, rootSpan, visitor, visited);
return visited;
}
-
+
private void recurse(int level, RemoteSpan parent, RemoteSpan node, SpanTreeVisitor visitor, Set<Long> visited) {
// improbable case: duplicate spanId in a trace tree: prevent
// infinite recursion
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceDump.java
----------------------------------------------------------------------
diff --git a/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceDump.java b/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceDump.java
index 4468866..64fee7e 100644
--- a/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceDump.java
+++ b/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceDump.java
@@ -41,24 +41,26 @@ import org.htrace.Span;
import com.beust.jcommander.Parameter;
-
public class TraceDump {
static final long DEFAULT_TIME_IN_MILLIS = 10 * 60 * 1000l;
static class Opts extends ClientOnDefaultTable {
- @Parameter(names={"-l", "--list"}, description="List recent traces")
+ @Parameter(names = {"-l", "--list"}, description = "List recent traces")
boolean list = false;
- @Parameter(names={"-s", "--start"}, description="The start time of traces to display")
+ @Parameter(names = {"-s", "--start"}, description = "The start time of traces to display")
String start;
- @Parameter(names={"-e", "--end"}, description="The end time of traces to display")
+ @Parameter(names = {"-e", "--end"}, description = "The end time of traces to display")
String end;
- @Parameter(names={"-d", "--dump"}, description="Dump the traces")
+ @Parameter(names = {"-d", "--dump"}, description = "Dump the traces")
boolean dump = false;
- @Parameter(names={"-i", "--instance"}, description="URL to point to accumulo.")
+ @Parameter(names = {"-i", "--instance"}, description = "URL to point to accumulo.")
String instance;
- @Parameter(description=" <trace id> { <trace id> ... }")
+ @Parameter(description = " <trace id> { <trace id> ... }")
List<String> traceIds = new ArrayList<String>();
- Opts() { super("trace");}
+
+ Opts() {
+ super("trace");
+ }
}
public static void main(String[] args) throws Exception {
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceFormatter.java
----------------------------------------------------------------------
diff --git a/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceFormatter.java b/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceFormatter.java
index 4829eb2..0ec93b4 100644
--- a/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceFormatter.java
+++ b/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceFormatter.java
@@ -24,22 +24,21 @@ import java.util.Date;
import java.util.Iterator;
import java.util.Map.Entry;
-import org.apache.accumulo.tracer.thrift.Annotation;
-import org.apache.accumulo.tracer.thrift.RemoteSpan;
import org.apache.accumulo.core.data.Key;
import org.apache.accumulo.core.data.Value;
import org.apache.accumulo.core.util.format.DefaultFormatter;
import org.apache.accumulo.core.util.format.Formatter;
+import org.apache.accumulo.tracer.thrift.Annotation;
+import org.apache.accumulo.tracer.thrift.RemoteSpan;
import org.apache.commons.lang.NotImplementedException;
import org.apache.hadoop.io.Text;
import org.apache.thrift.TException;
import org.apache.thrift.protocol.TCompactProtocol;
import org.apache.thrift.transport.TMemoryInputTransport;
-
/**
* A formatter than can be used in the shell to display trace information.
- *
+ *
*/
public class TraceFormatter implements Formatter {
public static final String DATE_FORMAT = "yyyy/MM/dd HH:mm:ss.SSS";
@@ -50,16 +49,16 @@ public class TraceFormatter implements Formatter {
return new SimpleDateFormat(DATE_FORMAT);
}
};
-
+
public static String formatDate(final Date date) {
return formatter.get().format(date);
}
-
+
private final static Text SPAN_CF = new Text("span");
-
+
private Iterator<Entry<Key,Value>> scanner;
private boolean printTimeStamps;
-
+
public static RemoteSpan getRemoteSpan(Entry<Key,Value> entry) {
TMemoryInputTransport transport = new TMemoryInputTransport(entry.getValue().get());
TCompactProtocol protocol = new TCompactProtocol(transport);
@@ -71,12 +70,12 @@ public class TraceFormatter implements Formatter {
}
return span;
}
-
+
@Override
public boolean hasNext() {
return scanner.hasNext();
}
-
+
@Override
public String next() {
Entry<Key,Value> next = scanner.next();
@@ -93,7 +92,7 @@ public class TraceFormatter implements Formatter {
result.append(String.format(" %12s:%s%n", "start", dateFormatter.format(span.start)));
result.append(String.format(" %12s:%s%n", "ms", span.stop - span.start));
if (span.data != null) {
- for (Entry<ByteBuffer, ByteBuffer> entry : span.data.entrySet()) {
+ for (Entry<ByteBuffer,ByteBuffer> entry : span.data.entrySet()) {
String key = new String(entry.getKey().array(), entry.getKey().arrayOffset(), entry.getKey().limit(), UTF_8);
String value = new String(entry.getValue().array(), entry.getValue().arrayOffset(), entry.getValue().limit(), UTF_8);
result.append(String.format(" %12s:%s%n", key, value));
@@ -104,7 +103,7 @@ public class TraceFormatter implements Formatter {
result.append(String.format(" %12s:%s:%s%n", "annotation", annotation.getMsg(), dateFormatter.format(annotation.getTime())));
}
}
-
+
if (printTimeStamps) {
result.append(String.format(" %-12s:%d%n", "timestamp", next.getKey().getTimestamp()));
}
@@ -112,12 +111,12 @@ public class TraceFormatter implements Formatter {
}
return DefaultFormatter.formatEntry(next, printTimeStamps);
}
-
+
@Override
public void remove() {
throw new NotImplementedException();
}
-
+
@Override
public void initialize(Iterable<Entry<Key,Value>> scanner, boolean printTimestamps) {
this.scanner = scanner.iterator();
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceServer.java
----------------------------------------------------------------------
diff --git a/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceServer.java b/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceServer.java
index 7e33300..3063cdc 100644
--- a/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceServer.java
+++ b/server/tracer/src/main/java/org/apache/accumulo/tracer/TraceServer.java
@@ -54,7 +54,6 @@ import org.apache.accumulo.server.security.SecurityUtil;
import org.apache.accumulo.server.util.time.SimpleTimer;
import org.apache.accumulo.server.zookeeper.ZooReaderWriter;
import org.apache.accumulo.start.classloader.vfs.AccumuloVFSClassLoader;
-import org.htrace.Span;
import org.apache.accumulo.tracer.thrift.RemoteSpan;
import org.apache.accumulo.tracer.thrift.SpanReceiver.Iface;
import org.apache.accumulo.tracer.thrift.SpanReceiver.Processor;
@@ -73,6 +72,7 @@ import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.EventType;
import org.apache.zookeeper.Watcher.Event.KeeperState;
+import org.htrace.Span;
public class TraceServer implements Watcher {
@@ -184,8 +184,8 @@ public class TraceServer implements Watcher {
at = new PasswordToken(conf.get(p).getBytes(UTF_8));
} else {
Properties props = new Properties();
- AuthenticationToken token = AccumuloVFSClassLoader.getClassLoader().loadClass(conf.get(Property.TRACE_TOKEN_TYPE)).asSubclass(AuthenticationToken.class)
- .newInstance();
+ AuthenticationToken token = AccumuloVFSClassLoader.getClassLoader().loadClass(conf.get(Property.TRACE_TOKEN_TYPE))
+ .asSubclass(AuthenticationToken.class).newInstance();
int prefixLength = Property.TRACE_TOKEN_PROPERTY_PREFIX.getKey().length();
for (Entry<String,String> entry : loginMap.entrySet()) {
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/tracer/src/test/java/org/apache/accumulo/tracer/TracerTest.java
----------------------------------------------------------------------
diff --git a/server/tracer/src/test/java/org/apache/accumulo/tracer/TracerTest.java b/server/tracer/src/test/java/org/apache/accumulo/tracer/TracerTest.java
index c1264bb..76ed910 100644
--- a/server/tracer/src/test/java/org/apache/accumulo/tracer/TracerTest.java
+++ b/server/tracer/src/test/java/org/apache/accumulo/tracer/TracerTest.java
@@ -33,8 +33,8 @@ import java.util.concurrent.Callable;
import org.apache.accumulo.core.trace.Span;
import org.apache.accumulo.core.trace.Trace;
-import org.apache.accumulo.core.trace.wrappers.TraceWrap;
import org.apache.accumulo.core.trace.thrift.TInfo;
+import org.apache.accumulo.core.trace.wrappers.TraceWrap;
import org.apache.accumulo.tracer.thrift.TestService;
import org.apache.accumulo.tracer.thrift.TestService.Iface;
import org.apache.accumulo.tracer.thrift.TestService.Processor;
@@ -52,7 +52,6 @@ import org.htrace.wrappers.TraceProxy;
import org.junit.Before;
import org.junit.Test;
-
public class TracerTest {
static class SpanStruct {
public SpanStruct(long traceId, long spanId, long parentId, long start, long stop, String description, Map<byte[],byte[]> data) {
@@ -65,7 +64,7 @@ public class TracerTest {
this.description = description;
this.data = data;
}
-
+
public long traceId;
public long spanId;
public long parentId;
@@ -73,17 +72,17 @@ public class TracerTest {
public long stop;
public String description;
public Map<byte[],byte[]> data;
-
+
public long millis() {
return stop - start;
}
}
-
+
static class TestReceiver implements SpanReceiver {
public Map<Long,List<SpanStruct>> traces = new HashMap<Long,List<SpanStruct>>();
-
+
@Override
- public void receiveSpan(org.htrace.Span s) {
+ public void receiveSpan(org.htrace.Span s) {
long traceId = s.getTraceId();
SpanStruct span = new SpanStruct(traceId, s.getSpanId(), s.getParentId(), s.getStartTimeMillis(), s.getStopTimeMillis(), s.getDescription(),
s.getKVAnnotations());
@@ -91,48 +90,46 @@ public class TracerTest {
traces.put(traceId, new ArrayList<SpanStruct>());
traces.get(traceId).add(span);
}
-
+
@Override
- public void configure(HTraceConfiguration conf) {
- }
+ public void configure(HTraceConfiguration conf) {}
@Override
- public void close() throws IOException {
- }
+ public void close() throws IOException {}
}
-
+
@SuppressWarnings("deprecation")
@Test
public void testTrace() throws Exception {
TestReceiver tracer = new TestReceiver();
org.htrace.Trace.addReceiver(tracer);
-
+
assertFalse(Trace.isTracing());
Trace.start("nop").stop();
assertTrue(tracer.traces.size() == 0);
assertFalse(Trace.isTracing());
-
+
Trace.on("nop").stop();
assertTrue(tracer.traces.size() == 1);
assertFalse(Trace.isTracing());
-
+
Span start = Trace.on("testing");
assertEquals(Trace.currentTrace().getSpan(), start.getScope().getSpan());
assertTrue(Trace.isTracing());
-
+
Span span = Trace.start("shortest trace ever");
span.stop();
long traceId = Trace.currentTraceId();
assertNotNull(tracer.traces.get(traceId));
assertTrue(tracer.traces.get(traceId).size() == 1);
assertEquals("shortest trace ever", tracer.traces.get(traceId).get(0).description);
-
+
Span pause = Trace.start("pause");
Thread.sleep(100);
pause.stop();
assertTrue(tracer.traces.get(traceId).size() == 2);
assertTrue(tracer.traces.get(traceId).get(1).millis() >= 100);
-
+
Thread t = new Thread(Trace.wrap(new Runnable() {
@Override
public void run() {
@@ -141,13 +138,13 @@ public class TracerTest {
}), "My Task");
t.start();
t.join();
-
+
assertTrue(tracer.traces.get(traceId).size() == 3);
assertEquals("My Task", tracer.traces.get(traceId).get(2).description);
Trace.off();
assertFalse(Trace.isTracing());
}
-
+
static class Service implements TestService.Iface {
@Override
public boolean checkTrace(TInfo t, String message) throws TException {
@@ -159,12 +156,12 @@ public class TracerTest {
}
}
}
-
+
@Test
public void testThrift() throws Exception {
TestReceiver tracer = new TestReceiver();
org.htrace.Trace.addReceiver(tracer);
-
+
ServerSocket socket = new ServerSocket(0);
TServerSocket transport = new TServerSocket(socket);
transport.listen();
@@ -181,17 +178,17 @@ public class TracerTest {
TestService.Iface client = new TestService.Client(new TBinaryProtocol(clientTransport), new TBinaryProtocol(clientTransport));
client = TraceWrap.client(client);
assertFalse(client.checkTrace(null, "test"));
-
+
Span start = Trace.on("start");
assertTrue(client.checkTrace(null, "my test"));
start.stop();
-
+
assertNotNull(tracer.traces.get(start.traceId()));
String traces[] = {"my test", "checkTrace", "client:checkTrace", "start"};
assertTrue(tracer.traces.get(start.traceId()).size() == traces.length);
for (int i = 0; i < traces.length; i++)
assertEquals(traces[i], tracer.traces.get(start.traceId()).get(i).description);
-
+
tserver.stop();
t.join(100);
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/tserver/src/main/java/org/apache/accumulo/server/GarbageCollectionLogger.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/server/GarbageCollectionLogger.java b/server/tserver/src/main/java/org/apache/accumulo/server/GarbageCollectionLogger.java
index 8bb163d..7d09fe3 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/server/GarbageCollectionLogger.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/server/GarbageCollectionLogger.java
@@ -28,14 +28,13 @@ import org.apache.log4j.Logger;
public class GarbageCollectionLogger {
private static final Logger log = Logger.getLogger(GarbageCollectionLogger.class);
-
+
private final HashMap<String,Long> prevGcTime = new HashMap<String,Long>();
private long lastMemorySize = 0;
private long gcTimeIncreasedCount = 0;
private static long lastMemoryCheckTime = 0;
-
- public GarbageCollectionLogger() {
- }
+
+ public GarbageCollectionLogger() {}
public synchronized void logGCInfo(AccumuloConfiguration conf) {
final long now = System.currentTimeMillis();
@@ -99,7 +98,7 @@ public class GarbageCollectionLogger {
final long diff = now - lastMemoryCheckTime;
if (diff > keepAliveTimeout) {
log.warn(String.format("GC pause checker not called in a timely fashion. Expected every %.1f seconds but was %.1f seconds since last check",
- keepAliveTimeout / 1000., diff / 1000.));
+ keepAliveTimeout / 1000., diff / 1000.));
}
lastMemoryCheckTime = now;
return;
@@ -113,5 +112,4 @@ public class GarbageCollectionLogger {
lastMemoryCheckTime = now;
}
-
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/tserver/src/main/java/org/apache/accumulo/tserver/BulkFailedCopyProcessor.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/BulkFailedCopyProcessor.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/BulkFailedCopyProcessor.java
index 034becd..cfb5fb4 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/BulkFailedCopyProcessor.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/BulkFailedCopyProcessor.java
@@ -19,6 +19,7 @@ package org.apache.accumulo.tserver;
import static java.nio.charset.StandardCharsets.UTF_8;
import java.io.IOException;
+
import org.apache.accumulo.core.conf.SiteConfiguration;
import org.apache.accumulo.core.util.CachedConfiguration;
import org.apache.accumulo.server.fs.VolumeManager;
@@ -54,7 +55,7 @@ public class BulkFailedCopyProcessor implements Processor {
VolumeManager vm = VolumeManagerImpl.get(SiteConfiguration.getInstance());
FileSystem origFs = vm.getVolumeByPath(orig).getFileSystem();
FileSystem destFs = vm.getVolumeByPath(dest).getFileSystem();
-
+
FileUtil.copy(origFs, orig, destFs, tmp, false, true, CachedConfiguration.getInstance());
destFs.rename(tmp, dest);
log.debug("copied " + orig + " to " + dest);
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/tserver/src/main/java/org/apache/accumulo/tserver/CompactionQueue.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/CompactionQueue.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/CompactionQueue.java
index a0574d9..0cb04a7 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/CompactionQueue.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/CompactionQueue.java
@@ -27,122 +27,122 @@ import java.util.concurrent.TimeUnit;
@SuppressWarnings({"rawtypes", "unchecked"})
public class CompactionQueue extends AbstractQueue<Runnable> implements BlockingQueue<Runnable> {
-
+
private List<Comparable> task = new LinkedList<Comparable>();
-
+
@Override
public synchronized Runnable poll() {
if (task.size() == 0)
return null;
-
+
Comparable min = Collections.min(task);
task.remove(min);
return (Runnable) min;
}
-
+
@Override
public synchronized Runnable peek() {
if (task.size() == 0)
return null;
-
+
Comparable min = Collections.min(task);
return (Runnable) min;
}
-
+
@Override
public synchronized boolean offer(Runnable e) {
task.add((Comparable) e);
notify();
return true;
}
-
+
@Override
public synchronized void put(Runnable e) throws InterruptedException {
task.add((Comparable) e);
notify();
}
-
+
@Override
public synchronized boolean offer(Runnable e, long timeout, TimeUnit unit) throws InterruptedException {
task.add((Comparable) e);
notify();
return true;
}
-
+
@Override
public synchronized Runnable take() throws InterruptedException {
while (task.size() == 0) {
wait();
}
-
+
return poll();
}
-
+
@Override
public synchronized Runnable poll(long timeout, TimeUnit unit) throws InterruptedException {
if (task.size() == 0) {
wait(unit.toMillis(timeout));
}
-
+
if (task.size() == 0)
return null;
-
+
return poll();
}
-
+
@Override
public synchronized int remainingCapacity() {
return Integer.MAX_VALUE;
}
-
+
@Override
public synchronized int drainTo(Collection<? super Runnable> c) {
return drainTo(c, task.size());
}
-
+
@Override
public synchronized int drainTo(Collection<? super Runnable> c, int maxElements) {
Collections.sort(task);
-
+
int num = Math.min(task.size(), maxElements);
-
+
Iterator<Comparable> iter = task.iterator();
for (int i = 0; i < num; i++) {
c.add((Runnable) iter.next());
iter.remove();
}
-
+
return num;
}
-
+
@Override
public synchronized Iterator<Runnable> iterator() {
Collections.sort(task);
-
+
final Iterator<Comparable> iter = task.iterator();
-
+
return new Iterator<Runnable>() {
-
+
@Override
public boolean hasNext() {
return iter.hasNext();
}
-
+
@Override
public Runnable next() {
return (Runnable) iter.next();
}
-
+
@Override
public void remove() {
iter.remove();
}
};
}
-
+
@Override
public synchronized int size() {
return task.size();
}
-
+
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/tserver/src/main/java/org/apache/accumulo/tserver/ConditionalMutationSet.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/ConditionalMutationSet.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/ConditionalMutationSet.java
index bbd7007..79a1176 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/ConditionalMutationSet.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/ConditionalMutationSet.java
@@ -29,14 +29,14 @@ import org.apache.accumulo.tserver.data.ServerConditionalMutation;
import org.apache.hadoop.io.WritableComparator;
/**
- *
+ *
*/
public class ConditionalMutationSet {
interface DeferFilter {
void defer(List<ServerConditionalMutation> scml, List<ServerConditionalMutation> okMutations, List<ServerConditionalMutation> deferred);
}
-
+
static class DuplicateFilter implements DeferFilter {
public void defer(List<ServerConditionalMutation> scml, List<ServerConditionalMutation> okMutations, List<ServerConditionalMutation> deferred) {
okMutations.add(scml.get(0));
@@ -49,14 +49,14 @@ public class ConditionalMutationSet {
}
}
}
-
+
static void defer(Map<KeyExtent,List<ServerConditionalMutation>> updates, Map<KeyExtent,List<ServerConditionalMutation>> deferredMutations, DeferFilter filter) {
for (Entry<KeyExtent,List<ServerConditionalMutation>> entry : updates.entrySet()) {
List<ServerConditionalMutation> scml = entry.getValue();
List<ServerConditionalMutation> okMutations = new ArrayList<ServerConditionalMutation>(scml.size());
List<ServerConditionalMutation> deferred = new ArrayList<ServerConditionalMutation>();
filter.defer(scml, okMutations, deferred);
-
+
if (deferred.size() > 0) {
scml.clear();
scml.addAll(okMutations);
@@ -71,7 +71,7 @@ public class ConditionalMutationSet {
}
}
}
-
+
static void deferDuplicatesRows(Map<KeyExtent,List<ServerConditionalMutation>> updates, Map<KeyExtent,List<ServerConditionalMutation>> deferred) {
defer(updates, deferred, new DuplicateFilter());
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/tserver/src/main/java/org/apache/accumulo/tserver/FileManager.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/FileManager.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/FileManager.java
index 98ccd07..0a7de95 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/FileManager.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/FileManager.java
@@ -56,22 +56,22 @@ import org.apache.hadoop.fs.Path;
import org.apache.log4j.Logger;
public class FileManager {
-
+
private static final Logger log = Logger.getLogger(FileManager.class);
-
+
int maxOpen;
-
+
private static class OpenReader implements Comparable<OpenReader> {
long releaseTime;
FileSKVIterator reader;
String fileName;
-
+
public OpenReader(String fileName, FileSKVIterator reader) {
this.fileName = fileName;
this.reader = reader;
this.releaseTime = System.currentTimeMillis();
}
-
+
@Override
public int compareTo(OpenReader o) {
if (releaseTime < o.releaseTime) {
@@ -82,7 +82,7 @@ public class FileManager {
return 0;
}
}
-
+
@Override
public boolean equals(Object obj) {
if (obj instanceof OpenReader) {
@@ -90,40 +90,40 @@ public class FileManager {
}
return false;
}
-
+
@Override
public int hashCode() {
return fileName.hashCode();
}
}
-
+
private Map<String,List<OpenReader>> openFiles;
private HashMap<FileSKVIterator,String> reservedReaders;
-
+
private Semaphore filePermits;
-
+
private VolumeManager fs;
-
+
// the data cache and index cache are allocated in
// TabletResourceManager and passed through the file opener to
// CachableBlockFile which can handle the caches being
// null if unallocated
private BlockCache dataCache = null;
private BlockCache indexCache = null;
-
+
private long maxIdleTime;
private final AccumuloServerContext context;
private class IdleFileCloser implements Runnable {
-
+
@Override
public void run() {
-
+
long curTime = System.currentTimeMillis();
-
+
ArrayList<FileSKVIterator> filesToClose = new ArrayList<FileSKVIterator>();
-
+
// determine which files to close in a sync block, and then close the
// files outside of the sync block
synchronized (FileManager.this) {
@@ -131,31 +131,31 @@ public class FileManager {
while (iter.hasNext()) {
Entry<String,List<OpenReader>> entry = iter.next();
List<OpenReader> ofl = entry.getValue();
-
+
for (Iterator<OpenReader> oflIter = ofl.iterator(); oflIter.hasNext();) {
OpenReader openReader = oflIter.next();
-
+
if (curTime - openReader.releaseTime > maxIdleTime) {
-
+
filesToClose.add(openReader.reader);
oflIter.remove();
}
}
-
+
if (ofl.size() == 0) {
iter.remove();
}
}
}
-
+
closeReaders(filesToClose);
-
+
}
-
+
}
-
+
/**
- *
+ *
* @param dataCache
* : underlying file can and should be able to handle a null cache
* @param indexCache
@@ -168,11 +168,11 @@ public class FileManager {
this.context = context;
this.dataCache = dataCache;
this.indexCache = indexCache;
-
+
this.filePermits = new Semaphore(maxOpen, true);
this.maxOpen = maxOpen;
this.fs = fs;
-
+
this.openFiles = new HashMap<String,List<OpenReader>>();
this.reservedReaders = new HashMap<FileSKVIterator,String>();
@@ -180,57 +180,57 @@ public class FileManager {
SimpleTimer.getInstance(context.getConfiguration()).schedule(new IdleFileCloser(), maxIdleTime, maxIdleTime / 2);
}
-
+
private static int countReaders(Map<String,List<OpenReader>> files) {
int count = 0;
-
+
for (List<OpenReader> list : files.values()) {
count += list.size();
}
-
+
return count;
}
-
+
private List<FileSKVIterator> takeLRUOpenFiles(int numToTake) {
-
+
ArrayList<OpenReader> openReaders = new ArrayList<OpenReader>();
-
+
for (Entry<String,List<OpenReader>> entry : openFiles.entrySet()) {
openReaders.addAll(entry.getValue());
}
-
+
Collections.sort(openReaders);
-
+
ArrayList<FileSKVIterator> ret = new ArrayList<FileSKVIterator>();
-
+
for (int i = 0; i < numToTake && i < openReaders.size(); i++) {
OpenReader or = openReaders.get(i);
-
+
List<OpenReader> ofl = openFiles.get(or.fileName);
if (!ofl.remove(or)) {
throw new RuntimeException("Failed to remove open reader that should have been there");
}
-
+
if (ofl.size() == 0) {
openFiles.remove(or.fileName);
}
-
+
ret.add(or.reader);
}
-
+
return ret;
}
-
+
private static <T> List<T> getFileList(String file, Map<String,List<T>> files) {
List<T> ofl = files.get(file);
if (ofl == null) {
ofl = new ArrayList<T>();
files.put(file, ofl);
}
-
+
return ofl;
}
-
+
private void closeReaders(List<FileSKVIterator> filesToClose) {
for (FileSKVIterator reader : filesToClose) {
try {
@@ -240,12 +240,12 @@ public class FileManager {
}
}
}
-
+
private List<String> takeOpenFiles(Collection<String> files, List<FileSKVIterator> reservedFiles, Map<FileSKVIterator,String> readersReserved) {
List<String> filesToOpen = new LinkedList<String>(files);
for (Iterator<String> iterator = filesToOpen.iterator(); iterator.hasNext();) {
String file = iterator.next();
-
+
List<OpenReader> ofl = openFiles.get(file);
if (ofl != null && ofl.size() > 0) {
OpenReader openReader = ofl.remove(ofl.size() - 1);
@@ -256,55 +256,55 @@ public class FileManager {
}
iterator.remove();
}
-
+
}
return filesToOpen;
}
-
+
private synchronized String getReservedReadeFilename(FileSKVIterator reader) {
return reservedReaders.get(reader);
}
-
+
private List<FileSKVIterator> reserveReaders(KeyExtent tablet, Collection<String> files, boolean continueOnFailure) throws IOException {
-
+
if (!tablet.isMeta() && files.size() >= maxOpen) {
throw new IllegalArgumentException("requested files exceeds max open");
}
-
+
if (files.size() == 0) {
return Collections.emptyList();
}
-
+
List<String> filesToOpen = null;
List<FileSKVIterator> filesToClose = Collections.emptyList();
List<FileSKVIterator> reservedFiles = new ArrayList<FileSKVIterator>();
Map<FileSKVIterator,String> readersReserved = new HashMap<FileSKVIterator,String>();
-
+
if (!tablet.isMeta()) {
filePermits.acquireUninterruptibly(files.size());
}
-
+
// now that the we are past the semaphore, we have the authority
// to open files.size() files
-
+
// determine what work needs to be done in sync block
// but do the work of opening and closing files outside
// a synch block
synchronized (this) {
-
+
filesToOpen = takeOpenFiles(files, reservedFiles, readersReserved);
-
+
int numOpen = countReaders(openFiles);
-
+
if (filesToOpen.size() + numOpen + reservedReaders.size() > maxOpen) {
filesToClose = takeLRUOpenFiles((filesToOpen.size() + numOpen + reservedReaders.size()) - maxOpen);
}
}
-
+
// close files before opening files to ensure we stay under resource
// limitations
closeReaders(filesToClose);
-
+
// open any files that need to be opened
for (String file : filesToOpen) {
try {
@@ -330,36 +330,36 @@ public class FileManager {
} else {
// close whatever files were opened
closeReaders(reservedFiles);
-
+
if (!tablet.isMeta()) {
filePermits.release(files.size());
}
-
+
log.error("Failed to open file " + file + " " + e.getMessage());
throw new IOException("Failed to open " + file, e);
}
}
}
-
+
synchronized (this) {
// update set of reserved readers
reservedReaders.putAll(readersReserved);
}
-
+
return reservedFiles;
}
-
+
private void releaseReaders(KeyExtent tablet, List<FileSKVIterator> readers, boolean sawIOException) {
// put files in openFiles
-
+
synchronized (this) {
-
+
// check that readers were actually reserved ... want to make sure a thread does
// not try to release readers they never reserved
if (!reservedReaders.keySet().containsAll(readers)) {
throw new IllegalArgumentException("Asked to release readers that were never reserved ");
}
-
+
for (FileSKVIterator reader : readers) {
try {
reader.closeDeepCopies();
@@ -368,69 +368,69 @@ public class FileManager {
sawIOException = true;
}
}
-
+
for (FileSKVIterator reader : readers) {
String fileName = reservedReaders.remove(reader);
if (!sawIOException)
getFileList(fileName, openFiles).add(new OpenReader(fileName, reader));
}
}
-
+
if (sawIOException)
closeReaders(readers);
-
+
// decrement the semaphore
if (!tablet.isMeta()) {
filePermits.release(readers.size());
}
-
+
}
-
+
static class FileDataSource implements DataSource {
-
+
private SortedKeyValueIterator<Key,Value> iter;
private ArrayList<FileDataSource> deepCopies;
private boolean current = true;
private IteratorEnvironment env;
private String file;
private AtomicBoolean iflag;
-
+
FileDataSource(String file, SortedKeyValueIterator<Key,Value> iter) {
this.file = file;
this.iter = iter;
this.deepCopies = new ArrayList<FileManager.FileDataSource>();
}
-
+
public FileDataSource(IteratorEnvironment env, SortedKeyValueIterator<Key,Value> deepCopy, ArrayList<FileDataSource> deepCopies) {
this.iter = deepCopy;
this.env = env;
this.deepCopies = deepCopies;
deepCopies.add(this);
}
-
+
@Override
public boolean isCurrent() {
return current;
}
-
+
@Override
public DataSource getNewDataSource() {
current = true;
return this;
}
-
+
@Override
public DataSource getDeepCopyDataSource(IteratorEnvironment env) {
return new FileDataSource(env, iter.deepCopy(env), deepCopies);
}
-
+
@Override
public SortedKeyValueIterator<Key,Value> iterator() throws IOException {
if (iflag != null)
((InterruptibleIterator) this.iter).setInterruptFlag(iflag);
return iter;
}
-
+
void unsetIterator() {
current = false;
iter = null;
@@ -439,7 +439,7 @@ public class FileManager {
fds.iter = null;
}
}
-
+
void setIterator(SortedKeyValueIterator<Key,Value> iter) {
current = false;
this.iter = iter;
@@ -457,16 +457,16 @@ public class FileManager {
public void setInterruptFlag(AtomicBoolean flag) {
this.iflag = flag;
}
-
+
}
-
+
public class ScanFileManager {
-
+
private ArrayList<FileDataSource> dataSources;
private ArrayList<FileSKVIterator> tabletReservedReaders;
private KeyExtent tablet;
private boolean continueOnFailure;
-
+
ScanFileManager(KeyExtent tablet) {
tabletReservedReaders = new ArrayList<FileSKVIterator>();
dataSources = new ArrayList<FileDataSource>();
@@ -478,35 +478,35 @@ public class FileManager {
continueOnFailure = false;
}
}
-
+
private List<FileSKVIterator> openFileRefs(Collection<FileRef> files) throws TooManyFilesException, IOException {
List<String> strings = new ArrayList<String>(files.size());
for (FileRef ref : files)
strings.add(ref.path().toString());
return openFiles(strings);
}
-
+
private List<FileSKVIterator> openFiles(Collection<String> files) throws TooManyFilesException, IOException {
// one tablet can not open more than maxOpen files, otherwise it could get stuck
// forever waiting on itself to release files
-
+
if (tabletReservedReaders.size() + files.size() >= maxOpen) {
throw new TooManyFilesException("Request to open files would exceed max open files reservedReaders.size()=" + tabletReservedReaders.size()
+ " files.size()=" + files.size() + " maxOpen=" + maxOpen + " tablet = " + tablet);
}
-
+
List<FileSKVIterator> newlyReservedReaders = reserveReaders(tablet, files, continueOnFailure);
-
+
tabletReservedReaders.addAll(newlyReservedReaders);
return newlyReservedReaders;
}
-
+
public synchronized List<InterruptibleIterator> openFiles(Map<FileRef,DataFileValue> files, boolean detachable) throws IOException {
-
+
List<FileSKVIterator> newlyReservedReaders = openFileRefs(files.keySet());
-
+
ArrayList<InterruptibleIterator> iters = new ArrayList<InterruptibleIterator>();
-
+
for (FileSKVIterator reader : newlyReservedReaders) {
String filename = getReservedReadeFilename(reader);
InterruptibleIterator iter;
@@ -522,30 +522,30 @@ public class FileManager {
if (value.isTimeSet()) {
iter = new TimeSettingIterator(iter, value.getTime());
}
-
+
iters.add(iter);
}
-
+
return iters;
}
-
+
public synchronized void detach() {
-
+
releaseReaders(tablet, tabletReservedReaders, false);
tabletReservedReaders.clear();
-
+
for (FileDataSource fds : dataSources)
fds.unsetIterator();
}
-
+
public synchronized void reattach() throws IOException {
if (tabletReservedReaders.size() != 0)
throw new IllegalStateException();
-
+
Collection<String> files = new ArrayList<String>();
for (FileDataSource fds : dataSources)
files.add(fds.file);
-
+
List<FileSKVIterator> newlyReservedReaders = openFiles(files);
Map<String,List<FileSKVIterator>> map = new HashMap<String,List<FileSKVIterator>>();
for (FileSKVIterator reader : newlyReservedReaders) {
@@ -555,27 +555,27 @@ public class FileManager {
list = new LinkedList<FileSKVIterator>();
map.put(fileName, list);
}
-
+
list.add(reader);
}
-
+
for (FileDataSource fds : dataSources) {
FileSKVIterator reader = map.get(fds.file).remove(0);
fds.setIterator(reader);
}
}
-
+
public synchronized void releaseOpenFiles(boolean sawIOException) {
releaseReaders(tablet, tabletReservedReaders, sawIOException);
tabletReservedReaders.clear();
dataSources.clear();
}
-
+
public synchronized int getNumOpenFiles() {
return tabletReservedReaders.size();
}
}
-
+
public ScanFileManager newScanFileManager(KeyExtent tablet) {
return new ScanFileManager(tablet);
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/6bc67602/server/tserver/src/main/java/org/apache/accumulo/tserver/HoldTimeoutException.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/HoldTimeoutException.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/HoldTimeoutException.java
index 2175851..1bd2c2c 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/HoldTimeoutException.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/HoldTimeoutException.java
@@ -18,7 +18,7 @@ package org.apache.accumulo.tserver;
public class HoldTimeoutException extends RuntimeException {
private static final long serialVersionUID = 1L;
-
+
public HoldTimeoutException(String why) {
super(why);
}