mirror of
https://github.com/openobserve/openobserve.git
synced 2026-11-06 00:09:22 +00:00
related to - https://github.com/openobserve/openobserve/pull/8003 - https://github.com/openobserve/openobserve/issues/7986 # Why We Can Delete `enable_align_histogram` ## What It Was `enable_align_histogram` was a query parameter introduced in [PR #8003](https://github.com/openobserve/openobserve/pull/8003) to fix [Issue #7986](https://github.com/openobserve/openobserve/issues/7986). The bug was that in the old two-step search flow (`_search_partition` → `_search`), the two APIs independently generated histogram intervals, leading to mismatched time buckets and inaccurate chart rendering in dashboards. The flag told `_search_partition` to: 1. Align partition boundaries to histogram interval boundaries (e.g., round to the start of a minute/hour/day). 2. Return the computed `histogram_interval` in the response so the frontend could pass it to `_search`. ## Why It Is Now Dead Code ### 1. The frontend no longer calls `_search_partition` All frontend search now uses `_search_stream` (HTTP/2 streaming), which internally calls `search_partition()` with `enable_align_histogram = false`. The old `_search_partition` endpoint is no longer consumed by the UI. The only frontend caller (`getValuesPartition` in `IndexList.vue`) is defined but never invoked. ### 2. `search_stream` handles alignment inherently In the streaming search flow, partitions themselves define the search time ranges. Each partition search runs on the exact aligned time boundaries returned by the partition step. There is no separate histogram query that needs an externally provided interval — alignment is "baked into" the partition boundaries. ### 3. Histogram queries are already covered by `is_complex_query` For histogram queries (which have `GROUP BY`), `is_complex_query` returns `true`. Combined with `has_ts_column = true`, this triggers `calculate_partition_settings()` to align `min_step` to the histogram interval — the same alignment behavior that `enable_align_histogram` previously provided, but without the extra flag. ### 4. All backend callers pass `false` Of the 5 callers of `search_partition()`: | Caller | Value | |--------|-------| | gRPC handler | hardcoded `false` | | streaming execution | hardcoded `false` | | traces handler | hardcoded `false` | | HTTP `_search_partition` | from query param (frontend always passed `true`, but frontend no longer calls this) | | HTTP `_search_partition_multi` | from query param (frontend always passed `true`, but frontend no longer calls this) | No active code path ever sets `enable_align_histogram = true`. ## What Was Removed - `get_enable_align_histogram_from_request()` — the HTTP query param parser - The `enable_align_histogram` parameter from: - `search_partition()` function signature - `search_partition_multi()` function signature - `calculate_partition_settings()` function signature - The alignment logic in `search_partition()`: - `add_mini_partition` (always `false` without the flag) - `PartitionGenerator` align parameter (now driven by `is_histogram` alone) - `resp.histogram_interval` override block - The `|| enable_align_histogram` branch in `calculate_partition_settings` - The query parameter from both HTTP handler `utoipa` specs - The `false` argument from all 5 call sites