How changes apply and what start-up reports

DataMind Oda applies some changes while it runs and others at the next start, and a start that fails reports what went wrong. This page covers when a saved change takes effect, and how to read the reports Oda prints when a start fails or when a settings file cannot be applied.

When a saved change applies

With hot reload on, a change you save while Oda is open applies at once:

Oda watches the settings files it manages by their exact paths, wherever they sit, and re-reads a watched file only after its write has stopped changing for two seconds, so a file that is still being saved is never read half-written. When Oda closes, it stops watching and cancels reloads that were still waiting.

Hot reload covers these rules in full, and Live plugin settings covers the values you change in a plugin's form.

Changes that wait for the next start

When a change cannot be applied

A change to the settings file that Oda cannot apply is reported instead of applied:

A settings file must hold a list. A file that is empty, or holds only comments, fails the next start. To switch off what the file adds, keep its header lines and leave an empty list: []. The profile settings file covers the file itself.

Reading a failed start

Oda treats these parts as required: 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 stops. A required part that a profile leaves out, or turns off, does not fail the start.

The report is printed once, in this order:

  1. A headline that counts the required parts that did not activate: startup failed: N required plugin(s) did not activate.
  2. Failed plugins (N):, one line per part with the reason it could not activate; a (required) marker sits beside the required ones.
  3. Plugins waiting for services (N):, a table pairing each part with the services it is still waiting for.

Reasons you may see on a failing line: failed to import (the part could not be loaded), a part whose switch could not be read, or pending (waiting for service: X).

Oda then closes the parts it already started, saves the full start-up diagnostics, and exits with code 1. Nothing is left half-running.

If only optional parts failed, the start continues: the report warns warning: N entry/entries did not activate, and the lines after it name what was left out and why.

A failure that happens before Oda's parts can load at all reads fatal load failure: with the failure's stack. Oda exits with code 1 after a short cleanup wait; a cleanup that gets stuck delays that exit but never cancels it.

Startup and diagnostics covers how to work through a failed start.

When a start skips a bundle

A bundle that cannot be loaded is skipped, and its selection is kept 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.

Where start-up values come from

Oda reads its start-up values 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.

Flags and the command line

Command line and flags covers Oda's flags and the config and schema dumps.

Questions, answered

When I save a change while Oda is open, when does it apply?

With hot reload on, at once: plugin changes and settings edits are applied while Oda runs. A change seen while Oda is still starting is applied once it is ready. Hot reload covers the rules.

Which changes are applied at the next start?

Replacing an installed plugin or bundle version, a change that would point a plugin's package at a different folder, and every change when hot reload is off. Everything else is applied while Oda runs.

I edited the settings file and the change did not apply. What should I fix?

Oda reported the file and the line and column where it failed. The settings already in effect stay until you correct the file; fix it and save again, and Oda retries. The profile settings file covers the file and how to edit it.

Why will Oda not start from an empty settings file?

A settings file must hold a list. A file that is empty, or holds only comments, fails the next start. To switch off what the file adds, keep its header lines and leave an empty list: [].

Oda will not start. What should I keep for help?

The whole report: it is printed once, and the full start-up diagnostics are saved with it. Start with the first reason in the list of failing parts. What Oda shows and what its logs keep explains why you should keep the text exactly as shown, and Troubleshooting covers reporting the problem.

What do the lists under a failed start name?

Failed plugins (N): names each part that did not start, with its reason, marking the required ones with (required). Plugins waiting for services (N): pairs the parts that are still waiting with the services they need.

Can Oda keep running when a part fails to start?

If the part is required, no: the start stops. If it is optional, yes: the run continues without it and warns warning: N entry/entries did not activate. A required part that a profile leaves out or turns off does not fail the start.

What does a "fatal load failure" mean?

A failure that happened before Oda's parts could load at all, followed by the failure's stack. Oda exits with code 1 after a short cleanup wait; a cleanup that gets stuck delays the exit but never cancels it.

A profile bundle could not be loaded. What happens to it?

Oda skips it and keeps its selection, so a later start tries again. Repair the bundle, or remove it from the profile's selections.

Where do Oda's start-up values come from?

Highest first: the environment you launch Oda with, a .env file in the folder you launch from, then a .env file in the Oda home folder. A file may not set the values that decide how Oda starts; the refusal names the variable, and the fix is to export it at launch or to move it to the home folder's file.

Which wins, a command-line flag or the settings file?

The flag. A flag wins over the configuration, even when the value is written as an expression, and it is resolved once at start, so a later reload never resets it.