Skip to content

[FIX] Fixando label handler e chats #1076

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Nov 27, 2024

Conversation

ImPedro29
Copy link
Contributor

@ImPedro29 ImPedro29 commented Nov 17, 2024

Problemas

Encontrei alguns problemas de concorrencia no Handle Label e principalmente duplicação de chats.

  1. Ele primeiro fazia um get de todos os chats da instancia para depois realizar o update, caso o usuario adicionasse ou removesse labels ao mesmo tempo existia uma chance muito alta de sobrescrita de labels.
  2. Como os chats não eram unicos isso quebrava a lógica das labels e várias outras.
  3. Para o caso de duas instancias diferentes salvarem o mesmo numero o findChats retornava como se os numeros fossem da mesma instanceID.
  4. No startup da aplicação as labels não eram carregadas adequadamente pois os chats não tinha sido salvos ainda.

Soluções

  1. Realizei as operações diretamente no banco de dados para um risco menor de racing.
  2. Defini uma migration para que não hajam problemas com chats duplicados.
  3. Adicionei a instanceId na query de join.
  4. Agora as labels são tratadas como upsert, no startup, quem chegar primeiro (label ou chat) ele já cria direto.

Ressalvas

1. A migration com a unicidade do chat não está sendo realizada corretamente (por isso o PR está em draft)
2. No startup da aplicação o handle labels sempre vai ser falho já que os chats não são criados até que o whatsapp esteja sync.
3. Por algum motivo o baileys não funciona em 100% das vezes, muitas vezes ele não chama o evento de labels association. (Sempre após o reinicio da aplicação os eventos de labels.association param de funcionar). Erro meu, o redis precisa estar configurado para que esse comportamento não ocorra.
4. Por algum motivo, se eu já tiver conectado em outra instancia do whatsapp web e conectar uma nova instancia na evolution, os eventos de labels ficam inconsistentes, identifiquei o mesmo problema usando o baileys diretamente.

Edit: Este pr usa uma das ideias já feita em outro PR (#1012) recomendo mergiar ele primeiro.

@help-corretora
Copy link
Contributor

Quero acompanhar essa discussão, não identifiquei esse problema no meu ambiente, obrigado por reportar.

@Richards0nd
Copy link
Contributor

Olá, tudo bem? 👋

Percebi que o PR foi enviado para a branch errada. Por padrão, estamos utilizando a branch development para todas as contribuições e ajustes em andamento. Isso nos ajuda a manter o fluxo de trabalho organizado e consistente.

Você poderia, por favor, alterar a branch de destino para development? Caso precise de ajuda com isso, é só me avisar, estou à disposição!

Muito obrigado pela sua contribuição! 🚀

@ImPedro29 ImPedro29 changed the base branch from main to develop November 18, 2024 21:59
@ImPedro29 ImPedro29 marked this pull request as ready for review November 19, 2024 13:24
@DavidsonGomes
Copy link
Collaborator

Conflitos encontrados, por favor resolva para realizarmos o merge

# Conflicts:
#	prisma/mysql-schema.prisma
#	src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts
@ImPedro29
Copy link
Contributor Author

Conflitos fixados @DavidsonGomes !

@DavidsonGomes DavidsonGomes merged commit 62ea22a into EvolutionAPI:develop Nov 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants