private Object visitSecondPhaseCommand(TxInvocationContext ctx, TransactionBoundaryCommand command, boolean commit,
ExtendedStatistic duration, ExtendedStatistic counter) throws Throwable {
GlobalTransaction globalTransaction = command.getGlobalTransaction();
if (log.isTraceEnabled()) {
log.tracef("Visit 2nd phase command %s. Is it local? %s. Transaction is %s", command,
ctx.isOriginLocal(), globalTransaction.globalId());
}
long start = timeService.time();
Object ret = invokeNextInterceptor(ctx, command);
long end = timeService.time();
updateTime(duration, counter, start, end, globalTransaction, ctx.isOriginLocal());