Skip to content

Clear a field type conflict

You will learn how to clear a stuck type conflict on the Fields page after producers stop sending incompatible types for the same path.

When this shows up

On Fields, the Conflict column names a second concrete type Cordo saw for that path (for example object while the learned type stayed string). The catalog keeps the first type; later incompatible values do not flip it.

A common DigitalOcean App Platform case: path log is sometimes a plain string (shell echo / non-JSON stdout) and sometimes a nested JSON object (structured app logs). Nested paths such as log.msg can still appear once object-shaped events arrive. Background: Fields and shapes and OpenSearch-compatible ingest.

1. Stop incompatible values

  1. Emit one consistent JSON shape for the path going forward.
  2. For DO runtime logs, prefer JSON stdout so log is an object (or a string that extracts to an object, with the original at log._raw). Remove debug prefixes such as ls … && from job Run Commands that print plain text.
  3. Confirm recent events no longer show a bare string in log.

If plain text keeps arriving, clearing Conflict will come back on the next ingest merge.

2. Resolve in Fields

  1. Select the stream → open Fields.
  2. Find the path with a Conflict value (for example log).
  3. Click Resolve.
  4. Choose Keep the current type or Use the conflicting type.
  5. Confirm Resolve.

Cordo only offers choices that share the same analytics storage as the current type (for example stringobject for DO log). The Resolve dialog explains why each option is available or blocked. A switch like stringnumber stays disabled because it would change how values are stored — you can still clear Conflict by keeping the current type.

3. Verify

  1. Fields: the path shows your chosen type and Conflict is empty.
  2. Ingest a fresh structured log; nested paths update as usual.
  3. Query or live view on a nested field (for example log.level).

Next