Skip to content

fix(seed,import): sequential compatibility writes bypass transient retry #2804

Description

@yinlianghui

Baseline and relation to #2678/#2680

Minimal reproductions

  1. Real SQL self-referencing seed dataset (employee.manager) with one injected fetch failed on Alice insert, Bob insert, or update mode: each target operation is attempted once.
  2. Import protocol exposing createData but no createManyData, with one injected fetch failed: the create is attempted once and reported failed.

Each scenario reproduced 2/2 on fresh state.

Expected / actual

  • Expected: preserving sequential ordering/compatibility does not exempt the individual write from transient retry.
  • Actual: SeedLoaderService.writeRecord and the import fallback call the engine/protocol directly, bypassing withTransientRetry.

Impact

Self-referencing seeds and compatible third-party/minimal protocols can still drop rows on a one-off network error—the exact reliability failure #2678 set out to remove.

Evidence and exclusions

  • Seed source: packages/metadata-protocol/src/seed-loader.ts self-ref branch → writeRecord.
  • Import source: packages/rest/src/import-runner.ts no-createManyData inline fallback.
  • Normal bulk seed/import paths and import updates passed transient retry QA.
  • Sequential ordering and the no-bulk protocol fallback should remain; only retry coverage is missing.

Required regression tests

  • Self-ref insert/update transient failure retries and preserves reference order.
  • No-createManyData import transient create retries without changing per-row compatibility semantics.
  • Persistent and logical failures retain bounded attempts and row-level errors.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions