AbstractClientHistory extends LocalAbortable implements Identifiable<LocalHistoryIdentifier> { synchronized AbstractTransactionCommitCohort onTransactionReady(final ClientTransaction tx, final AbstractTransactionCommitCohort cohort) { final TransactionIdentifier txId = tx.getIdentifier(); if (openTransactions.remove(txId) == null) { LOG.warn("Transaction {} not recorded, proceeding with readiness", txId); } final AbstractTransactionCommitCohort previous = readyTransactions.putIfAbsent(txId, cohort); checkState(previous == null, "Duplicate cohort %s for transaction %s, already have %s", cohort, txId, previous); LOG.debug("Local history {} readied transaction {}", this, txId); return cohort; } AbstractClientHistory(final AbstractDataStoreClientBehavior client, final LocalHistoryIdentifier identifier); @Override LocalHistoryIdentifier getIdentifier(); ClientTransaction createTransaction(); ClientSnapshot takeSnapshot();  }
@Test public abstract void testOnTransactionReady();