Skip to content

Prevent concurrent reconciliation

Sami Hiltunen requested to merge smh-prevent-concurrent-reconciliation into master

Praefect's reconciler might run concurrently on multiple Praefect nodes. It's using the default isolation level of read committed. Due to this, none of the concurrent transactions will see the jobs queued by other transactions. The queries will see the same state and schedule the same jobs. To fix this, this commit introduces a transaction scoped advisory lock that the reconciliation queries attempt to acquire. If they fail to acquire the lock, they won't schedule any jobs. This prevents them from scheduling duplicate jobs.

Merge request reports

Loading