{"record":{"id":"173c97a78d3dfba3","repo":"t8y2/dbx","slug":"invalid-connecttimeout-w","errorCode":null,"errorMessage":"invalid connecttimeout: %w","messagePattern":"invalid connecttimeout: %w","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"agents/drivers/cassandra-go/config.go","lineNumber":178,"sourceCode":"\tfor rawKey, values := range params {\n\t\tif len(values) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tkey := normalizeOptionName(rawKey)\n\t\tvalue := strings.TrimSpace(values[len(values)-1])\n\t\tswitch key {\n\t\tcase \"localdatacenter\", \"datacenter\", \"dc\":\n\t\t\tconfig.localDatacenter = value\n\t\tcase \"requesttimeout\", \"timeout\":\n\t\t\tduration, err := parseDurationOption(value)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"invalid requesttimeout: %w\", err)\n\t\t\t}\n\t\t\tconfig.requestTimeout = duration\n\t\tcase \"connecttimeout\", \"logintimeout\":\n\t\t\tduration, err := parseDurationOption(value)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"invalid connecttimeout: %w\", err)\n\t\t\t}\n\t\t\tconfig.connectTimeout = duration\n\t\tcase \"protocolversion\", \"protoversion\":\n\t\t\tversion, err := strconv.Atoi(value)\n\t\t\tif err != nil || version < 3 || version > 5 {\n\t\t\t\treturn fmt.Errorf(\"protocolversion must be between 3 and 5\")\n\t\t\t}\n\t\t\tconfig.protocolVersion = version\n\t\tcase \"consistency\":\n\t\t\tif _, err := gocql.ParseConsistencyWrapper(value); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tconfig.consistency = value\n\t\tcase \"serialconsistency\":\n\t\t\tconsistency, err := gocql.ParseConsistencyWrapper(value)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}","sourceCodeStart":160,"sourceCodeEnd":196,"githubUrl":"https://github.com/t8y2/dbx/blob/c0390bff16418b651f4728520d99adf8ce48829a/agents/drivers/cassandra-go/config.go#L160-L196","documentation":"applyCassandraURLParams parses 'connecttimeout' or 'logintimeout' query parameters via parseDurationOption. If the value cannot be parsed as a valid duration, the error is wrapped as 'invalid connecttimeout'. This is a DSN validation failure; no connection attempt is made.","triggerScenarios":"A cassandra:// URL containing connecttimeout=<value> or logintimeout=<value> where value is not a parseable duration, e.g. connecttimeout=ten or logintimeauth= blank/empty string.","commonSituations":"Typos like connecttimeout=10sec (wrong unit), empty values from unset env vars ('connecttimeout='), or mixing up numeric-milliseconds style from other drivers' connection strings.","solutions":["Set connecttimeout/logintimeout to a valid duration string (e.g. 10s, 750ms).","Remove the parameter to accept the driver's default connect timeout.","Check the URL for a truncated or duplicated query parameter (e.g. stray '=' or '&' splitting the value)."],"exampleFix":"// before\ncassandra://host:9042?logintimeout=30\n// after\ncassandra://host:9042?logintimeout=30s","handlingStrategy":"validation","validationCode":"if v := os.Getenv(\"CASSANDRA_CONNECT_TIMEOUT\"); v != \"\" {\n\tif _, err := time.ParseDuration(v); err != nil {\n\t\treturn fmt.Errorf(\"CASSANDRA_CONNECT_TIMEOUT=%q is not a duration: %w\", v, err)\n\t}\n}","typeGuard":null,"tryCatchPattern":"cfg, err := parseCassandraConfig(dsn)\nif err != nil {\n\tif strings.Contains(err.Error(), \"invalid connecttimeout\") {\n\t\treturn fmt.Errorf(\"bad connecttimeout/logintimeout in DSN: %w\", err)\n\t}\n\treturn err\n}","preventionTips":["Use time.Duration string formatting (30s, 1m) whenever serializing timeouts","Validate all timeout env vars at process startup, fail fast","Keep one constant list of accepted units in your config tooling"],"tags":["cassandra","config","url-params","duration-parse"],"backgroundTag":"invalid-duration-format","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"}