fix: serialize shared XP member writes #35

Merged
isyuricunha merged 3 commits from fix/shared-xp-write-serialization into main 2026-08-27 18:44:38 +00:00
isyuricunha commented 2026-08-27 18:40:58 +00:00 (Migrated from github.com)

Problema

A correção anterior serializou apenas o ciclo interno do Voice XP. Ainda era possível o flush de voz e o XP de mensagem do mesmo usuário alterarem guildXpMember ao mesmo tempo, causando conflitos Serializable e linhas prisma:error em voiceXpSession.update().

Correção

  • adiciona uma fila compartilhada por guild:user para escritas de XP no bot;
  • envolve xpService.handle_message nessa fila;
  • faz o checkpoint de Voice XP usar a mesma fila antes da transação;
  • mantém o retry serializável existente para conflitos externos/múltiplas instâncias;
  • preserva a fila específica de sessão de voz para begin/finish/flush.

Resultado esperado

Mensagem e Voice XP do mesmo usuário deixam de executar transações concorrentes no mesmo guildXpMember, eliminando a fonte normal dos write conflicts observados no log.

## Problema A correção anterior serializou apenas o ciclo interno do Voice XP. Ainda era possível o flush de voz e o XP de mensagem do mesmo usuário alterarem `guildXpMember` ao mesmo tempo, causando conflitos `Serializable` e linhas `prisma:error` em `voiceXpSession.update()`. ## Correção - adiciona uma fila compartilhada por `guild:user` para escritas de XP no bot; - envolve `xpService.handle_message` nessa fila; - faz o checkpoint de Voice XP usar a mesma fila antes da transação; - mantém o retry serializável existente para conflitos externos/múltiplas instâncias; - preserva a fila específica de sessão de voz para begin/finish/flush. ## Resultado esperado Mensagem e Voice XP do mesmo usuário deixam de executar transações concorrentes no mesmo `guildXpMember`, eliminando a fonte normal dos write conflicts observados no log.
Sign in to join this conversation.
No description provided.