Wait for two 'Started Launcher' lines before connecting to managed LL (#5751)

This commit is contained in:
Jakub Kuczys 2022-06-05 02:46:17 +02:00 committed by GitHub
parent 9cdcf07773
commit cf85a6470f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -313,12 +313,22 @@ class ServerManager:
async def _wait_for_launcher(self) -> None: async def _wait_for_launcher(self) -> None:
log.info("Waiting for Managed Lavalink node to be ready") log.info("Waiting for Managed Lavalink node to be ready")
# Since Lavalink jar 3.4.0_1346, there are two "Started Launcher" lines logged
# before Lavalink is ready to receive requests.
started_line_seen = False
for i in itertools.cycle(range(50)): for i in itertools.cycle(range(50)):
line = await self._proc.stdout.readline() line = await self._proc.stdout.readline()
if _RE_READY_LINE.search(line): if _RE_READY_LINE.search(line):
self.ready.set() if started_line_seen:
log.info("Managed Lavalink node is ready to receive requests.") self.ready.set()
break log.info("Managed Lavalink node is ready to receive requests.")
break
else:
log.debug(
"Seen first 'Started Launcher' line from Managed Lavalink node."
" Waiting for the second one..."
)
started_line_seen = True
if _FAILED_TO_START.search(line): if _FAILED_TO_START.search(line):
raise ManagedLavalinkStartFailure( raise ManagedLavalinkStartFailure(
f"Lavalink failed to start: {line.decode().strip()}" f"Lavalink failed to start: {line.decode().strip()}"