citusdata / citusdata/citus

Distributed deadlock detection should differentiate local processes

Open
#1,803 2 comments 0 reactions 0 assignees View on GitHub
research
Dominant language
C
Stars
12.8k
Forks
794
Avg merge
2d 14h
Merged PRs (30d)
31

Description

Distributed deadlock detection uses `0` as the transaction number for all of the local processes. However, this might become problematic in certain cases.

As we use `0` as the transaction number for all local processes, that might end up with false positives since we treat all local processes as being part of the same distributed transaction. So, say distributed transaction `15` waits for a local process, and another local process waits for distributed transaction `15`. The distributed deadlock detection cancels the distributed transaction since it finds a cycle.

There are no easy steps to reproduce this issue, but, it's possible that the deadlock detection results in false positive.

We should probably consider `pid`s of the local processes/transactions to differentiate each.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.