Repository: accumulo Updated Branches: refs/heads/1.5.2-SNAPSHOT 9f3cbb30d -> 3c513c894 refs/heads/1.6.1-SNAPSHOT d7c1125d3 -> d274a8ed4 refs/heads/master aa887d389 -> 7d284015d
ACCUMULO-2870 Fail hard and fast if we don't calculate a midpoint. By failing early, we catch the change in functionality from FileUtil.findMidPoint which always returns a mid-point. Also prevents an NPE from unexpectedly being thrown. Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/3c513c89 Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/3c513c89 Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/3c513c89 Branch: refs/heads/1.5.2-SNAPSHOT Commit: 3c513c894d711dd6d52e798a239b893ea94aa124 Parents: 9f3cbb3 Author: Josh Elser <els...@apache.org> Authored: Thu Jun 26 14:10:26 2014 -0400 Committer: Josh Elser <els...@apache.org> Committed: Wed Jul 23 11:38:31 2014 -0400 ---------------------------------------------------------------------- .../apache/accumulo/server/tabletserver/Tablet.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo/blob/3c513c89/server/src/main/java/org/apache/accumulo/server/tabletserver/Tablet.java ---------------------------------------------------------------------- diff --git a/server/src/main/java/org/apache/accumulo/server/tabletserver/Tablet.java b/server/src/main/java/org/apache/accumulo/server/tabletserver/Tablet.java index a6a5e88..a1fc707 100644 --- a/server/src/main/java/org/apache/accumulo/server/tabletserver/Tablet.java +++ b/server/src/main/java/org/apache/accumulo/server/tabletserver/Tablet.java @@ -3118,9 +3118,15 @@ public class Tablet { } else { lastRow = extent.getEndRow(); } - + + // We expect to get a midPoint for this set of files. If we don't get one, we have a problem. + final Key mid = keys.get(.5); + if (null == mid) { + throw new IllegalStateException("Could not determine midpoint for files"); + } + // check to see that the midPoint is not equal to the end key - if (keys.get(.5).compareRow(lastRow) == 0) { + if (mid.compareRow(lastRow) == 0) { if (keys.firstKey() < .5) { Key candidate = keys.get(keys.firstKey()); if (candidate.compareRow(lastRow) != 0) { @@ -3140,8 +3146,7 @@ public class Tablet { return null; } - Key mid = keys.get(.5); - Text text = (mid == null) ? null : mid.getRow(); + Text text = mid.getRow(); SortedMap<Double,Key> firstHalf = keys.headMap(.5); if (firstHalf.size() > 0) { Text beforeMid = firstHalf.get(firstHalf.lastKey()).getRow();