Estratégias de mitigação de condições de corrida de Webhook

Olá a todos! :waving_hand:

Estou trabalhando na construção de uma sincronização bidirecional entre Discourse e Discord. Do lado do Discourse, estou usando webhooks para eventos de tópicos e posts (criados, editados, excluídos, recuperados) para repassar atualizações para os canais correspondentes do Discord. A outra direção é tratada usando um bot construído com discord.js.

Tenho encontrado alguns problemas para fazer meu middleware lidar com as coisas de forma limpa — principalmente devido a uma condição de corrida entre o recebimento dos webhooks de tópicos e posts.

Gostaria de alguns conselhos sobre a melhor forma de lidar com isso. No momento, estou considerando descartar completamente os webhooks de tópicos e basear tudo em eventos de posts (usando topic_id como unificador). Dito isso, prefiro encontrar uma maneira de fazer minha configuração atual funcionar em vez de reescrever tudo do zero.

Quaisquer insights ou sugestões seriam muito apreciados! :folded_hands:

3 curtidas

Acabei de decidir buscar os valores e preencher alguns dados antes de ter o tópico em meu banco de dados

1 curtida

É que você está recebendo o webhook de post antes do webhook de topic? Dada a natureza assíncrona disso, isso pode realmente acontecer.

2 curtidas

Então, eu estava fazendo webhooks de tópicos e postagens, mas mudei para fazer apenas webhooks de postagens e usar o que está disponível neles para vincular threads a tópicos.

2 curtidas

Essa é uma boa mudança, tornará seu sistema muito mais confiável e, como você disse, você sempre pode recorrer a requisições de API para enriquecer os dados.

2 curtidas