Tencent/WeKnora · error
channel is disabled
Error message
channel is disabled
What it means
Sentinel ErrChannelDisabled returned by the IM service when a message/callback arrives for a channel whose fresh DB record has Enabled=false — the service stops the channel and refuses further processing. Feature-state guard; the handler responds 503 to the callback.
Source
Thrown at internal/im/service.go:258
const (
RedisKeyLeader = "im:ws:leader:" // + channelID — WebSocket leader election
RedisKeyDedup = "im:dedup:" // + messageID — message deduplication
RedisKeyStop = "im:stop:" // + userKey — cross-instance /stop marker (pre-execution)
RedisKeyInflight = "im:inflight:" // + userKey — maps userKey → sessionID:messageID for cross-instance /stop
RedisKeyQueueUser = "im:queue:user:" // + userKey — global per-user queue counter
RedisKeyRateLimit = "im:ratelimit:" // + key — sliding-window rate limiting
RedisKeyGlobalGate = "im:global:active" // global concurrent worker counter
// RedisChannelConfig broadcasts durable im_channels mutations so every
// application replica invalidates its local adapter/config snapshot.
RedisChannelConfig = "im:channel:config"
defaultRateLimitWindow = 60 * time.Second
defaultRateLimitMaxRequests = 10
)
// ErrChannelDisabled reports that a channel row exists but is disabled, so
// callers can tell it apart from a missing channel or a transient failure.
var ErrChannelDisabled = errors.New("channel is disabled")
// channelState holds runtime state for a running IM channel.
type channelState struct {
Channel *IMChannel
Adapter Adapter
Cancel context.CancelFunc // for stopping websocket goroutines
leaderCancel context.CancelFunc // stops the leader renewal goroutine (nil if not leader)
}
type leaderRetryState struct {
cancel context.CancelFunc
}
type channelConfigEvent struct {
ChannelID string `json:"channel_id"`
SourceInstance string `json:"source_instance"`
}
View on GitHub (pinned to 988cbb0330)
Solutions
- Re-enable the IM channel in its configuration before sending messages
- Verify the channel ID — it may have been disabled administratively; no retry will succeed until re-enabled
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at internal/im/service.go:258 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Tencent/WeKnora@988cbb0330 (2026-09-02).
Data as JSON: /api/errors/0ceec63e0fb36084.
Report an issue: GitHub.