public static Put cloneDeleteToPutAndAddColumn(Delete delete, byte[] family, byte[] qualifier, byte[] value) { NavigableMap<byte[], List<Cell>> familyCellMap = delete.getFamilyCellMap(); List<Cell> cells = familyCellMap.get(family); Cell cell = Iterables.getFirst(cells, null); if (cell == null) { throw new RuntimeException("Empty cells for delete for family: " + Bytes.toStringBinary(family)); } byte[] rowArray = new byte[cell.getRowLength()]; System.arraycopy(cell.getRowArray(), cell.getRowOffset(), rowArray, 0, cell.getRowLength()); Put put = new Put(rowArray, delete.getTimeStamp()); put.addColumn(family, qualifier, delete.getTimeStamp(), value); return put; }
LocalTableState state = new LocalTableState(env, localTable, d); long now = d.getTimeStamp(); if (now == HConstants.LATEST_TIMESTAMP) { now = EnvironmentEdgeManager.currentTimeMillis();
static void throwIfUnsupportedDeleteRow(Delete operation) { if (operation.getTimeStamp() != HConstants.LATEST_TIMESTAMP) { // TODO: implement when bigtable service supports deleting a row before a timestamp. throw new UnsupportedOperationException("Cannot perform row deletion at timestamp."); } }
static void throwIfUnsupportedDeleteRow(Delete operation) { if (operation.getTimeStamp() != HConstants.LATEST_TIMESTAMP) { // TODO: implement when bigtable service supports deleting a row before a timestamp. throw new UnsupportedOperationException("Cannot perform row deletion at timestamp."); } }
private void ensureNoUpdatesWhenCoveredByDelete(RegionCoprocessorEnvironment env, IndexCodec codec, List<Cell> currentState, Delete d) throws IOException { LocalHBaseState table = new SimpleTableState(Result.create(currentState)); LocalTableState state = new LocalTableState(table, d); state.setCurrentTimestamp(d.getTimeStamp()); // now we shouldn't see anything when getting the index update state.addPendingUpdates(d.getFamilyCellMap().get(FAMILY)); Iterable<IndexUpdate> updates = codec.getIndexUpserts(state, IndexMetaData.NULL_INDEX_META_DATA, null, null); for (IndexUpdate update : updates) { assertFalse("Had some index updates, though it should have been covered by the delete", update.isValid()); } } }
private void ensureNoUpdatesWhenCoveredByDelete(RegionCoprocessorEnvironment env, IndexCodec codec, List<KeyValue> currentState, Delete d) throws IOException { LocalHBaseState table = new SimpleTableState(new Result(currentState)); LocalTableState state = new LocalTableState(env, table, d); state.setCurrentTimestamp(d.getTimeStamp()); // now we shouldn't see anything when getting the index update state.addPendingUpdates(d.getFamilyMap().get(FAMILY)); Iterable<IndexUpdate> updates = codec.getIndexUpserts(state); for (IndexUpdate update : updates) { assertFalse("Had some index updates, though it should have been covered by the delete", update.isValid()); } } }
public static Put cloneDeleteToPutAndAddColumn(Delete delete, byte[] family, byte[] qualifier, byte[] value) { NavigableMap<byte[], List<Cell>> familyCellMap = delete.getFamilyCellMap(); List<Cell> cells = familyCellMap.get(family); Cell cell = Iterables.getFirst(cells, null); if (cell == null) { throw new RuntimeException("Empty cells for delete for family: " + Bytes.toStringBinary(family)); } byte[] rowArray = new byte[cell.getRowLength()]; System.arraycopy(cell.getRowArray(), cell.getRowOffset(), rowArray, 0, cell.getRowLength()); Put put = new Put(rowArray, delete.getTimeStamp()); put.addColumn(family, qualifier, delete.getTimeStamp(), value); return put; }
/** * @param d Delete to clone. */ public Delete(final Delete d) { this.row = d.getRow(); this.ts = d.getTimeStamp(); this.lockId = d.getLockId(); this.familyMap.putAll(d.getFamilyMap()); this.writeToWAL = d.writeToWAL; }
public void delete(Delete delete) throws IOException { String spec = buildRowSpec(delete.getRow(), delete.getFamilyMap(), delete.getTimeStamp(), delete.getTimeStamp(), 1); for (int i = 0; i < maxRetries; i++) { Response response = client.delete(spec); int code = response.getCode(); switch (code) { case 200: return; case 509: try { Thread.sleep(sleepTime); } catch (InterruptedException e) { } break; default: throw new IOException("delete request failed with " + code); } } throw new IOException("delete request timed out"); }
/** * @param d Delete to clone. */ public Delete(final Delete d) { this.row = d.getRow(); this.ts = d.getTimeStamp(); this.familyMap.putAll(d.getFamilyCellMap()); this.durability = d.durability; for (Map.Entry<String, byte[]> entry : d.getAttributesMap().entrySet()) { this.setAttribute(entry.getKey(), entry.getValue()); } }
private void prepareDelete(Delete delete) throws IOException { // Check to see if this is a deleteRow insert if(delete.getFamilyMap().isEmpty()){ for(byte [] family : this.htableDescriptor.getFamiliesKeys()){ // Don't eat the timestamp delete.deleteFamily(family, delete.getTimeStamp()); } } else { for(byte [] family : delete.getFamilyMap().keySet()) { if(family == null) { throw new NoSuchColumnFamilyException("Empty family is invalid"); } checkFamily(family); } } }
Put deleteMarkers = new Put(delete.getRow(), delete.getTimeStamp()); for (byte[] family : delete.getFamilyCellMap().keySet()) { List<Cell> familyCells = delete.getFamilyCellMap().get(family);
Put deleteMarkers = new Put(delete.getRow(), delete.getTimeStamp()); for (byte[] family : delete.getFamilyCellMap().keySet()) { List<Cell> familyCells = delete.getFamilyCellMap().get(family);
Put deleteMarkers = new Put(delete.getRow(), delete.getTimeStamp()); for (byte[] family : delete.getFamilyCellMap().keySet()) { List<Cell> familyCells = delete.getFamilyCellMap().get(family);
Put deleteMarkers = new Put(delete.getRow(), delete.getTimeStamp()); for (byte[] family : delete.getFamilyCellMap().keySet()) { List<Cell> familyCells = delete.getFamilyCellMap().get(family);
public static TDelete deleteFromHBase(Delete in) { TDelete out = new TDelete(ByteBuffer.wrap(in.getRow())); List<TColumn> columns = new ArrayList<TColumn>(); long rowTimestamp = in.getTimeStamp(); if (rowTimestamp != HConstants.LATEST_TIMESTAMP) { out.setTimestamp(rowTimestamp); } // Map<family, List<KeyValue>> for (Map.Entry<byte[], List<KeyValue>> familyEntry : in.getFamilyMap().entrySet()) { TColumn column = new TColumn(ByteBuffer.wrap(familyEntry.getKey())); for (KeyValue keyValue : familyEntry.getValue()) { byte[] family = keyValue.getFamily(); byte[] qualifier = keyValue.getQualifier(); long timestamp = keyValue.getTimestamp(); if (family != null) { column.setFamily(family); } if (qualifier != null) { column.setQualifier(qualifier); } if (timestamp != HConstants.LATEST_TIMESTAMP) { column.setTimestamp(keyValue.getTimestamp()); } } columns.add(column); } out.setColumns(columns); return out; }
Put deleteMarkers = new Put(delete.getRow(), delete.getTimeStamp()); for (byte[] family : delete.getFamilyCellMap().keySet()) { List<Cell> familyCells = delete.getFamilyCellMap().get(family);
@Override public void prepareDelete(Delete delete) throws IOException { // Check to see if this is a deleteRow insert if(delete.getFamilyCellMap().isEmpty()){ for(byte [] family : this.htableDescriptor.getFamiliesKeys()){ // Don't eat the timestamp delete.addFamily(family, delete.getTimeStamp()); } } else { for(byte [] family : delete.getFamilyCellMap().keySet()) { if(family == null) { throw new NoSuchColumnFamilyException("Empty family is invalid"); } checkFamily(family); } } }
Put deleteMarkers = new Put(delete.getRow(), delete.getTimeStamp()); for (byte[] family : delete.getFamilyCellMap().keySet()) { List<Cell> familyCells = delete.getFamilyCellMap().get(family);
Put deleteMarkers = new Put(delete.getRow(), delete.getTimeStamp()); for (byte[] family : delete.getFamilyCellMap().keySet()) { List<Cell> familyCells = delete.getFamilyCellMap().get(family);