You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Yes, I have searched for similar issues on GitHub and found none.
What did you do?
Analisei o mecanismo de webhooks do Evolution API e notei que existem limitações na forma como as retentativas e timeouts são gerenciados:
O timeout da requisição não é configurável, o que causa problemas quando webhooks demoram mais que o esperado para responder.
O sistema de retentativas tem valores fixos (10 tentativas com 30 segundos entre cada uma), sem possibilidade de configuração.
O intervalo entre retentativas é fixo, não há backoff exponencial para evitar sobrecarregar servidores quando eles estão instáveis.
Não há distinção entre erros recuperáveis e não-recuperáveis - o sistema tenta novamente mesmo em casos onde isso não faz sentido (como erro 404 ou 401).
Bug crítico: O sistema está enviando o mesmo webhook múltiplas vezes (até 10 vezes) mesmo quando o servidor de destino está disponível e respondendo com sucesso. Isso causa duplicação de dados e processamento desnecessário no servidor de destino.
Isso causa problemas de estabilidade e desempenho em ambientes de produção com alto volume de webhooks ou quando os servidores de destino estão sob carga.
What did you expect?
Um sistema robusto de webhooks que:
Permita configurar o timeout de requisições via variáveis de ambiente
Permita ajustar os parâmetros de retentativa (máximo de tentativas, intervalo inicial, etc.)
Implemente backoff exponencial para aumentar gradualmente o tempo entre tentativas
Detecte e não tente novamente em casos de erros permanentes (códigos HTTP como 400, 401, 403, etc.)
Forneça logs detalhados sobre as tentativas e falhas
Mais importante: Reconheça corretamente respostas bem-sucedidas e não faça retentativas quando o webhook foi entregue com sucesso
What did you observe instead of what you expected?
Timeout fixo sem possibilidade de configuração
Retentativas constantes mesmo para erros permanentes, causando tráfego desnecessário
Intervalo fixo entre tentativas, sem crescimento exponencial
Possíveis problemas de "thundering herd" quando muitos webhooks falham ao mesmo tempo
Logs insuficientes para diagnóstico de falhas em webhooks
Bug crítico: Mesmo com o servidor de callback saudável e respondendo com códigos 200, o sistema continua reenviando o mesmo webhook até 10 vezes. Isso gera duplicação de dados e carga desnecessária tanto na nossa API quanto no servidor de destino.
Isso causa:
Requisições ficando penduradas por longos períodos quando o servidor de destino está lento
Recursos desperdiçados em tentativas que nunca serão bem-sucedidas (como enviar para URLs que retornam 404)
Possível sobrecarga em servidores de destino devido ao padrão de retentativas sem backoff
Processamento redundante e múltiplo de eventos que deveriam ser processados apenas uma vez
Screenshots/Videos
No response
Which version of the API are you using?
2.2.3
What is your environment?
Docker
Other environment specifications
No response
If applicable, paste the log output
No response
Additional Notes
Gostaria de ajudar com a implementação de uma solução que permita configurar timeout e retentativas via variáveis de ambiente, para tornar o sistema de webhooks mais robusto e configurável. Já implementei uma solução inicial que adiciona:
Configuração de timeout via .env
Sistema de retentativas com backoff exponencial
Tratamento diferenciado para erros permanentes vs. temporários
Logs melhorados para diagnóstico
Correção do bug que causa duplicação de webhooks
Seria possível avaliar esta melhoria? Posso submeter um PR com as alterações e testes.
The text was updated successfully, but these errors were encountered:
Adiciona interface de configuração na estrutura Webhook para permitir:
- Configuração de timeout em requisições
- Parâmetros de retentativas configuráveis
- Lista de códigos HTTP que não devem gerar retry
Issue: EvolutionAPI#1325
Adiciona novas variáveis para controlar o comportamento dos webhooks:
- WEBHOOK_REQUEST_TIMEOUT_MS: tempo máximo de espera
- WEBHOOK_RETRY_MAX_ATTEMPTS: número máximo de tentativas
- WEBHOOK_RETRY_INITIAL_DELAY_SECONDS: intervalo inicial
- WEBHOOK_RETRY_USE_EXPONENTIAL_BACKOFF: ativar backoff exponencial
- WEBHOOK_RETRY_MAX_DELAY_SECONDS: intervalo máximo entre tentativas
- WEBHOOK_RETRY_JITTER_FACTOR: fator de aleatoriedade
- WEBHOOK_RETRY_NON_RETRYABLE_STATUS_CODES: códigos de erro permanentes
Issue: EvolutionAPI#1325
Implementa timeout configurável nas requisições de webhook:
- Aplica configuração em todas as instâncias axios
- Usa valor padrão de 30 segundos se não configurado
- Evita requisições penduradas indefinidamente
Issue: EvolutionAPI#1325
…vas inteligente
ResolveEvolutionAPI#1325
- Adiciona configuração de timeout via variáveis de ambiente
- Implementa backoff exponencial com jitter para retentativas
- Detecta erros permanentes para evitar retentativas desnecessárias
- Corrige bug de duplicação de webhooks
- Melhora logs para diagnóstico
Welcome!
What did you do?
Analisei o mecanismo de webhooks do Evolution API e notei que existem limitações na forma como as retentativas e timeouts são gerenciados:
Isso causa problemas de estabilidade e desempenho em ambientes de produção com alto volume de webhooks ou quando os servidores de destino estão sob carga.
What did you expect?
Um sistema robusto de webhooks que:
What did you observe instead of what you expected?
Isso causa:
Screenshots/Videos
No response
Which version of the API are you using?
2.2.3
What is your environment?
Docker
Other environment specifications
No response
If applicable, paste the log output
No response
Additional Notes
Gostaria de ajudar com a implementação de uma solução que permita configurar timeout e retentativas via variáveis de ambiente, para tornar o sistema de webhooks mais robusto e configurável. Já implementei uma solução inicial que adiciona:
Seria possível avaliar esta melhoria? Posso submeter um PR com as alterações e testes.
The text was updated successfully, but these errors were encountered: