{"record":{"id":"0e14f7be7d5583b3","repo":"t8y2/dbx","slug":"unknown-method-s-0e14f7","errorCode":null,"errorMessage":"unknown method: %s","messagePattern":"unknown method: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"agents/drivers/iotdb/main.go","lineNumber":394,"sourceCode":"\t\tresult, err := s.executeQueryPage(queryOptionsFromParams(params), intParam(params, \"pageSize\"))\n\t\treturn result, false, err\n\tcase \"fetch_query_page\", \"fetch_table_read_page\":\n\t\tresult, err := s.fetchQueryPage(stringParam(params, \"sessionId\"), intParam(params, \"pageSize\"))\n\t\treturn result, false, err\n\tcase \"close_query_session\", \"close_table_read_session\":\n\t\treturn s.closeQuerySession(stringParam(params, \"sessionId\")), false, nil\n\tcase \"execute_transaction\":\n\t\tresult, err := s.executeStatements(params, true)\n\t\treturn result, false, err\n\tcase \"execute_batch\":\n\t\tresult, err := s.executeStatements(params, false)\n\t\treturn result, false, err\n\tcase \"disconnect\":\n\t\treturn map[string]bool{\"ok\": true}, false, s.disconnect()\n\tcase \"shutdown\":\n\t\treturn map[string]bool{\"ok\": true}, true, s.disconnect()\n\tdefault:\n\t\treturn nil, false, fmt.Errorf(\"unknown method: %s\", method)\n\t}\n}\n\nfunc handshakeResult(multiSession bool) map[string]any {\n\tcapabilities := []string{\n\t\t\"connect\", \"test_connection\", \"metadata\", \"query\", \"paged_query\", \"transaction\", \"ddl\", \"structured_error_v1\",\n\t}\n\tif multiSession {\n\t\tcapabilities = append(capabilities, \"multi_session\")\n\t}\n\treturn map[string]any{\n\t\t\"protocolVersion\":      protocolVersion,\n\t\t\"agentProtocolVersion\": protocolVersion,\n\t\t\"capabilities\":         capabilities,\n\t}\n}\n\nfunc testConnection(params connectParams) (map[string]any, error) {","sourceCodeStart":376,"sourceCodeEnd":412,"githubUrl":"https://github.com/t8y2/dbx/blob/c0390bff16418b651f4728520d99adf8ce48829a/agents/drivers/iotdb/main.go#L376-L412","documentation":"dispatch routes the agent protocol's method names to concrete handlers (connect, test_connection, metadata, query, paged_query, transaction, ddl, disconnect, shutdown). Any unrecognized method falls into the default branch and returns 'unknown method: %s'.","triggerScenarios":"Sending a request with a misspelled method (e.g. 'execute_query' instead of 'query'), wrong casing, or a method from a newer/older protocol version not implemented by this build.","commonSituations":"Client and agent protocol version mismatch after an upgrade; hand-written clients inventing method names; calling 'transaction' or 'ddl' on a build whose handshake did not advertise those capabilities.","solutions":["Check the method name against the capabilities listed in handshakeResult.","Align the client and agent to the same protocol version.","Negotiate capabilities via the handshake and only call advertised methods.","Log the %s value from the error to see exactly what string was sent."],"exampleFix":"// before\nmethod = \"executeQuery\"\n// after\nmethod = \"query\"","handlingStrategy":"type-guard","validationCode":"var supportedMethods = map[string]bool{\n    \"connect\": true, \"test_connection\": true, \"metadata\": true,\n    \"query\": true, \"paged_query\": true, \"transaction\": true,\n    \"ddl\": true, \"disconnect\": true, \"shutdown\": true,\n}\nfunc methodSupported(m string) bool { return supportedMethods[m] }","typeGuard":"func isUnknownMethodErr(err error) bool {\n    return err != nil && strings.HasPrefix(err.Error(), \"unknown method: \")\n}","tryCatchPattern":"result, _, err := s.dispatch(method, args)\nif isUnknownMethodErr(err) {\n    return fmt.Errorf(\"agent does not support %q; check negotiated capabilities\", method)\n}","preventionTips":["Only call methods advertised in handshakeResult capabilities.","Pin client and agent to the same protocol version.","Keep method names in a shared constant set between client and agent."],"tags":["go","rpc","protocol","dispatch"],"backgroundTag":"unknown-method","analyzedSha":"c0390bff16418b651f4728520d99adf8ce48829a","analyzedAt":"2026-09-05T23:05:10.900Z","contentChangedAt":"2026-09-05T23:05:10.900Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}