{"record":{"id":"d55cb779ddf9c42a","repo":"t8y2/dbx","slug":"invalid-usekeytab-option-w","errorCode":null,"errorMessage":"invalid usekeytab option: %w","messagePattern":"invalid usekeytab option: %w","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"agents/drivers/cassandra-go/config.go","lineNumber":327,"sourceCode":"\t\t\tconfig.kerberos.password = value\n\t\tcase \"kerberosservice\", \"kerberosservicename\", \"saslprotocol\":\n\t\t\tconfig.kerberos.serviceName = value\n\t\tcase \"kerberosservername\", \"saslservername\":\n\t\t\tconfig.kerberos.serverName = value\n\t\tcase \"kerberosauthorizationid\", \"authorizationid\":\n\t\t\tconfig.kerberos.authorizationID = value\n\t\tcase \"kerberosqop\", \"saslqop\":\n\t\t\tconfig.kerberos.qop = value\n\t\tcase \"kerberosdisablepafxfast\", \"disablepafxfast\":\n\t\t\tdisabled, err := strconv.ParseBool(value)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"invalid disablepafxfast option: %w\", err)\n\t\t\t}\n\t\t\tconfig.kerberos.disablePAFXFAST = disabled\n\t\tcase \"kerberosusekeytab\", \"usekeytab\":\n\t\t\tenabled, err := strconv.ParseBool(value)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"invalid usekeytab option: %w\", err)\n\t\t\t}\n\t\t\tconfig.kerberos.useKeytab = enabled\n\t\t\tconfig.kerberos.useKeytabSet = true\n\t\tcase \"kerberosuseticketcache\", \"useticketcache\":\n\t\t\tenabled, err := strconv.ParseBool(value)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"invalid useticketcache option: %w\", err)\n\t\t\t}\n\t\t\tconfig.kerberos.useTicketCache = enabled\n\t\t\tconfig.kerberos.useTicketCacheSet = true\n\t\tcase \"compliancemode\":\n\t\t\t// JDBC compliance modes only alter java.sql behavior. The native DBX\n\t\t\t// JSON-RPC contract already defines statement and transaction behavior.\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"unsupported Cassandra URL parameter: %s\", rawKey)\n\t\t}\n\t}\n\treturn nil","sourceCodeStart":309,"sourceCodeEnd":345,"githubUrl":"https://github.com/t8y2/dbx/blob/c0390bff16418b651f4728520d99adf8ce48829a/agents/drivers/cassandra-go/config.go#L309-L345","documentation":"The 'usekeytab' (or 'kerberosusekeytab') URL parameter enables Kerberos keytab authentication and must be a boolean parseable by strconv.ParseBool; anything else returns this wrapped error. The parsed value is stored along with a useKeytabSet marker so defaults can be distinguished.","triggerScenarios":"DSN contains usekeytab=<value> where value is not a strconv.ParseBool literal, e.g. usekeytab=enabled or usekeytab=1 (with a trailing space).","commonSituations":"Service account setups with keytab files following Java-style 'enabled' flags; config generators emitting YAML-ish booleans (yes/no); whitespace from copy-paste.","solutions":["Set usekeytab=true or usekeytab=false (or 1/0, t/f variants)","Remove the parameter to use the default keytab behavior","Inspect the wrapped strconv error to identify the offending token"],"exampleFix":"// before\ncassandra://127.0.0.1/myks?usekeytab=enabled\n// after\ncassandra://127.0.0.1/myks?usekeytab=true","handlingStrategy":"validation","validationCode":"if v := q.Get(\"usekeytab\"); v != \"\" {\n\tif _, err := strconv.ParseBool(v); err != nil {\n\t\treturn errors.New(\"usekeytab must be a boolean\")\n\t}\n}","typeGuard":null,"tryCatchPattern":"if err := parseCassandraConfig(dsn); err != nil {\n\tif strings.Contains(err.Error(), \"usekeytab option\") {\n\t\treturn parseCassandraConfig(coerceBoolParam(dsn, \"usekeytab\"))\n\t}\n\treturn err\n}","preventionTips":["Emit keytab flags as true/false from config generators","Trim values before interpolation","Add startup-time DSN validation"],"tags":["config","url-params","kerberos","boolean-parsing","cassandra"],"backgroundTag":"invalid-url-parameter","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"}