From b9fbed8a6f4cca4a5d20f4ca5550a02baa359a9b Mon Sep 17 00:00:00 2001 From: Michael Berlin Date: Mon, 28 Aug 2017 17:22:12 +0200 Subject: [PATCH] vttablet: Hot Row Protection: Minor readability improvement. Delay incrementing the global counter instead of undoing it if we have to return early. --- go/vt/vttablet/tabletserver/txserializer/tx_serializer.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/go/vt/vttablet/tabletserver/txserializer/tx_serializer.go b/go/vt/vttablet/tabletserver/txserializer/tx_serializer.go index 005a5cbd9a4..e708b38a38b 100644 --- a/go/vt/vttablet/tabletserver/txserializer/tx_serializer.go +++ b/go/vt/vttablet/tabletserver/txserializer/tx_serializer.go @@ -150,20 +150,19 @@ func (t *TxSerializer) lockLocked(ctx context.Context, key, table string) (bool, "hot row protection: too many queued transactions (%d >= %d)", t.globalSize, t.maxGlobalQueueSize) } } - t.globalSize++ if q.size >= t.maxQueueSize { if t.dryRun { queueExceededDryRun.Add(table, 1) t.logQueueExceededDryRun.Warningf("Would have rejected BeginExecute RPC because there are too many queued transactions (%d >= %d) for the same row (table + WHERE clause: '%v')", q.size, t.maxQueueSize, key) } else { - // Decrement global queue size again because we return early. - t.globalSize-- queueExceeded.Add(table, 1) return false, vterrors.Errorf(vtrpcpb.Code_RESOURCE_EXHAUSTED, "hot row protection: too many queued transactions (%d >= %d) for the same row (table + WHERE clause: '%v')", q.size, t.maxQueueSize, key) } } + + t.globalSize++ q.size++ q.count++ if q.size > q.max {