fix: avoid race between replicas on start (#12344)

DERP mesh key setup would do a SELECT and then an INSERT on failure, without a lock. During some testing with multiple replicas, I managed to cause a replica to crash due to them initializing simultaneously.

Fixes:

Encountered an error running "coder server"
create coder API: insert mesh key: pq: duplicate key value violates unique constraint "site_configs_key_key"

Co-authored-by: Cian Johnston <cian@coder.com>
This commit is contained in:
Dean Sheather
2024-02-28 08:14:11 -08:00
committed by GitHub
parent 76273bf369
commit bedd2c5922
4 changed files with 32 additions and 6 deletions

View File

@ -9,6 +9,7 @@ const (
// Keep the unused iota here so we don't need + 1 every time
lockIDUnused = iota
LockIDDeploymentSetup
LockIDEnterpriseDeploymentSetup
)
// GenLockID generates a unique and consistent lock ID from a given string.