Surfaced by the ui-tests-matrix validation run for #449 (30582018605) once the Docker-host quota fixes (#452/#454) stopped masking everything else: the sqlite-elasticsearch leg fails 18 browser tests in one cluster — the compartments page, the resources type rail, the builder's parameter datalist, and their a11y/nojs variants.
Evidence (from the workflow's conformance probe, 15s after readiness)
GET /CompartmentDefinition?_count=10000 → {"resourceType":"Bundle","type":"searchset","total":null,"entry":[]}
ES _cat/indices → hfs_default_searchparameter 7404 docs ← SPs fully synced
ES hfs_default_compartmentdefinition/_count → index_not_found_exception
The suite then ran for 21 more minutes and the compartments tests still failed at the end — this is not sync lag; the CompartmentDefinition documents never reach ES while SearchParameters do. On the composite, search is served by ES, so GET /CompartmentDefinition is empty for the life of the process.
Curiously the s3-elasticsearch leg passed the same tests in the same run (94/1, the 1 being #442) — whatever orders seeding vs. the sync worker differs between the two composites, which smells like a startup-ordering race that sqlite (fast seeding) loses and S3 (slow seeding) wins.
Second facet: the UI caches the emptiness
CompartmentCatalog/SpCatalog only refuse to cache failed fetches; an empty 200 is cached for the process lifetime, so even after ES catches up the pages stay broken until restart. The cache should treat empty-when-the-primary-is-known-to-seed as provisional (or simply not cache empty sets), independent of the server-side fix.
Found while validating #449; the nightly reds attributed to the Docker host were hiding this.
Surfaced by the ui-tests-matrix validation run for #449 (30582018605) once the Docker-host quota fixes (#452/#454) stopped masking everything else: the
sqlite-elasticsearchleg fails 18 browser tests in one cluster — the compartments page, the resources type rail, the builder's parameter datalist, and their a11y/nojs variants.Evidence (from the workflow's conformance probe, 15s after readiness)
The suite then ran for 21 more minutes and the compartments tests still failed at the end — this is not sync lag; the CompartmentDefinition documents never reach ES while SearchParameters do. On the composite, search is served by ES, so
GET /CompartmentDefinitionis empty for the life of the process.Curiously the
s3-elasticsearchleg passed the same tests in the same run (94/1, the 1 being #442) — whatever orders seeding vs. the sync worker differs between the two composites, which smells like a startup-ordering race that sqlite (fast seeding) loses and S3 (slow seeding) wins.Second facet: the UI caches the emptiness
CompartmentCatalog/SpCatalogonly refuse to cache failed fetches; an empty 200 is cached for the process lifetime, so even after ES catches up the pages stay broken until restart. The cache should treat empty-when-the-primary-is-known-to-seed as provisional (or simply not cache empty sets), independent of the server-side fix.Found while validating #449; the nightly reds attributed to the Docker host were hiding this.