@Override public Text getEndRow() { return ke.getEndRow(); }
private static String obscuredTabletName(final KeyExtent extent) { MessageDigest digester; try { digester = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e); } if (extent.getEndRow() != null && extent.getEndRow().getLength() > 0) { digester.update(extent.getEndRow().getBytes(), 0, extent.getEndRow().getLength()); } return Base64.encodeBase64String(digester.digest()); }
@Override public String apply(KeyExtent input) { Text er = input.getEndRow(); if (er == null) { return defaultGroup; } Matcher matcher = pattern.matcher(er.toString()); if (matcher.matches() && matcher.groupCount() == 1) { return matcher.group(1); } return defaultGroup; } };
private void check() { if (getTableId() == null) throw new IllegalArgumentException("null table id not allowed"); if (getEndRow() == null || getPrevEndRow() == null) return; if (getPrevEndRow().compareTo(getEndRow()) >= 0) { throw new IllegalArgumentException( "prevEndRow (" + getPrevEndRow() + ") >= endRow (" + getEndRow() + ")"); } }
private boolean sameDate(KeyExtent extent, byte[] date) { Text endRow = extent.getEndRow(); if (endRow == null) endRow = extent.getPrevEndRow(); if (endRow == null) { log.warn("Attempting to compare date from empty extent " + extent + ". Is your sharded table pre-split?"); return date == null || date.length == 0; } else { return WritableComparator.compareBytes(endRow.getBytes(), 0, date.length, date, 0, date.length) == 0; } } }
@Override @Deprecated public org.apache.accumulo.core.data.KeyExtent getExtent() { return new org.apache.accumulo.core.data.KeyExtent(new Text(extent.getTableId()), extent.getEndRow(), extent.getPrevEndRow()); }
public boolean contains(BinaryComparable row) { if (row == null) { throw new IllegalArgumentException( "Passing null to contains is ambiguous, could be in first or last extent of table"); } if ((this.getPrevEndRow() == null || this.getPrevEndRow().compareTo(row) < 0) && (this.getEndRow() == null || this.getEndRow().compareTo(row) >= 0)) { return true; } return false; }
public boolean isPreviousExtent(KeyExtent prevExtent) { if (prevExtent == null) return getPrevEndRow() == null; if (!prevExtent.getTableId().equals(getTableId())) throw new IllegalArgumentException( "Cannot compare accross tables " + prevExtent + " " + this); if (prevExtent.getEndRow() == null) return false; if (getPrevEndRow() == null) return false; return prevExtent.getEndRow().equals(getPrevEndRow()); }
/** * Returns a String representing this extent's entry in the Metadata table * */ public Text getMetadataEntry() { return getMetadataEntry(getTableId(), getEndRow()); }
@Override public int runTest() throws Exception { return scanTablet(conn, opts.getTableName(), opts.auths, scanOpts.scanBatchSize, ke.getPrevEndRow(), ke.getEndRow(), columns); } };
private static KeyExtent wrap(org.apache.accumulo.core.data.impl.KeyExtent ke) { return new KeyExtent(new Text(ke.getTableId()), ke.getEndRow(), ke.getPrevEndRow()); }
public Range toDataRange() { return new Range(getPrevEndRow(), false, getEndRow(), true); }
@Override @Deprecated public org.apache.accumulo.core.data.KeyExtent getExtent() { KeyExtent ke = new KeyExtent(tac.getExtent()); org.apache.accumulo.core.data.KeyExtent oke = new org.apache.accumulo.core.data.KeyExtent( new Text(ke.getTableId()), ke.getEndRow(), ke.getPrevEndRow()); return oke; }
protected void merge(Connector conn, String table, List<Size> sizes, int numToMerge) throws MergeException { try { Text start = sizes.get(0).extent.getPrevEndRow(); Text end = sizes.get(numToMerge - 1).extent.getEndRow(); message("Merging %d tablets from (%s to %s]", numToMerge, start == null ? "-inf" : start, end == null ? "+inf" : end); conn.tableOperations().merge(table, start, end); } catch (Exception ex) { throw new MergeException(ex); } }
public static List<TabletLocation> findOverlappingTablets(ClientContext context, VolumeManager fs, TabletLocator locator, Path file, KeyExtent failed) throws Exception { locator.invalidateCache(failed); Text start = getStartRowForExtent(failed); return findOverlappingTablets(context, fs, locator, file, start, failed.getEndRow()); }
public boolean needsToBeChopped(KeyExtent otherExtent) { // During a delete, the block after the merge will be stretched to cover the deleted area. // Therefore, it needs to be chopped if (!otherExtent.getTableId().equals(extent.getTableId())) return false; if (isDelete()) return otherExtent.getPrevEndRow() != null && otherExtent.getPrevEndRow().equals(extent.getEndRow()); else return this.extent.overlaps(otherExtent); }
public KeyExtent(KeyExtent extent) { // extent has already deduped table id, so there is no need to do it again this.tableId = extent.tableId; this.setEndRow(extent.getEndRow(), false, true); this.setPrevEndRow(extent.getPrevEndRow(), false, true); check(); }
public MergeStats(MergeInfo info) { this.info = info; if (info.getState().equals(MergeState.NONE)) return; if (info.getExtent().getEndRow() == null) upperSplit = true; if (info.getExtent().getPrevEndRow() == null) lowerSplit = true; }