Мне нужно в течение 30 секунд удерживать консультативную блокировку, пока экземпляры моих приложений подключаются к сети. Я заметил, что если я выполняю setTimeout
с обратным вызовом, чтобы снять блокировку, с 30 секундами или более, я получаю предупреждение, что у меня нет блокировки типа ExclusiveLock. (Если я вызову setTimeout с 10 секундами, этого не произойдет)
setTimeout(async () => {
try {
await sync.tryLockRelease(lockName) // call to pg_advisory_unlock(id);
log.info(`${metadataKey}: lock released`)
} catch (err) {
log.error(`${metadataKey}: could not release lock: ${err.message}`, err)
}
}, 30000)
Если я добавлю интервал, который запрашивает БД каждую секунду, эта проблема не возникает. Это заставляет меня поверить, что сеанс отбраковывается через некоторое время, превышающее 10 секунд.