@Override public Collection<byte[]> getTxChanges() { if (conflictLevel == TxConstants.ConflictDetection.NONE) { return Collections.emptyList(); } Collection<byte[]> txChanges = new TreeSet<byte[]>(UnsignedBytes.lexicographicalComparator()); for (Set<ActionChange> changeSet : changeSets.values()) { for (ActionChange change : changeSet) { byte[] row = change.getRow(); byte[] fam = change.getFamily(); byte[] qual = change.getQualifier(); txChanges.add(getChangeKey(row, fam, qual)); if (pre014ChangeSetKey) { txChanges.add(getChangeKeyWithoutSeparators(row, fam, qual)); } } } return txChanges; }
protected void addToChangeSet(byte[] row, byte[] family, byte[] qualifier) { long currentWritePointer = tx.getWritePointer(); Set<ActionChange> changeSet = changeSets.get(currentWritePointer); if (changeSet == null) { changeSet = Sets.newHashSet(); changeSets.put(currentWritePointer, changeSet); } switch (conflictLevel) { case ROW: case NONE: // with ROW or NONE conflict detection, we still need to track changes per-family, since this // is the granularity at which we will issue deletes for rollback changeSet.add(new ActionChange(row, family)); break; case COLUMN: changeSet.add(new ActionChange(row, family, qualifier)); break; default: throw new IllegalStateException("Unknown conflict detection level: " + conflictLevel); } }
long transactionTimestamp = entry.getKey(); for (ActionChange change : entry.getValue()) { byte[] row = change.getRow(); byte[] family = change.getFamily(); byte[] qualifier = change.getQualifier(); Delete rollbackDelete = new Delete(row); makeRollbackOperation(rollbackDelete); case NONE: rollbackDelete.deleteFamilyVersion(change.getFamily(), transactionTimestamp); break; case COLUMN:
long transactionTimestamp = entry.getKey(); for (ActionChange change : entry.getValue()) { byte[] row = change.getRow(); byte[] family = change.getFamily(); byte[] qualifier = change.getQualifier(); Delete rollbackDelete = new Delete(row); makeRollbackOperation(rollbackDelete); case NONE: rollbackDelete.deleteFamilyVersion(change.getFamily(), transactionTimestamp); break; case COLUMN:
long transactionTimestamp = entry.getKey(); for (ActionChange change : entry.getValue()) { byte[] row = change.getRow(); byte[] family = change.getFamily(); byte[] qualifier = change.getQualifier(); Delete rollbackDelete = new Delete(row); makeRollbackOperation(rollbackDelete); case NONE: rollbackDelete.deleteFamilyVersion(change.getFamily(), transactionTimestamp); break; case COLUMN:
long transactionTimestamp = entry.getKey(); for (ActionChange change : entry.getValue()) { byte[] row = change.getRow(); byte[] family = change.getFamily(); byte[] qualifier = change.getQualifier(); Delete rollbackDelete = new Delete(row); makeRollbackOperation(rollbackDelete); case NONE: rollbackDelete.deleteFamilyVersion(change.getFamily(), transactionTimestamp); break; case COLUMN:
long transactionTimestamp = entry.getKey(); for (ActionChange change : entry.getValue()) { byte[] row = change.getRow(); byte[] family = change.getFamily(); byte[] qualifier = change.getQualifier(); Delete rollbackDelete = new Delete(row); makeRollbackOperation(rollbackDelete); case NONE: rollbackDelete.deleteFamilyVersion(change.getFamily(), transactionTimestamp); break; case COLUMN: