Actually wait while the first in reconnects

This commit is contained in:
Gavin M. Roy 2020-07-07 16:21:01 -04:00
parent ecc070e974
commit a1736bccae

View file

@ -344,14 +344,17 @@ class ApplicationMixin:
message = str(err) message = str(err)
if isinstance(err, psycopg2.OperationalError) and _attempt == 1: if isinstance(err, psycopg2.OperationalError) and _attempt == 1:
LOGGER.critical('Disconnected from Postgres: %s', err) LOGGER.critical('Disconnected from Postgres: %s', err)
retry = True
if not self._postgres_reconnect.locked(): if not self._postgres_reconnect.locked():
async with self._postgres_reconnect: async with self._postgres_reconnect:
if await self._postgres_connect(): retry = await self._postgres_connect()
async with self.postgres_connector( if retry:
on_error, on_duration, timeout, await self._postgres_connected.wait()
_attempt + 1) as connector: async with self.postgres_connector(
yield connector on_error, on_duration, timeout,
return _attempt + 1) as connector:
yield connector
return
message = 'disconnected' message = 'disconnected'
exc = on_error('postgres_connector', ConnectionException(message)) exc = on_error('postgres_connector', ConnectionException(message))
if exc: if exc: