{"record":{"id":"db90be196612204b","repo":"t8y2/dbx","slug":"warm-up-s-s-w","errorCode":null,"errorMessage":"warm up %s/%s: %w","messagePattern":"warm up (.+?)/(.+?): %w","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"agents/drivers/rabbitmq/bench/agent_compare.go","lineNumber":239,"sourceCode":"\tround int,\n\tmethod string,\n\tparams map[string]any,\n\twarmupRequests int,\n\toperations int,\n) benchmarkResult {\n\tprocess, _, err := startAgent(agent.Command)\n\tif err != nil {\n\t\tpanic(fmt.Errorf(\"start %s: %w\", agent.Name, err))\n\t}\n\tdefer func() {\n\t\tif err := process.close(); err != nil {\n\t\t\tpanic(fmt.Errorf(\"close %s: %w\", agent.Name, err))\n\t\t}\n\t}()\n\treadyRSS := readRSSKB(process.command.Process.Pid)\n\tfor request := 0; request < warmupRequests; request++ {\n\t\tif _, err := process.call(method, params); err != nil {\n\t\t\tpanic(fmt.Errorf(\"warm up %s/%s: %w\", agent.Name, workload, err))\n\t\t}\n\t}\n\n\tlatencies := make([]float64, 0, operations)\n\terrorsCount := 0\n\tstart := time.Now()\n\tfor operation := 0; operation < operations; operation++ {\n\t\trequestStart := time.Now()\n\t\tif _, err := process.call(method, params); err != nil {\n\t\t\terrorsCount++\n\t\t}\n\t\tlatencies = append(latencies, milliseconds(time.Since(requestStart)))\n\t}\n\tduration := time.Since(start)\n\tresult := summarize(agent.Name, workload, round, latencies, duration, errorsCount)\n\tresult.ReadyRSSKB = readyRSS\n\tresult.PostLoadRSSKB = readRSSKB(process.command.Process.Pid)\n\tresult.ArtifactBytes = fileSize(agent.ArtifactPath)","sourceCodeStart":221,"sourceCodeEnd":257,"githubUrl":"https://github.com/t8y2/dbx/blob/c0390bff16418b651f4728520d99adf8ce48829a/agents/drivers/rabbitmq/bench/agent_compare.go#L221-L257","documentation":"During the warmup phase, each warmup RPC goes through process.call; any failure panics with \"warm up %s/%s: %w\" combining agent name, workload name, and the underlying error. Warmup failing means the agent accepted startup but cannot serve the workload's method.","triggerScenarios":"process.call(method, params) returns an error during warmupRequests iterations: write to agent stdin fails, no response line arrives, JSON unmarshal fails, response ID mismatch, or the agent returned a JSON-RPC error object.","commonSituations":"Workload calls a method name the agent does not implement; agent crashed after startup (e.g. broker unreachable); request params don't match the agent's schema; slow agent that never responds.","solutions":["Verify the workload's method name is implemented by the agent's dispatch switch (e.g. connect, mq_list_nodes)","Check the underlying %w error to distinguish I/O, parse, or agent-reported errors","Confirm the broker the agent connects to is running and reachable","Ensure params match the schema the agent expects for the method"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"for _, m := range []string{method} {\n    if !supportedMethods[m] {\n        return fmt.Errorf(\"workload uses unsupported method %q\", m)\n    }\n}","typeGuard":null,"tryCatchPattern":"if _, err := process.call(method, params); err != nil {\n    var agentErr interface{ RPCError() string }\n    if errors.As(err, &agentErr) {\n        log.Fatalf(\"agent rejected warmup call: %v\", err)\n    }\n    panic(fmt.Errorf(\"warm up %s/%s: %w\", agent.Name, workload, err))\n}","preventionTips":["Verify workload method names against the agent's dispatch table before benchmarking","Ensure the broker is reachable before starting the benchmark run","Validate params against the agent schema in CI"],"tags":["benchmark","rpc","warmup"],"backgroundTag":"rpc-call-failed","analyzedSha":"c0390bff16418b651f4728520d99adf8ce48829a","analyzedAt":"2026-09-05T23:05:10.900Z","contentChangedAt":"2026-09-05T23:05:10.900Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}