Better deadlock detection debugging

parallelize-arbitrary-config-setup
Jelte Fennema 2022-03-17 17:52:43 +01:00
parent c6077feb76
commit 1e874347a9
1 changed files with 14 additions and 0 deletions

View File

@ -645,6 +645,9 @@ LogTransactionNode(TransactionNode *transactionNode)
appendStringInfo(logMessage, "[WaitsFor gpids: %s]", appendStringInfo(logMessage, "[WaitsFor gpids: %s]",
WaitsForToString(transactionNode->waitsFor)); WaitsForToString(transactionNode->waitsFor));
uint64 gpid = transactionId->gpid;
bool gpidMissingOk = false;
/* log the backend query if the proc is associated with the transaction */ /* log the backend query if the proc is associated with the transaction */
if (transactionNode->initiatorProc != NULL) if (transactionNode->initiatorProc != NULL)
{ {
@ -654,6 +657,17 @@ LogTransactionNode(TransactionNode *transactionNode)
appendStringInfo(logMessage, "[Backend Query: %s]", backendQuery); appendStringInfo(logMessage, "[Backend Query: %s]", backendQuery);
} }
else if (
gpid &&
ExtractNodeIdFromGlobalPID(gpid, gpidMissingOk) == GetLocalNodeId()
)
{
int pid = ExtractProcessIdFromGlobalPID(gpid);
const char *backendQuery =
pgstat_get_backend_current_activity(pid, false);
appendStringInfo(logMessage, "[Backend Query: %s]", backendQuery);
}
LogDistributedDeadlockDebugMessage(logMessage->data); LogDistributedDeadlockDebugMessage(logMessage->data);
} }