@Override public TransactionInfo getTransactionInfo() { final TransactionInfo info = _transactionInfoCache; if (System.currentTimeMillis() - info.getAcquisitionTime() > MAX_STALE) { final List<Transaction> transactions = new ArrayList<Transaction>(); synchronized (info) { info.commitCount = 0; info.rollbackCount = 0; info.rollbackSinceCommitCount = 0; _persistit.populateTransactionList(transactions); for (final Transaction txn : transactions) { info.commitCount += txn.getCommittedTransactionCount(); info.rollbackCount += txn.getRolledBackTransactionCount(); info.rollbackSinceCommitCount += txn.getRolledBackSinceLastCommitCount(); } info.updateAcquisitonTime(); } } return info; }