4.3 KiB
Configuration Severity Policy
The configuration loader can decide how strictly it should react when it encounters missing files, undefined options or invalid values. This document describes the available knobs and provides ready-to-use presets.
Severity Levels
Each policy entry maps a key to one of the following severities:
| Severity | Description |
|---|---|
skip |
Ignore the problem and continue silently. |
warn |
Log a warning and continue. |
error |
Log an error and continue (useful to surface issues without aborting). |
fatal |
Log a fatal message and abort the process immediately. |
Policy Keys
The following keys can be customised:
| Key | Applies to |
|---|---|
default |
Fallback severity for any key that is not explicitly overridden. |
missing_file |
Missing or empty configuration files (worldserver.conf, modules, …). |
missing_option |
Options looked up in code but not present in any config file. |
critical_option |
Required options (RealmID, *DatabaseInfo, …). |
unknown_option |
Options found in optional configs that the core does not recognise. |
value_error |
Options that cannot be converted to the expected type. |
Critical options remain fatal by default to prevent the core from booting with incomplete database details; you can relax them if required.
Configuration Channels
config.sh
conf/dist/config.sh exposes the AC_CONFIG_POLICY variable alongside a few
presets:
# Mirrors the default behaviour (errors, with fatal criticals)
export AC_CONFIG_POLICY="$AC_CONFIG_POLICY_PRESET_DEFAULT"
# Skip anything non-critical so the core can bootstrap from defaults + env vars
export AC_CONFIG_POLICY="$AC_CONFIG_POLICY_PRESET_ZERO_CONF"
# Treat everything strictly (useful for CI)
export AC_CONFIG_POLICY="$AC_CONFIG_POLICY_PRESET_STRICT"
The presets are defined as:
AC_CONFIG_POLICY_PRESET_DEFAULT='missing_file=error,missing_option=warn,critical_option=fatal,unknown_option=error,value_error=error'
AC_CONFIG_POLICY_PRESET_ZERO_CONF='default=skip,critical_option=fatal,unknown_option=warn,value_error=warn'
AC_CONFIG_POLICY_PRESET_STRICT='default=error,missing_file=fatal,missing_option=error,critical_option=fatal,unknown_option=error,value_error=error'
Modify or extend these entries to suit your deployment.
Environment Variable
The runtime honours the AC_CONFIG_POLICY environment variable, so you can
override the policy without editing config.sh:
export AC_CONFIG_POLICY="default=skip,critical_option=fatal"
./acore.sh run-worldserver
CLI Override
Every server/tool executable accepts --config-policy:
./bin/worldserver --config-policy="missing_file=fatal,unknown_option=warn"
./bin/authserver --config-policy "$AC_CONFIG_POLICY_PRESET_STRICT"
The CLI flag takes precedence over the environment and config.sh.
Quick Presets
| Preset | Intended use |
|---|---|
legacy |
Default behaviour before this feature (errors for missing files/options). |
zero-conf |
Zero-touch deployments; rely on defaults/env vars where possible. |
strict |
Fail-fast in CI or controlled environments. |
Feel free to clone these presets and store your own variants inside
config.sh or deployment scripts.
Tips
- Pair
fatalseverities with monitoring so regressions in configuration surface quickly. - When experimenting locally, start with
zero-confand elevate specific keys toerror/fatalas you validate your setup. - Remember that number parsing errors (
value_error) often indicate typos; keep them at leasterrorunless you have a very good reason.