private void doRollback(final boolean clientFailed,
final boolean lastMessageAsDelived,
final Transaction theTx) throws Exception {
boolean wasStarted = started;
List<MessageReference> toCancel = new ArrayList<>();
for (ServerConsumer consumer : consumers.values()) {
if (wasStarted) {
consumer.setStarted(false);
}
toCancel.addAll(consumer.cancelRefs(clientFailed, lastMessageAsDelived, theTx));
}
if (theTx.getState() == State.ROLLEDBACK) {
Transaction newTX = newTransaction();
cancelAndRollback(clientFailed, newTX, wasStarted, toCancel);
} else {
cancelAndRollback(clientFailed, theTx, wasStarted, toCancel);
}
}