{"record":{"id":"e3ad5501b0257f89","repo":"t8y2/dbx","slug":"s-must-be-between-1-and-d-bytes","errorCode":null,"errorMessage":"%s must be between 1 and %d bytes","messagePattern":"(.+?) must be between 1 and (.+?) bytes","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"agents/drivers/zookeeper/connection.go","lineNumber":476,"sourceCode":"\t}\n\treturn defaultAuthScheme\n}\n\nfunc resolveMaxBufferSize(config connectionConfig) (int, error) {\n\tconfigured := config.MaxBufferSize\n\tif configured == nil {\n\t\tvalue := strings.TrimSpace(connectionURLParams(config).Get(maxBufferSizeParam))\n\t\tif value == \"\" {\n\t\t\treturn defaultMaxBufferSize, nil\n\t\t}\n\t\tparsed, err := strconv.Atoi(value)\n\t\tif err != nil {\n\t\t\treturn 0, fmt.Errorf(\"%s must be an integer number of bytes\", maxBufferSizeParam)\n\t\t}\n\t\tconfigured = &parsed\n\t}\n\tif *configured <= 0 || *configured > maximumMaxBufferSize {\n\t\treturn 0, fmt.Errorf(\"%s must be between 1 and %d bytes\", maxBufferSizeParam, maximumMaxBufferSize)\n\t}\n\treturn *configured, nil\n}\n\nfunc connectionURLParams(config connectionConfig) url.Values {\n\tparams := strings.TrimPrefix(strings.TrimSpace(config.URLParams), \"?\")\n\tparams = strings.ReplaceAll(params, \";\", \"&\")\n\tparsed, _ := url.ParseQuery(params)\n\treturn parsed\n}\n\nfunc hasTLSOptions(config connectionConfig) bool {\n\treturn config.SSL || firstNonBlank(\n\t\tconfig.CACertPath,\n\t\tconfig.ClientCertPath,\n\t\tconfig.ClientKeyPath,\n\t\tconfig.CertPath,\n\t\tconfig.KeyPath,","sourceCodeStart":458,"sourceCodeEnd":494,"githubUrl":"https://github.com/t8y2/dbx/blob/c0390bff16418b651f4728520d99adf8ce48829a/agents/drivers/zookeeper/connection.go#L458-L494","documentation":"After parsing, resolveMaxBufferSize range-checks the value: it must be at least 1 and at most maximumMaxBufferSize bytes. Zero, negative, or oversized values are rejected with this error naming the parameter and the allowed upper bound.","triggerScenarios":"Passing max_buffer_size=0, a negative number, or an integer above the driver's maximum allowed buffer size in the connection URL params during connect.","commonSituations":"Setting 0 thinking it means \"unlimited/default\", copying an upper bound from another driver that permits larger buffers, or computing the byte value incorrectly and overflowing the cap.","solutions":["Set max_buffer_size to a positive integer within 1..maximumMaxBufferSize bytes (see error message for the cap).","Remove the parameter entirely to use the driver's default buffer size.","Clamp or validate the configured value in code before building the DSN.","Check for overflow/typo when computing the byte count programmatically."],"exampleFix":"// before\ndsn := \"zookeeper://zk1:2181?max_buffer_size=0\" // meant \"default\"\n// after\ndsn := \"zookeeper://zk1:2181\" // omit param to use defaultMaxBufferSize","handlingStrategy":"validation","validationCode":"func clampMaxBufferSize(v int) (int, error) {\n\tif v <= 0 || v > maximumMaxBufferSize {\n\t\treturn 0, fmt.Errorf(\"max_buffer_size=%d out of range 1..%d; unset it to use the default\", v, maximumMaxBufferSize)\n\t}\n\treturn v, nil\n}","typeGuard":null,"tryCatchPattern":"n, err := strconv.Atoi(cfg.MaxBufferSize)\nif err == nil {\n\tif _, verr := clampMaxBufferSize(n); verr != nil {\n\t\treturn configError(verr) // fail before connect; retrying won't help\n\t}\n}","preventionTips":["Treat 0/negative as \"unset\" in your own config layer instead of passing them through.","Compute byte counts carefully to avoid overflow past the maximum.","Validate ranges at config-load time."],"tags":["zookeeper","configuration","validation"],"backgroundTag":"invalid-connection-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"}