@Override
protected synchronized void updateStatsRow(Object rowKey, Object[] rowValues) {
@SuppressWarnings("unchecked")
Pair<Integer, SpeculationType> rowKeyPair = (Pair<Integer, SpeculationType>) rowKey;
Integer partition = rowKeyPair.getFirst();
SpeculationType specType = rowKeyPair.getSecond();
PartitionExecutor.Debug executorDebug = hstore_site.getPartitionExecutor(partition).getDebugContext();
SpecExecScheduler.Debug specExecDebug = executorDebug.getSpecExecScheduler().getDebugContext();
SpecExecProfiler profiler = specExecDebug.getProfiler(specType);
assert(profiler != null);
int offset = columnNameToIndex.get("PARTITION");
double total = (double)profiler.total_time.getInvocations();
rowValues[offset++] = partition;
rowValues[offset++] = specType.toString();
rowValues[offset++] = profiler.success;
rowValues[offset++] = profiler.success / total;
rowValues[offset++] = profiler.interrupts;
rowValues[offset++] = profiler.interrupts / total;
rowValues[offset++] = MathUtil.weightedMean(profiler.queue_size);