fix: 捕获钉钉 Stream SDK 内部 panic,避免崩溃
钉钉 SDK v0.9.1 在连接断开时有 send on closed channel panic, 加 defer recover 捕获后自动重连。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -181,9 +181,16 @@ func (p *Platform) Start(handler core.MessageHandler) error {
|
|||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func() {
|
||||||
|
defer func() {
|
||||||
|
if r := recover(); r != nil {
|
||||||
|
slog.Error("dingtalk: stream panic, reconnecting", "recover", r)
|
||||||
|
}
|
||||||
|
}()
|
||||||
if err := p.streamClient.Start(ctx); err != nil {
|
if err := p.streamClient.Start(ctx); err != nil {
|
||||||
slog.Warn("dingtalk: stream disconnected, reconnecting", "error", err)
|
slog.Warn("dingtalk: stream disconnected, reconnecting", "error", err)
|
||||||
}
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
// Brief pause before reconnecting to avoid tight loop on persistent failures.
|
// Brief pause before reconnecting to avoid tight loop on persistent failures.
|
||||||
select {
|
select {
|
||||||
|
|||||||
Reference in New Issue
Block a user