{"record":{"id":"bd16c061ee760a5e","repo":"sipeed/picoclaw","slug":"channel-s-has-no-active-worker","errorCode":null,"errorMessage":"channel %s has no active worker","messagePattern":"channel (.+?) has no active worker","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/channels/manager.go","lineNumber":2054,"sourceCode":"\n// SendMessage sends an outbound message synchronously through the channel\n// worker's rate limiter and retry logic. It blocks until the message is\n// delivered (or all retries are exhausted), which preserves ordering when\n// a subsequent operation depends on the message having been sent.\nfunc (m *Manager) SendMessage(ctx context.Context, msg bus.OutboundMessage) error {\n\tmsg = bus.NormalizeOutboundMessage(msg)\n\tchannelName := outboundMessageChannel(msg)\n\n\tm.mu.RLock()\n\t_, exists := m.channels[channelName]\n\tw, wExists := m.workers[channelName]\n\tm.mu.RUnlock()\n\n\tif !exists {\n\t\treturn fmt.Errorf(\"channel %s not found\", channelName)\n\t}\n\tif !wExists || w == nil {\n\t\treturn fmt.Errorf(\"channel %s has no active worker\", channelName)\n\t}\n\n\tmaxLen := 0\n\tif mlp, ok := w.ch.(MessageLengthProvider); ok {\n\t\tmaxLen = mlp.MaxMessageLength()\n\t}\n\tif chunks := splitOutboundMessageContent(msg, maxLen); len(chunks) > 1 {\n\t\tfor _, chunk := range chunks {\n\t\t\tchunkMsg := msg\n\t\t\tchunkMsg.Content = chunk\n\t\t\tm.sendWithRetry(ctx, channelName, w, chunkMsg)\n\t\t}\n\t} else {\n\t\tif len(chunks) == 1 {\n\t\t\tmsg.Content = chunks[0]\n\t\t}\n\t\tm.sendWithRetry(ctx, channelName, w, msg)\n\t}","sourceCodeStart":2036,"sourceCodeEnd":2072,"githubUrl":"https://github.com/sipeed/picoclaw/blob/49183d7e8daed0dba89ddbb6fcb60089401d9680/pkg/channels/manager.go#L2036-L2072","documentation":"Error \"channel %s has no active worker\" thrown in sipeed/picoclaw.","triggerScenarios":"Thrown at pkg/channels/manager.go:2054 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"49183d7e8daed0dba89ddbb6fcb60089401d9680","analyzedAt":"2026-08-15T21:55:41.315Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}