@Override public Status operationAdded(DsEvent e, DsTransaction transaction, DsOperation operation) { Status overallStatus = Status.OK; super.operationAdded(e, transaction, operation); numOps.incrementAndGet(); final Tx tx = new Tx(transaction, getMetaData(), getConfig()); final TableMetaData tMeta = getMetaData().getTableMetaData(operation.getTableName()); final Op op = new Op(operation, tMeta, getConfig()); operation.getTokens(); if (isOperationMode()) { if (log.isDebugEnabled()) { log.debug( " Received operation: table='" + op.getTableName() + "'" + ", pos=" + op.getPosition() + " (total_ops= " + tx.getTotalOps() + ", buffered=" + tx.getSize() + ")" + ", ts=" + op.getTimestamp()); } Status operationStatus = processOperation(tx, op); if (Status.ABEND.equals(operationStatus)) { overallStatus = Status.ABEND; } } return overallStatus; }
private Status processOperation(Tx tx, Op op) { Timer.Context timer = operationProcessingTimer.time(); Status status = Status.OK; try { encodeAndSend(tx, op); } catch (RuntimeException re) { operationProcessingErrorMeter.mark(); log.error("Error processing operation: " + op.toString(), re); status = Status.ABEND; } timer.stop(); return status; }