public TestTransaction(Environment env) { this(new TransactionImpl(env), env); }
@Override protected void finalize() { // CHECKSTYLE:ON // TODO Log an error if transaction is not closed (See FLUO-486) close(false); }
@Override public synchronized void commitAsync(AsyncCommitObserver commitCallback) { checkIfOpen(); status = TxStatus.COMMIT_STARTED; commitAttempted = true; try { CommitData cd = createCommitData(); cd = setUpBeginCommitAsync(cd, commitCallback, null); if (cd != null) { beginCommitAsync(cd); } } catch (Exception e) { e.printStackTrace(); commitCallback.failed(e); } }
@Override public Bytes get(Bytes row, Column column) { txi.setReadLock(row, column); return txi.get(row, column); }
@SuppressWarnings("resource") public TestTransaction(Environment env, TransactorNode transactor) { this(new TransactionImpl(env).setTransactor(transactor), env); }
@Override public Bytes get(Bytes row, Column column) { checkIfOpen(); // TODO cache? precache? return get(row, Collections.singleton(column)).get(column); }
TransactionImpl tx3 = new TransactionImpl(env); Assert.assertEquals(0, tx3.getStats().getDeadLocks()); Assert.assertEquals(0, tx3.getStats().getTimedOutLocks()); int bobFinal = Integer.parseInt(tx3.get(Bytes.of("bob"), BALANCE).toString()); Assert.assertEquals(10, bobFinal); Assert.assertEquals(1, tx3.getStats().getDeadLocks()); Assert.assertEquals(0, tx3.getStats().getTimedOutLocks()); } else { Assert.assertEquals(0, tx3.getStats().getDeadLocks()); Assert.assertEquals(1, tx3.getStats().getTimedOutLocks()); t1.close(); tx3.close();
@Override public void initialize(InputSplit split, TaskAttemptContext context) throws IOException, InterruptedException { try { ByteArrayInputStream bais = new ByteArrayInputStream( context.getConfiguration().get(PROPS_CONF_KEY).getBytes(StandardCharsets.UTF_8)); env = new Environment(new FluoConfiguration(bais)); ti = new TransactionImpl(env, context.getConfiguration().getLong(TIMESTAMP_CONF_KEY, -1)); // TODO this uses non public Accumulo API! RangeInputSplit ris = (RangeInputSplit) split; Span span = SpanUtil.toSpan(ris.getRange()); HashSet<Column> columns = new HashSet<>(); for (String fam : context.getConfiguration().getStrings(FAMS_CONF_KEY, new String[0])) { columns.add(new Column(fam)); } cellIterator = ti.scanner().over(span).fetch(columns).build().iterator(); } catch (Exception e) { throw new IOException(e); } }
public TxStats getStats() { return tx.getStats(); }
@Override public void delete(Bytes row, Column col) throws AlreadySetException { checkIfOpen(); Objects.requireNonNull(row); Objects.requireNonNull(col); set(row, col, DELETE); }
@Override public Map<Column, Bytes> get(Bytes row, Set<Column> columns) { return tx.get(row, columns); }
public boolean preCommit(CommitData cd) { return preCommit(cd, null); }
@Override public void commit() { super.commit(); // wait for any async mutations that transaction write to flush env.getSharedResources().getBatchWriter().waitForAsyncFlush(); } };
@Override public long getStartTimestamp() { return txi.getStartTimestamp(); } }
@Override public void set(Bytes row, Column col, Bytes value) throws AlreadySetException { tx.set(row, col, value); }
@Override public ScannerBuilder scanner() { return tx.scanner(); }
public CommitData createCommitData() { return tx.createCommitData(); }
@Override public void initialize(InputSplit split, TaskAttemptContext context) throws IOException, InterruptedException { try { ByteArrayInputStream bais = new ByteArrayInputStream( context.getConfiguration().get(PROPS_CONF_KEY).getBytes(StandardCharsets.UTF_8)); env = new Environment(new FluoConfiguration(bais)); ti = new TransactionImpl(env, context.getConfiguration().getLong(TIMESTAMP_CONF_KEY, -1)); // TODO this uses non public Accumulo API! RangeInputSplit ris = (RangeInputSplit) split; Span span = SpanUtil.toSpan(ris.getRange()); HashSet<Column> columns = new HashSet<>(); for (String fam : context.getConfiguration().getStrings(FAMS_CONF_KEY, new String[0])) { columns.add(new Column(fam)); } rowIterator = ti.scanner().over(span).fetch(columns).byRow().build().iterator(); } catch (Exception e) { throw new IOException(e); } }
@Override public Collection<Mutation> createMutations(CommitData cd) { long commitTs = getStats().getCommitTs(); ArrayList<Mutation> mutations = new ArrayList<>(updates.size() + 1); for (Entry<Bytes, Map<Column, Bytes>> rowUpdates : updates.entrySet()) { Flutation m = new Flutation(env, rowUpdates.getKey()); boolean isTriggerRow = isTriggerRow(rowUpdates.getKey()); for (Entry<Column, Bytes> colUpdates : rowUpdates.getValue().entrySet()) { ColumnUtil.commitColumn(env, isTriggerRow && colUpdates.getKey().equals(notification.getColumn()), false, colUpdates.getKey(), isWrite(colUpdates.getValue()), isDelete(colUpdates.getValue()), isReadLock(colUpdates.getValue()), startTs, commitTs, observedColumns, m); } mutations.add(m); } return mutations; }
@Override public Map<Bytes, Map<Column, Bytes>> get(Collection<Bytes> rows, Set<Column> columns) { for (Bytes row : rows) { for (Column column : columns) { txi.setReadLock(row, column); } } return txi.get(rows, columns); }