{"record":{"id":"c53b364a32606610","repo":"apache/beam","slug":"descriptor-v-not-found","errorCode":null,"errorMessage":"descriptor %v not found","messagePattern":"descriptor (.+?) not found","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"sdks/go/pkg/beam/runners/prism/internal/worker/worker.go","lineNumber":280,"sourceCode":"\t\treturn slog.LevelDebug // -4\n\tcase fnpb.LogEntry_Severity_INFO:\n\t\treturn slog.LevelInfo // 0\n\tcase fnpb.LogEntry_Severity_NOTICE:\n\t\treturn slog.Level(2)\n\tcase fnpb.LogEntry_Severity_WARN:\n\t\treturn slog.LevelWarn // 4\n\tcase fnpb.LogEntry_Severity_ERROR:\n\t\treturn slog.LevelError // 8\n\tcase fnpb.LogEntry_Severity_CRITICAL:\n\t\treturn slog.Level(10)\n\t}\n\treturn slog.LevelInfo\n}\n\nfunc (wk *W) GetProcessBundleDescriptor(ctx context.Context, req *fnpb.GetProcessBundleDescriptorRequest) (*fnpb.ProcessBundleDescriptor, error) {\n\tdesc, ok := wk.Descriptors[req.GetProcessBundleDescriptorId()]\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"descriptor %v not found\", req.GetProcessBundleDescriptorId())\n\t}\n\treturn desc, nil\n}\n\n// Connected indicates whether the worker has connected to the control RPC.\nfunc (wk *W) Connected() bool {\n\treturn wk.connected.Load()\n}\n\n// Stopped indicates that the worker has stopped.\nfunc (wk *W) Stopped() bool {\n\treturn wk.stopped.Load()\n}\n\n// Control relays instructions to SDKs and back again, coordinated via unique instructionIDs.\n//\n// Requests come from the runner, and are sent to the client in the SDK.\nfunc (wk *W) Control(ctrl fnpb.BeamFnControl_ControlServer) error {","sourceCodeStart":262,"sourceCodeEnd":298,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/go/pkg/beam/runners/prism/internal/worker/worker.go#L262-L298","documentation":"Error returned by the Prism worker's GetProcessBundleDescriptor when the requested ProcessBundleDescriptorId is not present in the worker's Descriptors map. It means the SDK harness asked for a descriptor the runner never registered (or already evicted) — usually a harness/runner version or ordering mismatch in the FnApi handshake.","triggerScenarios":"Thrown at sdks/go/pkg/beam/runners/prism/internal/worker/worker.go:280 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Ensure the SDK harness and Prism runner versions match","Ensure the bundle referencing the descriptor was submitted before this request","Check that descriptor registration wasn't skipped due to an earlier error"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-20T03:17:13.778Z"}