{"record":{"id":"ea18afc5fb816adb","repo":"t8y2/dbx","slug":"unknown-method-s-ea18af","errorCode":null,"errorMessage":"Unknown method: %s","messagePattern":"Unknown method: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"agents/drivers/rabbitmq/main.go","lineNumber":262,"sourceCode":"\t\tresult, err := s.deletePolicy(params)\n\t\treturn result, false, err\n\tcase \"mq_peek_messages\":\n\t\tresult, err := s.peekMessages(params)\n\t\treturn result, false, err\n\tcase \"mq_send_message\":\n\t\tresult, err := s.sendMessage(params)\n\t\treturn result, false, err\n\tcase \"mq_describe_cluster\":\n\t\tresult, err := s.describeCluster(params)\n\t\treturn result, false, err\n\tcase \"mq_overview\":\n\t\tresult, err := s.getOverview(params)\n\t\treturn result, false, err\n\tcase \"mq_list_nodes\":\n\t\tresult, err := s.listNodes(params)\n\t\treturn result, false, err\n\tdefault:\n\t\treturn nil, false, fmt.Errorf(\"Unknown method: %s\", method)\n\t}\n}\n\nfunc (s *server) connect(params jsonObject) (any, error) {\n\tconfig := connectionObject(params)\n\tnextConnection, err := openConnection(config)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tnextChannel, err := nextConnection.Channel()\n\tif err != nil {\n\t\tcloseConnection(nextConnection)\n\t\treturn nil, err\n\t}\n\ts.closeClients()\n\ts.connection = nextConnection\n\ts.channel = nextChannel\n\ts.cachedConnection = deepCopyObject(config)","sourceCodeStart":244,"sourceCodeEnd":280,"githubUrl":"https://github.com/t8y2/dbx/blob/c0390bff16418b651f4728520d99adf8ce48829a/agents/drivers/rabbitmq/main.go#L244-L280","documentation":"The agent's dispatch switch maps supported JSON-RPC method names to server handlers; any unrecognized method returns \"Unknown method: %s\". This is the standard JSON-RPC 'method not found' condition for this agent.","triggerScenarios":"Calling the agent over the protocol with a method string not in the dispatch switch (only connect/getOverview/mq_list_nodes and siblings are supported), or misspelling a method name.","commonSituations":"Client built against a newer/older agent version where methods were renamed; typo like \"list_nodes\" vs \"mq_list_nodes\"; caller forgetting to call connect first (though connect is itself a method); generic benchmark workload passing an unsupported operation.","solutions":["Use a method name present in the dispatch switch (check main.go around line 262)","Rebuild/upgrade the agent if the client expects methods from a newer version","Add a case to dispatch if you need to support a new method","Fix the typo by comparing against the exact handler names"],"exampleFix":"// before\nresult, err := agent.Call(ctx, \"list_nodes\", params)\n// after\nresult, err := agent.Call(ctx, \"mq_list_nodes\", params)","handlingStrategy":"validation","validationCode":"var supportedMethods = map[string]bool{\n    \"connect\": true, \"get_overview\": true, \"mq_list_nodes\": true,\n}\nif !supportedMethods[method] {\n    return fmt.Errorf(\"method %q not supported by this agent\", method)\n}","typeGuard":null,"tryCatchPattern":"result, err := client.Call(ctx, method, params)\nvar unknown interface{ UnknownMethod() bool }\nif err != nil {\n    if strings.Contains(err.Error(), \"Unknown method:\") {\n        log.Fatalf(\"client/agent version mismatch on method %q\", method)\n    }\n    return err\n}\n_ = result","preventionTips":["Generate the client's method list from the agent's dispatch table","Pin client and agent versions together in CI","Handle 'Unknown method' gracefully with a capability probe at connect time"],"tags":["json-rpc","method-not-found","api"],"backgroundTag":"method-not-found","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"}