Validation errors
Schema error: 'version' is a required property
Schema error: 'version' is a required property
version field.Solution: Add "version": "1.0" to the top level of your schema:Schema error: 'description' is a required property
Schema error: 'description' is a required property
description field.Solution: Add a description to every option:Property 'option.name' default value does not match schema
Property 'option.name' default value does not match schema
integer- whole numbers only (no decimals)number- any numeric value (integers or decimals)string- quoted stringsboolean-trueorfalse(unquoted)array- arrays with items matchingitems.type
Additional properties are not allowed ('extra' was unexpected)
Additional properties are not allowed ('extra' was unexpected)
type(required)default(required)description(required)items(required only for array types)
Value error: Additional properties are not allowed
Value error: Additional properties are not allowed
Unknown namespace 'X': No schema found
Unknown namespace 'X': No schema found
- Check that the namespace exists in your schemas directory
- Verify the namespace name matches exactly (case-sensitive)
- For automator repo: Ensure repos.json includes the service repo and SHA is up to date
Invalid {label} 'name': character 'X' not allowed
Invalid {label} 'name': character 'X' not allowed
- Lowercase alphanumeric,
-, or.only - Must start and end with alphanumeric
Namespace 'X' is invalid. Expected either 'Y' or 'Y-*'
Namespace 'X' is invalid. Expected either 'Y' or 'Y-*'
- Exact repo name:
seer - Repo name with suffix:
seer-autofix,seer-grouping
Duplicate key 'option.name' found in file1.yaml and file2.yaml
Duplicate key 'option.name' found in file1.yaml and file2.yaml
Namespace 'X' is missing required 'default' target
Namespace 'X' is missing required 'default' target
default/ directory with at least one values.yaml file.Solution: Create the default target:Schema evolution errors
Namespace 'X' was removed
Namespace 'X' was removed
- Remove all references from ops repo (pod annotations)
- Remove all code using the namespace
- Remove values from sentry-options-automator
- Contact DevInfra to coordinate schema removal
Option 'namespace.option' type changed from 'X' to 'Y'
Option 'namespace.option' type changed from 'X' to 'Y'
type field of an existing option.Solution: Type changes are breaking. Instead, add a new option:Option 'namespace.option' default value changed from X to Y
Option 'namespace.option' default value changed from X to Y
default field of an existing option.Solution: Default changes are breaking because services may rely on schema defaults before ConfigMaps are deployed.Workaround:- Deploy new values to all targets in sentry-options-automator first:
- Wait for ConfigMaps to propagate (~2 minutes)
- Verify all regions are using the new value
- Now you can add a new option with the desired default
Option 'namespace.option' array items type changed from 'X' to 'Y'
Option 'namespace.option' array items type changed from 'X' to 'Y'
items.type field of an array option.Solution: Same as type changes - add a new option instead:Runtime errors
Values directory does not exist: /etc/sentry-options/values
Values directory does not exist: /etc/sentry-options/values
- ConfigMap not mounted - Pod annotations missing or incorrect
- ConfigMap doesn’t exist - Not yet deployed to this cluster
- Wrong SENTRY_OPTIONS_DIR - Environment variable pointing to wrong path
Failed to read directory /etc/sentry-options/values: Permission denied
Failed to read directory /etc/sentry-options/values: Permission denied
readOnly: true (default behavior with injector). Check your pod security context:Options not updating after ConfigMap change
Options not updating after ConfigMap change
- Wait 2 minutes - ConfigMap propagation takes ~60-90 seconds, plus 5 second poll interval
- Check ConfigMap was actually updated:
- Check file mtime in pod:
- Check watcher thread is alive - Look for errors in application logs
- Restart pod as workaround:
Value error: "not-a-number" is not of type "integer"
Value error: "not-a-number" is not of type "integer"
- Integers:
42(no quotes, no decimals) - Numbers:
3.14or5(no quotes) - Strings:
"hello"(quoted) - Booleans:
trueorfalse(no quotes) - Arrays:
[1, 2, 3]or["a", "b"]
Local development issues
Options not loading in local development
Options not loading in local development
- Ensure correct directory structure:
- Create local values.json:
- Run from project root or set
SENTRY_OPTIONS_DIR:
Hot-reload not working locally
Hot-reload not working locally
- Modify the values.json file (not a symlink)
- Wait 5 seconds for the next poll cycle
- Check file was actually modified:
- If using Docker: Ensure volumes are properly mounted and not using certain drivers that don’t propagate mtime changes
CI/CD issues
CI failing: 'fetch-schemas failed'
CI failing: 'fetch-schemas failed'
- Invalid SHA in repos.json - Commit doesn’t exist or was force-pushed
- Network issues - Cannot reach GitHub
- Invalid repo URL
- Wrong path - Schema directory doesn’t exist at that path in the repo
CD failing: 'ConfigMap exceeds maximum size'
CD failing: 'ConfigMap exceeds maximum size'
- Split the namespace - Create multiple namespaces (e.g.,
myrepo-core,myrepo-features) - Reduce option count - Remove unused options
- Shorten option names and descriptions
Pods failing to start after adding annotations
Pods failing to start after adding annotations
- Check ConfigMap exists in the same namespace:
- Check injector logs for errors
- Temporarily remove annotations to verify it’s the cause:
Getting help
If you’re still stuck:- Check the error message carefully - It usually indicates exactly what’s wrong
- Search recent issues in sentry-options repo
- Ask in #dev-infra Slack channel with:
- Full error message
- Relevant schema/values files
- What you’ve already tried
- File an issue at https://github.com/getsentry/sentry-options/issues