From 842096171e48019bfadf4a6454502240f316c02e Mon Sep 17 00:00:00 2001 From: Jakub Kuczys <6032823+jack1142@users.noreply.github.com> Date: Sun, 5 Jun 2022 02:51:56 +0200 Subject: [PATCH] [3.4] Wait for two 'Started Launcher' lines before connecting to managed LL (#5751) (#5752) [3.4] Wait for two 'Started Launcher' lines before connecting to managed LL (#5751). (cherry picked from commit cf85a6470fb17e1038f7448b9ed623ed83a424b5) Co-authored-by: Jakub Kuczys <6032823+jack1142@users.noreply.github.com> --- redbot/cogs/audio/manager.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/redbot/cogs/audio/manager.py b/redbot/cogs/audio/manager.py index 12596c14b..156234289 100644 --- a/redbot/cogs/audio/manager.py +++ b/redbot/cogs/audio/manager.py @@ -230,12 +230,22 @@ class ServerManager: async def _wait_for_launcher(self) -> None: log.debug("Waiting for Lavalink server to be ready") lastmessage = 0 + # 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)): line = await self._proc.stdout.readline() if _RE_READY_LINE.search(line): - self.ready.set() - log.info("Internal Lavalink server is ready to receive requests.") - break + if started_line_seen: + self.ready.set() + log.info("Internal Lavalink server is ready to receive requests.") + break + else: + log.debug( + "Seen first 'Started Launcher' line from internal Lavalink server." + " Waiting for the second one..." + ) + started_line_seen = True if _FAILED_TO_START.search(line): raise RuntimeError(f"Lavalink failed to start: {line.decode().strip()}") if self._proc.returncode is not None and lastmessage + 2 < time.time():