{"record":{"id":"2cd43ace8e7cf5eb","repo":"weaviate/weaviate","slug":"invalid-usage-shard-concurrency-w","errorCode":null,"errorMessage":"invalid USAGE_SHARD_CONCURRENCY: %w","messagePattern":"invalid USAGE_SHARD_CONCURRENCY: %w","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"usecases/modulecomponents/usage/base_storage.go","lineNumber":180,"sourceCode":"\t} else if config.Usage.ScrapeInterval != nil {\n\t\tscrapeInterval = config.Usage.ScrapeInterval.Get()\n\t}\n\tconfig.Usage.ScrapeInterval = runtime.NewDynamicValue(scrapeInterval)\n\n\tpolicyVersion := build.Version\n\tif v := os.Getenv(\"USAGE_POLICY_VERSION\"); v != \"\" {\n\t\tpolicyVersion = v\n\t} else if config.Usage.PolicyVersion != nil {\n\t\tpolicyVersion = config.Usage.PolicyVersion.Get()\n\t}\n\tconfig.Usage.PolicyVersion = runtime.NewDynamicValue(policyVersion)\n\n\t// Parse shard concurrency environment variable\n\tshardConcurrency := DefaultShardConcurrency\n\tif v := os.Getenv(\"USAGE_SHARD_CONCURRENCY\"); v != \"\" {\n\t\tparsed, err := strconv.Atoi(v)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"invalid %s: %w\", \"USAGE_SHARD_CONCURRENCY\", err)\n\t\t}\n\t\tshardConcurrency = parsed\n\t} else if config.Usage.ShardConcurrency != nil {\n\t\tshardConcurrency = config.Usage.ShardConcurrency.Get()\n\t}\n\tconfig.Usage.ShardConcurrency = runtime.NewDynamicValue(shardConcurrency)\n\n\t// Parse verify permissions setting\n\tverifyPermissions := false\n\tif v := os.Getenv(\"USAGE_VERIFY_PERMISSIONS\"); v != \"\" {\n\t\tverifyPermissions = entcfg.Enabled(v)\n\t} else if config.Usage.VerifyPermissions != nil {\n\t\tverifyPermissions = config.Usage.VerifyPermissions.Get()\n\t}\n\tconfig.Usage.VerifyPermissions = runtime.NewDynamicValue(verifyPermissions)\n\n\treturn nil\n}","sourceCodeStart":162,"sourceCodeEnd":198,"githubUrl":"https://github.com/weaviate/weaviate/blob/75aa4b6d11f8818305aafd4440b4e32794f7ca04/usecases/modulecomponents/usage/base_storage.go#L162-L198","documentation":"ParseCommonUsageConfig reads USAGE_SHARD_CONCURRENCY and converts it with strconv.Atoi to control how many shards are scraped concurrently. A non-integer value fails the conversion and aborts configuration with this error.","triggerScenarios":"Setting USAGE_SHARD_CONCURRENCY to a non-numeric or non-integer string — e.g. \"10.0\" (float), \"ten\", \"10 shards\", or an empty-with-whitespace value.","commonSituations":"Operators assuming it accepts a float or a percentage; templating tools (Helm) rendering a float default like 1.0; accidental quotes/whitespace in .env files.","solutions":["Set USAGE_SHARD_CONCURRENCY to a plain integer, e.g. 4.","Fix Helm/templating defaults so they render integers (use int, not float64).","Remove the env var to fall back to DefaultShardConcurrency, or configure it via config.Usage.ShardConcurrency in YAML."],"exampleFix":"// before\nUSAGE_SHARD_CONCURRENCY=1.0\n// after\nUSAGE_SHARD_CONCURRENCY=1","handlingStrategy":"validation","validationCode":"// Validate the env value before deploying\nv := os.Getenv(\"USAGE_SHARD_CONCURRENCY\")\nif v != \"\" {\n    if n, err := strconv.Atoi(strings.TrimSpace(v)); err != nil || n < 1 {\n        panic(fmt.Sprintf(\"USAGE_SHARD_CONCURRENCY must be a positive integer, got %q\", v))\n    }\n}","typeGuard":"func isValidInt(s string) bool {\n    _, err := strconv.Atoi(strings.TrimSpace(s))\n    return err == nil\n}","tryCatchPattern":"if err := usage.ParseCommonUsageConfig(cfg); err != nil {\n    if strings.Contains(err.Error(), \"USAGE_SHARD_CONCURRENCY\") {\n        log.Fatalf(\"fix USAGE_SHARD_CONCURRENCY (plain integer, e.g. 4): %v\", err)\n    }\n    return err\n}","preventionTips":["Use plain integers only — no floats, units, or trailing text.","Check Helm values so numeric defaults render as int, not float64 (e.g. \"1\" not \"1.0\").","Trim whitespace in generated .env files."],"tags":["weaviate","usage","configuration","env-var","parsing"],"backgroundTag":"invalid-int-env-var","analyzedSha":"75aa4b6d11f8818305aafd4440b4e32794f7ca04","analyzedAt":"2026-09-04T14:58:20.392Z","contentChangedAt":"2026-09-04T14:58:20.392Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}