weaviate/weaviate · error
parse sentry config from env: %w
Error message
parse sentry config from env: %w
What it means
At the end of FromEnv the sentry config is reset (sentry.Config = nil) and rebuilt from the environment via sentry.InitSentryConfig(); any failure is wrapped as "parse sentry config from env: %w". The inner error names which SENTRY_* variable (DSN, traces sample rate, environment, etc.) was malformed. Startup aborts so error reporting is never left half-configured.
Source
Thrown at usecases/config/environment.go:1397
config.Restrictions.AllowedVectorIndexTypes = allowVectorDV
var allowCompression []string
if v := os.Getenv("ALLOWED_COMPRESSION_TYPES"); v != "" {
allowCompression = strings.Split(v, ",")
}
allowCompressionDV, err := configRuntime.NewDynamicValueWithValidation(allowCompression, NewRestrictionCompressionTypeListValidator())
if err != nil {
return fmt.Errorf("parse ALLOWED_COMPRESSION_TYPES: %w", err)
}
config.Restrictions.AllowedCompressionTypes = allowCompressionDV
parseString("RESTRICTIONS_ERROR_MESSAGE", func(val string) {
config.Restrictions.ErrorMessage = configRuntime.NewDynamicValue(val)
}, DefaultRestrictionsErrorMessage)
// explicitly reset sentry config
sentry.Config = nil
config.Sentry, err = sentry.InitSentryConfig()
if err != nil {
return fmt.Errorf("parse sentry config from env: %w", err)
}
config.MetadataServer.Enabled = false
if entcfg.Enabled(os.Getenv("EXPERIMENTAL_METADATA_SERVER_ENABLED")) {
config.MetadataServer.Enabled = true
}
config.MetadataServer.GrpcListenAddress = DefaultMetadataServerGrpcListenAddress
if v := os.Getenv("EXPERIMENTAL_METADATA_SERVER_GRPC_LISTEN_ADDRESS"); v != "" {
config.MetadataServer.GrpcListenAddress = v
}
if err := parsePositiveInt(
"EXPERIMENTAL_METADATA_SERVER_DATA_EVENTS_CHANNEL_CAPACITY",
func(val int) { config.MetadataServer.DataEventsChannelCapacity = val },
DefaultMetadataServerDataEventsChannelCapacity,
); err != nil {
return err
}
View on GitHub (pinned to 75aa4b6d11)
Solutions
- Read the inner error after "parse sentry config from env:" to identify the offending SENTRY_* variable
- Fix that variable — SENTRY_DSN must be a valid URL like https://key@host/project and SENTRY_TRACES_SAMPLE_RATE a float in [0,1]
- Remove all SENTRY_* variables to disable Sentry entirely (config is explicitly reset to nil here anyway)
Example fix
// before SENTRY_TRACES_SAMPLE_RATE=50% // after SENTRY_TRACES_SAMPLE_RATE=0.5
Defensive patterns
Strategy: validation
Validate before calling
if dsn := os.Getenv("SENTRY_DSN"); dsn != "" {
if u, err := url.Parse(dsn); err != nil || u.Scheme == "" || u.Host == "" {
return fmt.Errorf("SENTRY_DSN is not a valid URL: %q", dsn)
}
}
if r := os.Getenv("SENTRY_TRACES_SAMPLE_RATE"); r != "" {
f, err := strconv.ParseFloat(r, 64)
if err != nil || f < 0 || f > 1 {
return fmt.Errorf("SENTRY_TRACES_SAMPLE_RATE must be a float in [0,1], got %q", r)
}
} Try / catch
if err := LoadConfig(...); err != nil {
if strings.Contains(err.Error(), "parse sentry config from env:") {
log.Fatalf("sentry env config invalid (check SENTRY_DSN / sample rates): %v", err)
}
return err
} Prevention
- Validate SENTRY_DSN is a full URL with scheme, key, host and project id
- Sample rates are floats in [0,1], not percentages
- Strip quotes/whitespace from DSN values in env files
- Remove all SENTRY_* vars to disable Sentry cleanly
When it happens
Trigger: SENTRY_* env vars (e.g. SENTRY_DSN invalid URL, SENTRY_TRACES_SAMPLE_RATE="0.5x" or out of [0,1], SENTRY_ENVIRONMENT issues) fail InitSentryConfig while LoadConfig runs.
Common situations: Pasting a DSN with surrounding quotes/whitespace; setting a sample rate like "50" instead of "0.5"; leftover SENTRY_* vars from a copied compose file pointing at a decommissioned project.
Related errors
- parse GO_MUTEX_PROFILE_FRACTION as int: %w
- parse MAXIMUM_CONCURRENT_GET_REQUESTS as int: %w
- failed to determine
- invalid tag value for key:
- nearText dependecy not present
AI-assisted analysis of weaviate/weaviate@75aa4b6d11 (2026-09-04).
Data as JSON: /api/errors/54ec203e14bc4513.
Report an issue: GitHub.