Startup and diagnostics

This page covers what happens when DataMind Oda starts: the components a run needs, what its output says when one of them fails, where its environment values come from, and which changes need a restart. It is for the people who launch Oda from a command line, run it in a serving mode, or debug a start that fails.

What a start does

When a start fails

A failed start prints its diagnosis once. The output reads, in order:

  1. A headline with the count: oda: startup failed: N required plugin(s) did not activate.
  2. The failing components, under Failed plugins (N):, one line per component with its reason; a (required) marker sits beside the required ones.
  3. Components still waiting for a service, under Plugins waiting for services (N):, as a table pairing each component with the services it is missing.

Reasons you may see on a failing line: a component that could not be imported (failed to import), a component whose disable condition could not be evaluated, or one still waiting for a service (pending (waiting for service: X)).

The environment layers

Oda reads its environment from three places. Highest first:

  1. The environment you launch Oda with.
  2. A .env file in the folder you launch from.
  3. A .env file in the Oda home folder.

Profiles, bundles and patches

How Oda finds each package

Checking a failed start

  1. Read the headline, then the failing components; start with the first reason in the list.
  2. If the output refused a .env file or named a variable, fix the environment first (see The environment layers above).
  3. Print the config dump (--dump-config) to see the configuration Oda composed, with each source named (# == <label>, plus , patched by <layers> where a patch layer changed a row). A patch that targets nothing is reported and skipped.
  4. Print the schema dump (--config-schema-dump) when a component failed to import: it lists a status for every declared schema so you can see whether it could be read, and it never prints values or expressions. Command line and flags covers both dump flags.
  5. If a bundle was skipped, repair it or remove its selection. If a start keeps failing the same way, keep the full output for DataMind support. For messages outside a start, see Updates and troubleshooting.

Questions, answered

What is required for Oda to start?

The agent loop, the web server, the module and connection layers, the headless runner, the automation face and the SDK server. When one of them is asked to start and cannot activate, the whole start fails. A required component that a profile leaves out or turns off does not fail the start.

Oda stopped with a startup failed line. What should I read first?

Start with the headline: it counts the required components that did not activate, and the list below it names each failing component with its reason, marked (required) where it applies. If the output also refused a .env file, fix the environment first; then use the checks in Checking a failed start above.

Oda started, but warned that some entries did not activate. Is something missing?

Yes: some optional components were left out. The run continues without them and everything else keeps working. The warning reads oda: warning: N entry/entries did not activate, and the lines after it name what was left out and why.

Why did Oda refuse my .env file?

A file may not set the variables that only the launching environment may set: PATH and the names that decide how Oda starts. The refusal names the variable, and the fix is to export the value where you launch Oda or to move it to the home folder's .env.

Which .env file wins when both set the same value?

The file in the folder you launch from wins over the home folder's file. And a value the launching environment already sets wins over both.

Where should proxy settings go?

In the launching environment or in the Oda home folder's .env. A file in the folder you launch from may not set HTTP_PROXY, HTTPS_PROXY, ALL_PROXY or NO_PROXY; only the home folder's file may.

My profile bundle could not be loaded. What now?

Oda skips the bundle and keeps its selection, so a later start tries it again. The message names it: Selected profile bundle "<name>" could not be loaded; repair or remove its bundle selection. Repair the bundle, or remove it from the profile's selections.

Why does pointing a linked plugin somewhere else need a restart?

Oda decides which copy of each package loads once, for the whole process, and that decision cannot be changed under a running process: a change that points a name at a different folder, or replaces, removes or overrides a local package, is refused with requires a process restart. Make the change and start Oda again. What can apply live is on Hot reload.

Oda will not start. How do I see the configuration it was given?

Print the config dump (--dump-config) for the configuration Oda composed from its layers, and the schema dump (--config-schema-dump) to see whether each declared schema could be read; the schema dump never prints values or expressions. Both flags are on Command line and flags.

After a failed start, is anything still running?

No. A failed start closes the components it already started before it exits, so nothing is left half-running. Fix the cause and start the profile again; the full output is printed once and the startup diagnostics are saved.