class 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);

}