[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 cf85a6470f)

Co-authored-by: Jakub Kuczys <6032823+jack1142@users.noreply.github.com>
This commit is contained in:
Jakub Kuczys
2022-06-05 02:51:56 +02:00
committed by GitHub
parent f436998625
commit 842096171e

View File

@@ -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():