Ashish Kolhe
bafc2be4f0
fix(correlation): P0/P1 fixes from service-streams correlation review (#13668)
## Summary
OSS half of the correlation P0/P1 fix set from the line-by-line review
(`docs/ak_review/correlation-line-by-line-review-2026-08-06.md`).
Companion enterprise PR: same branch name in o2-enterprise (required for
CI manifest pairing).
### Fixes (by review finding)
| Finding | Fix |
|---|---|
| **F14** | `StreamInfo.dropped_dimensions` contract field
(`#[serde(default, skip_serializing_if)]`, backward-compatible wire
format) + TS type |
| **F8** | Shared coverage-based identity-set ranking
(`resolve_best_set_by_coverage`) in `config::meta::correlation` — full
coverage > ratio > count, declaration-order ties; ingest and read now
rank identically |
| **F10** | `save_identity_config` purges rows of removed/changed sets
(`obsolete_set_ids`) + cache clear + org reload event |
| **F6** | `_reset` routes through enterprise
`ServiceStorage::delete_all` (cache clear + super-cluster replication)
and emits an org-scope reload; super-cluster Delete consumer emits org
reload instead of per-service delete |
| **F19** | `infra::table::service_streams::put`/`delete_subset_orphans`
return deleted orphan disambiguations so callers can evict cache keys |
| **F2** | `config::utils::sql::validate_where_fragment` (sqlparser)
applied to the `filter` param at both `traces/latest*` interpolation
sites — statement smuggling and comment-truncation payloads → 400 |
| **F2/F38** | FE: shared
`quoteSqlIdentifier`/`quoteSqlLiteral`/`buildSqlCondition` adopted by
all six SQL builders (two trace paths were fully unescaped) |
| **F35** | `applyFilterOverlay`: filter edits resolve per-stream via
semantic groups instead of literal key identity; dead
`removeFilter`/`resetFilters` removed; `semanticGroups` threaded to
`CorrelatedLogsTable` parents |
| **F36** | `applyDimensionEditsToFilters`: dimension-bar edits work in
both key spaces (raw-field and semantic-ID), case-insensitive shared
field→group map |
| **F31** | `mergeSubjectOverrides`: subject overrides replace the
same-group key (never union two aliases into contradictory WHERE),
schema-less field guessing removed |
| F14 (FE) | Warning banner shipped, then removed by reviewer decision
(`dropped_dimensions` stays in the API) |
### Verification
- `cargo test -p config` correlation/service_streams/sql: 121 tests
green; enterprise-feature and OSS-only cfg builds both compile
- FE: 263 vitest tests green across the correlation suites; vue-tsc
clean
- **Live-verified** against a local build (fresh DB): 19/19 API checks
(raw-value emission, set filing, obsolete-set purge, reset cache
invalidation, orphan eviction, filter validation) plus browser checks
(escaped SQL on the wire: `"environment" = 'Prod-EU'`)
Deliberately out of scope (per review decision): F15, F17/F37, F9.
2026-08-06 11:49:39 +00:00
..
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-08-05 10:16:00 +00:00
2026-07-24 07:11:39 +00:00
2026-08-03 08:54:15 +00:00
2026-08-05 10:16:00 +00:00
2026-08-05 12:18:13 +00:00
2026-08-06 10:30:03 +00:00
2026-08-05 10:16:00 +00:00
2026-07-24 07:11:39 +00:00
2026-08-05 10:16:00 +00:00
2026-07-21 12:47:06 +00:00
2026-07-24 07:11:39 +00:00
2026-08-03 22:29:04 +00:00
2026-08-03 22:29:04 +00:00
2026-08-03 22:29:04 +00:00
2026-07-24 07:11:39 +00:00
2026-06-15 14:59:55 +00:00
2026-07-24 07:11:39 +00:00
2026-05-28 11:00:49 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-20 18:06:21 +00:00
2026-08-05 10:16:00 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-31 08:50:19 +00:00
2026-07-31 08:50:19 +00:00
2026-07-24 07:11:39 +00:00
2026-08-05 10:16:00 +00:00
2026-04-07 09:57:53 +08:00
2026-07-24 07:11:39 +00:00
2026-08-05 10:16:00 +00:00
2026-08-06 11:49:39 +00:00
2026-08-06 11:49:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-08-05 10:16:00 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-28 10:59:27 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-04-07 09:57:53 +08:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-08-05 10:16:00 +00:00
2026-08-05 10:16:00 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-08-03 22:29:04 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-10 06:12:52 +05:30
2026-08-05 10:16:00 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-05-28 11:00:49 +00:00
2026-08-05 10:16:00 +00:00
2026-08-05 10:16:00 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-08-05 10:16:00 +00:00
2026-04-07 09:57:53 +08:00
2026-07-21 12:47:06 +00:00
2026-08-06 11:49:39 +00:00
2026-08-06 11:49:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-08-05 10:16:00 +00:00
2026-08-03 22:29:04 +00:00
2026-08-03 22:29:04 +00:00
2026-08-05 10:16:00 +00:00
2026-08-05 10:16:00 +00:00
2026-07-21 12:47:06 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-08-05 10:16:00 +00:00
2026-04-07 09:57:53 +08:00
2026-07-24 07:11:39 +00:00
2026-08-03 22:29:04 +00:00
2026-08-03 22:29:04 +00:00
2026-08-03 22:29:04 +00:00
2026-08-05 10:16:00 +00:00
2026-08-05 10:16:00 +00:00
2026-08-05 10:16:00 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-14 07:50:56 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-08-05 10:16:00 +00:00
2026-07-28 07:58:21 +00:00
2026-07-24 07:11:39 +00:00
2026-07-28 07:58:21 +00:00
2026-07-31 07:23:22 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-21 12:47:06 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-08-05 10:16:00 +00:00
2026-08-05 10:16:00 +00:00
2026-08-03 22:29:04 +00:00
2026-08-03 22:29:04 +00:00
2026-08-03 22:29:04 +00:00
2026-08-03 12:45:16 +08:00
2026-08-03 12:45:16 +08:00
2026-08-05 10:16:00 +00:00
2026-08-05 10:16:00 +00:00
2026-08-03 11:04:22 +00:00
2026-08-03 11:04:22 +00:00
2026-07-24 07:11:39 +00:00
2026-08-05 10:16:00 +00:00
2026-07-20 18:06:21 +00:00
2026-04-07 09:57:53 +08:00
2025-11-06 18:38:13 +08:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-06-09 16:28:08 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-08-05 10:16:00 +00:00
2026-08-05 10:16:00 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-08-05 10:16:00 +00:00
2026-08-05 10:16:00 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-07-24 07:11:39 +00:00
2026-04-07 09:57:53 +08:00
2026-07-24 07:11:39 +00:00