NodeLink version
3.7.0
Description
Opa, tudo bem? Encontrei um bug na versão 3.7.0 ao tentar buscar letras.
O Problema:
Quando o bot faz a requisição para /v4/loadlyrics e ela é atendida diretamente por um Worker (ex: processo de playback), o servidor retorna o erro 500 - Lyrics runtime contract is incomplete.
A Causa:
No arquivo src/api/loadLyrics.ts, a função handler assume que nodelink.sourceWorkerManager ou nodelink.workerManager sempre estarão disponíveis para fazer o delegate. Porém, quando a requisição já cai dentro do contexto do funcionário (Worker), ele não possui o workerManager, retornando undefined. A verificação falha e o código cospe o erro 500 em vez de processar a letra localmente.
A Solução paliativa que usei:
Removi a trava estrita do getLoadLyricsRuntime e adicionei um fallback no final do handler para usar o runtime.lyrics.loadLyrics caso o workerManager não seja encontrado. Assim, se a requisição cair no worker, ele mesmo resolve a letra.
Só avisando pra vocês conseguirem corrigir num próximo patch! Valeu pelo projeto! 💙
Client
lavalink-client
Steps to reproduce
Fazer uma requisição HTTP para a rota /v4/loadlyrics que acabe sendo roteada diretamente para o Worker.
O erro 500 será retornado imediatamente pelo Worker.
Example code
No response
Confirmations
Code of Conduct
NodeLink version
3.7.0
Description
Opa, tudo bem? Encontrei um bug na versão 3.7.0 ao tentar buscar letras.
O Problema:
Quando o bot faz a requisição para /v4/loadlyrics e ela é atendida diretamente por um Worker (ex: processo de playback), o servidor retorna o erro 500 - Lyrics runtime contract is incomplete.
A Causa:
No arquivo src/api/loadLyrics.ts, a função handler assume que nodelink.sourceWorkerManager ou nodelink.workerManager sempre estarão disponíveis para fazer o delegate. Porém, quando a requisição já cai dentro do contexto do funcionário (Worker), ele não possui o workerManager, retornando undefined. A verificação falha e o código cospe o erro 500 em vez de processar a letra localmente.
A Solução paliativa que usei:
Removi a trava estrita do getLoadLyricsRuntime e adicionei um fallback no final do handler para usar o runtime.lyrics.loadLyrics caso o workerManager não seja encontrado. Assim, se a requisição cair no worker, ele mesmo resolve a letra.
Só avisando pra vocês conseguirem corrigir num próximo patch! Valeu pelo projeto! 💙
Client
lavalink-client
Steps to reproduce
Fazer uma requisição HTTP para a rota /v4/loadlyrics que acabe sendo roteada diretamente para o Worker.
O erro 500 será retornado imediatamente pelo Worker.
Example code
No response
Confirmations
Code of Conduct