Skip to content

WTEL-9590: Restart conversation on closed channel error#135

Merged
vlad-marusyk-wt merged 2 commits into
mainfrom
fix/WTEL-9590/stale-channel-cache-recovery
Jun 25, 2026
Merged

WTEL-9590: Restart conversation on closed channel error#135
vlad-marusyk-wt merged 2 commits into
mainfrom
fix/WTEL-9590/stale-channel-cache-recovery

Conversation

@vlad-marusyk-wt

Copy link
Copy Markdown
Contributor

Проблема

Якщо chat.conversation і chat.channel закривають напряму, без API CloseConversation, in-memory кеш продовжує тримати посилання на *Channel зі старими ChannelID і SessionID.
Наступний webhook від того самого зовнішнього користувача потрапляє у кеш-хіт, Channel.Recv викликає SendMessage зі stale-ID, chat-server повертає chat.send.channel.from.closed, bot відповідає HTTP 500, Telegram нескінченно ретраїть той самий update.

Вирішення

У Channel.Recv ловимо саме цю помилку, виселяємо stale-запис із мап Gateway, скидаємо ChannelID, SessionID, Closed та один раз викликаємо Start, який створює свіжі chat.conversation і chat.channel. Поточне повідомлення користувача доставляється у новий діалог, webhook повертає 200, retry-цикл переривається. Це автоматично покриває усі inbound-шляхи які йдуть через Gateway.Read і Channel.Recv.

Comment thread bot/channel.go Outdated
Comment thread bot/channel.go Outdated
Comment thread bot/channel.go Outdated
@vlad-marusyk-wt vlad-marusyk-wt merged commit c2e36d8 into main Jun 25, 2026
11 of 13 checks passed
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.

2 participants