// Make sure the dependency tracker knows about us
if (ts.hasDependencyTracker()) this.depTracker.addTransaction(ts);
// Grab a VoltProcedure handle for this txn
// Two txns can't use the same VoltProcedure at the same time.
VoltProcedure volt_proc = this.getVoltProcedure(ts.getProcedure().getId());
assert(volt_proc != null) : "No VoltProcedure for " + ts;
if (debug.val) {
LOG.debug(String.format("%s - Starting execution of txn on partition %d " +
"[txnMode=%s, mode=%s]",
ts, this.partitionId, before_mode, this.currentExecMode));
if (trace.val)
LOG.trace(String.format("Current Transaction at partition #%d\n%s",
this.partitionId, ts.debug()));
}
if (hstore_conf.site.txn_counters) TransactionCounter.EXECUTED.inc(ts.getProcedure());
ClientResponseImpl cresponse = null;
VoltProcedure previous = this.currentVoltProc;
try {
this.currentVoltProc = volt_proc;
ts.markControlCodeExecuted();
cresponse = volt_proc.call(ts, ts.getProcedureParameters().toArray()); // Blocking...
// VoltProcedure.call() should handle any exceptions thrown by the transaction