From 097fd15a899c7df5b4daf1a0ce91d5c70e2825be Mon Sep 17 00:00:00 2001 From: Brian Cloutier Date: Thu, 18 Jan 2018 14:14:11 -0800 Subject: [PATCH] small refactor, CheckDeadlockForTransactionNode builds it's own array --- .../transaction/distributed_deadlock_detection.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/backend/distributed/transaction/distributed_deadlock_detection.c b/src/backend/distributed/transaction/distributed_deadlock_detection.c index a2d847964..64cbf8307 100644 --- a/src/backend/distributed/transaction/distributed_deadlock_detection.c +++ b/src/backend/distributed/transaction/distributed_deadlock_detection.c @@ -41,7 +41,7 @@ bool LogDistributedDeadlockDetection = false; static bool CheckDeadlockForTransactionNode(TransactionNode *startingTransactionNode, - TransactionNode **transactionNodeStack, + int maxStackDepth, List **deadlockPath); static void PrependOutgoingNodesToQueue(TransactionNode *queuedTransactionNode, int currentStackDepth, @@ -134,7 +134,6 @@ CheckForDistributedDeadlocks(void) { bool deadlockFound = false; List *deadlockPath = NIL; - TransactionNode *transactionNodeStack[edgeCount + 1]; /* we're only interested in finding deadlocks originating from this node */ if (transactionNode->transactionId.initiatorNodeIdentifier != localGroupId) @@ -145,7 +144,7 @@ CheckForDistributedDeadlocks(void) ResetVisitedFields(adjacencyLists); deadlockFound = CheckDeadlockForTransactionNode(transactionNode, - transactionNodeStack, + edgeCount, &deadlockPath); if (deadlockFound) { @@ -230,11 +229,12 @@ CheckForDistributedDeadlocks(void) */ static bool CheckDeadlockForTransactionNode(TransactionNode *startingTransactionNode, - TransactionNode **transactionNodeStack, + int maxStackDepth, List **deadlockPath) { List *toBeVisitedNodes = NIL; int currentStackDepth = 0; + TransactionNode *transactionNodeStack[maxStackDepth]; /* * We keep transactionNodeStack to keep track of the deadlock paths. At this point,