Skip to content

Enumerated collectors that yield zero items log SUCCESS indistinguishable from healthy #1837

Closed

Description

@erikdarlingdata

Spun out of #1833's triage. The reason both empty-grid defects (#1833, and the Query Store issue filed alongside this one) went unreported for so long is that they are invisible in Collection Health: the zero-item path returns SUCCESS with rows_collected = 0 and no message, so "collected nothing for weeks" reads as healthy.

The per-database (RunsPerDatabase) branch already has an "every item failed, so rethrow as an error" guard (RemoteCollectorService.DefinitionRunner.cs:187-192). The enumerated branch has no equivalent: an enumeration that returns zero items — because the login can't enter any database, because every probe failed into an empty CATCH, or because a filter excluded everything — early-returns 0 as SUCCESS (DefinitionRunner.cs:218-222).

Sketch: when an enumerating collector's enumeration yields zero items on a target where that is surprising (e.g., the server has user databases), log a distinguishable status or at least a message on the SUCCESS row, so Collection Health can band it. Needs a little design care to avoid crying wolf on legitimately-empty servers.

Applies to both Lite and Darling (shared runner shape in DarlingCollectorRunner).

🤖 Generated with Claude Code

Activity

  1. erikdarlingdata commented on Jul 30, 2026

    @erikdarlingdata
    OwnerAuthor

    Scope addition from #1836's implementation: surfacing the on-prem Query Store enumeration's per-database PROBE failures (the empty CATCH) turns out to need a driver contract change - the enumeration's result set IS the item list both runners consume as database names, so failures cannot ride it. The natural home is the _lastCollectionNote / EmptyEnumerationMessage mechanism this issue's minimal fix introduced: the SQL needs a way to hand the runner a note alongside the item list. Fold that into this issue's design rather than a separate one.

  2. added 2 commits that reference this issue on Jul 30, 2026
  3. erikdarlingdata commented on Jul 31, 2026

    @erikdarlingdata
    OwnerAuthor

    Shipped across #1843 (minimal note), #1854 (probe-failure contract + health visibility), #1864 (newest-first note ranking), and #1868 (the has-user-databases qualifier). Remaining adjacent items live in #1865 and #1867.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions