Loading the documentation…

Runtime consistency checks

While it works, DataMind Oda runs built-in checks on its own parts so that each part's saved data and its live state stay consistent. This page covers what the checks watch, the failure they raise and what it means for your task, and how the set of checks is selected.

What a check is

Which parts carry a check

The list is not exhaustive, and not every part carries a check: a check exists where a part's saved data and live state can drift apart, and a part that carries none has its own reason for the gap.

When a check fails

What to do after a failure

  1. Send the request again.
  2. If the same failure comes back, keep the message exactly as shown, including the part name and the code. The text is already in Oda's own wording, and the original wording stays in Oda's own log files; Diagnostic text and logs has the details.
  3. Contact your DataMind OS administrator with it. Updates and troubleshooting covers how to report a problem.

Selecting which checks run

The switch and the lists are settings of how Oda is started, so they belong to whoever starts and configures Oda.

How a check is installed and released

Boundaries worth knowing

Questions, answered

What does an INVARIANT message mean?

An internal check failed. The message names the part that failed its check, begins invariant violated by "<part>":, and carries the code INVARIANT. Oda stops the operation instead of continuing on state the check could not confirm.

What should I do when a check fails?

Send the request again. If the same failure comes back, keep the message exactly as shown and contact your DataMind OS administrator with it; see What to do after a failure.

How is a failed check different from a command failure?

A command failure means a command did not succeed. A failed check means Oda's own state failed a check: the message names the part, carries the code INVARIANT, and Oda stops instead of continuing on state it could not confirm.

The failure names a part I do not recognise. What is it?

It is Oda's own name for the part of itself whose check failed. The name is how the failure is attributed; keep it exactly as shown when you report the problem.

Do I have to start the checks or watch them?

No. The checks run on their own while Oda works: you do not start them, and a passing check is silent. What you see from a check is its failure report.

Can the checks be switched off?

Yes. The enabled switch turns all of them off together, and back on. The set that runs can also be narrowed with an allow list and a block list; a part that matches both is not checked, because the block list wins.

Do the list entries have to be exact names of parts?

No. An entry is a pattern matched against part names, and the match is case-sensitive: a plain entry matches any name it appears in. Add ^ at the start or $ at the end to pin the match.

What happens if a list entry is blank or unusable?

Oda refuses to start: a blank entry, a repeated entry or a pattern it cannot read stops the start, and the message names the list and the entry. Correct the entry, then start Oda again.

I expected a part to be checked, but it is not. Why?

Several reasons are possible: the part carries no check of its own; the selection lists leave the part out; the way Oda was started leaves the checks out entirely; or the operations you have in mind happened before a reload of that part, which the running check did not see.

What happens to a check when its part is reloaded?

The check is released with its part: everything it added and recorded goes away, and the name it held is freed. When the part comes back, its check can register again cleanly, and operations from before the reload are outside what the new check saw.

Are all of Oda's model calls covered?

The check on rebuilt requests covers the requests the agent loop builds. A one-off model call made outside the loop is not covered that way.

Do the checks change what Oda sends to a model?

No. The checks read assembled requests and saved state; they never rewrite request content, so nothing Oda sends to a model changes because of a check.