Back to Azerothcore Wotlk

Configuration Severity Policy

doc/ConfigPolicy.md

4.0.04.3 KB
Original Source

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:

SeverityDescription
skipIgnore the problem and continue silently.
warnLog a warning and continue.
errorLog an error and continue (useful to surface issues without aborting).
fatalLog a fatal message and abort the process immediately.

Policy Keys

The following keys can be customised:

KeyApplies to
defaultFallback severity for any key that is not explicitly overridden.
missing_fileMissing or empty configuration files (worldserver.conf, modules, …).
missing_optionOptions looked up in code but not present in any config file.
critical_optionRequired options (RealmID, *DatabaseInfo, …).
unknown_optionOptions found in optional configs that the core does not recognise.
value_errorOptions 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:

bash
# 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:

bash
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:

bash
export AC_CONFIG_POLICY="default=skip,critical_option=fatal"
./acore.sh run-worldserver

CLI Override

Every server/tool executable accepts --config-policy:

bash
./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

PresetIntended use
legacyDefault behaviour before this feature (errors for missing files/options).
zero-confZero-touch deployments; rely on defaults/env vars where possible.
strictFail-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 fatal severities with monitoring so regressions in configuration surface quickly.
  • When experimenting locally, start with zero-conf and elevate specific keys to error/fatal as you validate your setup.
  • Remember that number parsing errors (value_error) often indicate typos; keep them at least error unless you have a very good reason.