mirror of https://github.com/citusdata/citus.git
47 lines
1.2 KiB
C
47 lines
1.2 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* distributed_deadlock_detection.h
|
|
* Type and function declarations used for performing distributed deadlock
|
|
* detection.
|
|
*
|
|
* Copyright (c) Citus Data, Inc.
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
|
|
#ifndef DISTRIBUTED_DEADLOCK_DETECTION_H
|
|
#define DISTRIBUTED_DEADLOCK_DETECTION_H
|
|
|
|
#include "postgres.h"
|
|
|
|
#include "access/hash.h"
|
|
#include "distributed/backend_data.h"
|
|
#include "distributed/listutils.h"
|
|
#include "distributed/lock_graph.h"
|
|
#include "distributed/transaction_identifier.h"
|
|
#include "nodes/pg_list.h"
|
|
|
|
typedef struct TransactionNode
|
|
{
|
|
DistributedTransactionId transactionId;
|
|
|
|
/* list of TransactionNode that this distributed transaction is waiting for */
|
|
List *waitsFor;
|
|
|
|
/* backend that is on the initiator node */
|
|
PGPROC *initiatorProc;
|
|
|
|
bool transactionVisited;
|
|
} TransactionNode;
|
|
|
|
|
|
/* GUC, determining whether debug messages for deadlock detection sent to LOG */
|
|
extern bool LogDistributedDeadlockDetection;
|
|
|
|
|
|
extern bool CheckForDistributedDeadlocks(void);
|
|
extern HTAB * BuildAdjacencyListsForWaitGraph(WaitGraph *waitGraph);
|
|
extern char * WaitsForToString(List *waitsFor);
|
|
|
|
|
|
#endif /* DISTRIBUTED_DEADLOCK_DETECTION_H */
|