Skip to main content
Configuration errors are among the most common reasons a validator fails to start. They range from HOCON syntax mistakes to subtle environment variable conflicts.

HOCON Parsing Errors

Canton uses HOCON (Human-Optimized Config Notation) for its configuration files. Syntax errors prevent the validator from starting and produce messages like:
Common mistakes and fixes:
  • Missing closing brace. HOCON files can be deeply nested. Use an editor that highlights matching braces, or run a linter before deploying.
  • Unquoted special characters. Values containing ://, =, or # must be quoted.
  • Wrong value types. If the schema expects a duration and you provide an integer without a unit, parsing fails.
  • Trailing commas. HOCON is more forgiving than JSON, but some constructs still break on trailing commas inside arrays.
To validate a HOCON file before applying it:

File Permission Issues

The validator process must be able to read its configuration files. On Linux and in containers, this often means adjusting ownership or permissions.
Fix:

Kubernetes Secrets Not Mounted

If a configuration file references a Kubernetes Secret that is not mounted into the pod, the validator fails with a FileNotFoundException on the expected path. Verify:
Common causes:
  • The secret name in the Helm values does not match the actual secret name.
  • The secret was created in a different namespace.
  • A subPath mount is pointing to a key that does not exist in the secret.

Environment Variable Conflicts

Canton and Splice components read configuration from both files and environment variables. When both are set, environment variables take precedence, which can produce unexpected behavior.

DPM_SDK_VERSION Overriding daml.yaml

If you set DPM_SDK_VERSION as an environment variable, it overrides the sdk-version field in your project’s daml.yaml. This can cause version mismatch errors during builds:
Fix: unset the environment variable or align it with daml.yaml:

Conflicting .env Files

Docker Compose loads .env from the working directory. If you have multiple .env files (e.g., from a previous deployment), stale values can override current configuration.
Check for variables that might conflict:
  • SPLICE_APP_VERSION — must match the Helm chart or Docker image version
  • PARTICIPANT_HOST — must resolve from inside the container, not just from the host
  • AUTH_URL — must be reachable from the validator container

Debugging Configuration Resolution

To see the final merged configuration that Canton will use:
For HOCON files, Canton logs the resolved configuration at DEBUG level on startup. Temporarily set canton.monitoring.logging.api.level = DEBUG to capture it.