@Override
protected synchronized void updateStatsRow(Object rowKey, Object[] rowValues) {
int partition = (Integer)rowKey;
TransactionQueueManager.Debug dbg = this.queue_manager.getDebugContext();
TransactionQueueManagerProfiler profiler = dbg.getProfiler(partition);
PartitionLockQueue initQueue = this.queue_manager.getLockQueue(partition);
PartitionLockQueueProfiler initProfiler = initQueue.getDebugContext().getProfiler();
int offset = this.columnNameToIndex.get("PARTITION");
rowValues[offset++] = partition;
rowValues[offset++] = MathUtil.weightedMean(profiler.concurrent_dtxn);
for (ProfileMeasurement pm : profiler.getProfileMeasurements()) {
rowValues[offset++] = pm.getTotalThinkTime();
rowValues[offset++] = pm.getInvocations();
} // FOR
// ThrottlingQueue
ProfileMeasurement throttlePM = initQueue.getThrottleTime();
rowValues[offset++] = throttlePM.getTotalThinkTime();
rowValues[offset++] = throttlePM.getInvocations();
// PartitionLockQueue
rowValues[offset++] = MathUtil.weightedMean(initProfiler.waitTimes);