mirror of
https://github.com/openobserve/openobserve.git
synced 2026-11-06 08:09:24 +00:00
ae011ace69fc73eb2b932e628296fa2b43950ca0
715
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
ae011ace69 | fix: Issue 10602 main (#10614) | ||
|
|
02327edb79 | fix: visualization select * query issue on load (#10621) | ||
|
|
25c0fe6382 |
feat: query builder support on logs page (#10305)
- #10446 Design at : https://github.com/openobserve/designs/tree/main/auto-query-builder-on-logs-page # Logs Query Builder - Behavior Guide What happens in different scenarios when using the Build tab. --- ## Switching to Build Tab - Scenarios ### Scenario 1: No Query, SQL Mode OFF **Starting state:** - Query editor is empty - SQL Mode is OFF - Stream "default" is selected **What happens when you click Build:** 1. SQL Mode turns ON automatically 2. Query is generated: `SELECT * FROM "default"` 3. Quick Mode turns ON (if enabled in config) 4. Build tab opens in **Custom SQL Mode** 5. Chart type: **Table** (with dynamic columns = true) --- ### Scenario 2: No Query, SQL Mode ON **Starting state:** - Query editor is empty - SQL Mode is ON - Stream "default" is selected **What happens when you click Build:** 1. Query is generated: `SELECT * FROM "default"` 2. Build tab opens in **Builder Mode** 3. Chart type: **Line** (default) --- ### Scenario 3: Simple SELECT * Query **Starting state:** - Query: `SELECT * FROM "logs"` - SQL Mode is ON **What happens when you click Build:** 1. Query is parsed but no explicit fields found (`*` = all columns) 2. Build tab opens in **Custom SQL Mode** 3. Chart type: **Table** (with dynamic columns) 4. Quick Mode turns ON (SELECT * pattern detected) 5. Query editor is **editable** --- ### Scenario 4: Histogram Query (Time Series) **Starting state:** - Query: `SELECT histogram(_timestamp) as time, count(*) as count FROM "logs" GROUP BY time` - SQL Mode is ON **What happens when you click Build:** 1. Query is parsed successfully 2. Build tab opens in **Builder Mode** 3. Chart type: **Bar** (default chart type) 4. Fields populated: X-axis = histogram, Y-axis = count --- ### Scenario 5: Count Only Query (No Grouping) **Starting state:** - Query: `SELECT count(*) as total FROM "logs"` - SQL Mode is ON **What happens when you click Build:** 1. Query is parsed successfully 2. Build tab opens in **Builder Mode** 3. Chart type: **Metric** (big number display - only Y-axis, no X-axis) --- ### Scenario 6: Query with 3+ GROUP BY Fields **Starting state:** - Query: `SELECT status, method, host, count(*) FROM "logs" GROUP BY status, method, host` - SQL Mode is ON **What happens when you click Build:** 1. Query is parsed successfully 2. Build tab opens in **Builder Mode** 3. Chart type: **Table** (too many grouping fields for chart) --- ### Scenario 7: Simple JOIN Query **Starting state:** - Query: `SELECT a.field, b.field FROM "stream1" a JOIN "stream2" b ON a.id = b.id` - SQL Mode is ON **What happens when you click Build:** 1. Query is parsed successfully 2. Build tab opens in **Builder Mode** 3. Chart type: **Bar** (default) 4. JOIN is recognized and shown in builder --- ### Scenario 8: Nested JOIN Query **Starting state:** - Query: `SELECT * FROM "a" JOIN ("b" JOIN "c" ON b.x = c.x) ON a.y = b.y` - SQL Mode is ON **What happens when you click Build:** 1. **Complex pattern detected** (nested JOIN with parentheses) 2. Build tab opens in **Custom SQL Mode** 3. Chart type: **Table** (with dynamic columns) 4. Query editor is **editable** 5. Field selectors are **hidden** --- ### Scenario 9: CTE Query (WITH clause) **Starting state:** - Query: `WITH recent AS (SELECT * FROM "logs" WHERE _timestamp > now() - interval '1 hour') SELECT * FROM recent` - SQL Mode is ON **What happens when you click Build:** 1. **Complex pattern detected** (CTE) 2. Build tab opens in **Custom SQL Mode** 3. Chart type: **Table** (with dynamic columns) 4. Query editor is **editable** --- ### Scenario 10: Subquery **Starting state:** - Query: `SELECT * FROM (SELECT status, count(*) FROM "logs" GROUP BY status) subq` - SQL Mode is ON **What happens when you click Build:** 1. **Complex pattern detected** (subquery) 2. Build tab opens in **Custom SQL Mode** 3. Chart type: **Table** (with dynamic columns) --- ### Scenario 11: UNION Query **Starting state:** - Query: `SELECT * FROM "logs1" UNION SELECT * FROM "logs2"` - SQL Mode is ON **What happens when you click Build:** 1. **Complex pattern detected** (UNION) 2. Build tab opens in **Custom SQL Mode** 3. Chart type: **Table** (with dynamic columns) --- ### Scenario 12: Window Function Query **Starting state:** - Query: `SELECT *, ROW_NUMBER() OVER (PARTITION BY status ORDER BY _timestamp) FROM "logs"` - SQL Mode is ON **What happens when you click Build:** 1. **Complex pattern detected** (window function) 2. Build tab opens in **Custom SQL Mode** 3. Chart type: **Table** (with dynamic columns) --- ### Scenario 13: Nested Function Query **Starting state:** - Query: `SELECT ceil(count(*)) as rounded_count FROM "logs"` - SQL Mode is ON **What happens when you click Build:** 1. **Complex pattern detected** (nested function - function inside function) 2. Build tab opens in **Custom SQL Mode** 3. Chart type: **Table** (with dynamic columns) --- ### Scenario 14: JSON Operations Query **Starting state:** - Query: `SELECT data->>'name' as name FROM "logs"` - SQL Mode is ON **What happens when you click Build:** 1. **Complex pattern detected** (JSON operator) 2. Build tab opens in **Custom SQL Mode** 3. Chart type: **Table** (with dynamic columns) --- ### Scenario 15: CASE/WHEN Query **Starting state:** - Query: `SELECT CASE WHEN status >= 500 THEN 'error' ELSE 'ok' END as status_type, count(*) FROM "logs" GROUP BY status_type` - SQL Mode is ON **What happens when you click Build:** 1. Query is parsed successfully (CASE/WHEN is supported) 2. Build tab opens in **Builder Mode** 3. Chart type: **Bar** (default) 4. CASE/WHEN shown as "raw" field type --- ### Scenario 16: Multiple JOINs (Flat) **Starting state:** - Query: `SELECT a.field as "field1", b.field as "field2" FROM "a" INNER JOIN "b" AS stream_0 ON a.x = b.x INNER JOIN "c" AS stream_1 ON b.y = c.y GROUP BY field1, field2 ORDER BY field1 ASC` - SQL Mode is ON **What happens when you click Build:** 1. Query is parsed successfully (flat JOINs are supported) 2. Build tab opens in **Builder Mode** 3. Chart type: **Bar** (default) --- ### Scenario 17: Opening Shared Link (First Time) **Starting state:** - URL contains `build_data` parameter with chart type "bar" - Query in URL: `SELECT status, count(*) FROM "logs" GROUP BY status` **What happens:** 1. Build tab opens 2. Query is parsed successfully 3. Chart type: **Bar** (restored from URL - first toggle) 4. Build tab opens in **Builder Mode** --- ### Scenario 18: Switching Back to Build Tab (After First Time) **Starting state:** - Previously visited Build tab - URL still has `build_data` with chart type "bar" - Query: `SELECT count(*) FROM "logs"` (metric query) **What happens:** 1. Build tab opens 2. Query is parsed successfully 3. Chart type: **Metric** (auto-selected, URL ignored on subsequent toggles) --- ### Scenario 19: Invalid SQL Syntax **Starting state:** - Query: `SELEC * FORM "logs"` (typos) - SQL Mode is ON **What happens when you click Build:** 1. **Parse error** (invalid SQL) 2. Build tab opens in **Custom SQL Mode** 3. Chart type: **Table** (with dynamic columns) 4. Query editor is **editable** (so user can fix the query) --- ### Scenario 20: Query with WHERE Filters **Starting state:** - Query: `SELECT histogram(_timestamp), count(*) FROM "logs" WHERE status = 500 AND method = 'GET' GROUP BY 1` - SQL Mode is ON **What happens when you click Build:** 1. Query is parsed successfully 2. Build tab opens in **Builder Mode** 3. Chart type: **Bar** (default) 4. Filters populated in filter section --- ## Summary Table | Query Type | Mode | Chart Type | |------------|------|------------| | SELECT * | **Custom** | **Table** | | Histogram + count | Builder | Bar | | Count only (no GROUP BY) | Builder | Metric | | 1-2 GROUP BY fields | Builder | Bar | | 3+ GROUP BY fields | Builder | Table | | Simple JOIN | Builder | Bar | | CASE/WHEN | Builder | Bar | | Multiple flat JOINs | Builder | Bar | | CTE (WITH clause) | **Custom** | **Table** | | Subquery | **Custom** | **Table** | | Nested JOIN | **Custom** | **Table** | | UNION/INTERSECT/EXCEPT | **Custom** | **Table** | | Window functions | **Custom** | **Table** | | Nested functions | **Custom** | **Table** | | JSON operations | **Custom** | **Table** | | Invalid SQL | **Custom** | **Table** | --- ## Quick Mode Auto-Enable Quick Mode is automatically enabled when switching to Build tab if: | Condition | Quick Mode | |-----------|------------| | SQL Mode was OFF | ✅ Enabled | | Query is `SELECT * FROM ...` | ✅ Enabled | | Complex aggregation query | ❌ Not changed | **Requires:** `quick_mode_enabled = true` in config --- ## SQL Mode Auto-Enable | Starting State | After Clicking Build | |----------------|---------------------| | SQL Mode OFF | SQL Mode **ON** | | SQL Mode ON | SQL Mode ON (no change) | **Build tab always requires SQL Mode to be ON.** --- ## Chart Type Priority When auto-selecting chart type: 1. **Custom Mode?** → Table 2. **3+ GROUP BY fields?** → Table 3. **Only Y-axis (no X, no breakdown)?** → Metric 4. **Everything else** → Bar (default) **Exception:** First visit with shared link uses chart type from URL. --- ## Builder Mode vs Custom Mode | Aspect | Builder Mode | Custom Mode | |--------|--------------|-------------| | Query Editor | Read-only | Editable | | Field Selectors | Visible | Hidden | | When Used | Parseable queries | Complex/unparseable queries | | Default Chart | Bar/Metric | Table | --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: ktx-akshay <akshay.patil@kiara.tech> |
||
|
|
0332a055d0 | fix: Ignore external RUM errors (#10489) | ||
|
|
734723b362 |
fix: search bar responsiveness (#10509)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|
|
80d2e57312 | fix: isExpandRow key was getting added to logs table (#10597) | ||
|
|
7647247399 | fix: traces api to use streaming (#10593) | ||
|
|
6ffe0892b2 |
fix: enabled wrap option on patterns tab (#10577)
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: Bhargav <undefined@users.noreply.github.com> |
||
|
|
a639292123 | fix: tooltip issue and tree view lag issue (#10579) | ||
|
|
21aae60f6c | fix: sanitized exception stack trace (#10565) | ||
|
|
82c8b1c7f6 |
test: add logs regression tests for quick mode and pagination bugs (#10541)
- Add test for quick mode query being removed when selecting interesting field - Add test for pagination visibility with histogram and SQL disabled - Add test for error message identifying problematic field --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Bhargav <BJP232004@GMAIL.COM> |
||
|
|
f0ce986d33 |
test: add comprehensive unit tests for tree tooltip system
- Extract tooltip logic into testable treeTooltipHelpers module with 7 functions - Add 35 unit tests covering formatting, distance calculation, data lookup, and HTML generation - Fix broken tests for removed functions (handleViewLogs, handleViewTraces) - Update tests for new Show telemetry button (renamed from view-traces) - Fix radial layout tests (feature removed, now defaults to orthogonal) - Update cache invalidation test to be more robust Coverage improvements: - formatNumber/formatLatency edge cases (K/M notation, seconds/milliseconds) - pointToBezierDistance for curved/straight/zero-length beziers - Node/edge tooltip HTML generation with various data scenarios - Incoming edge lookup with null parents, fallbacks, multiple edges - Root node metrics aggregation from outgoing edges |
||
|
|
38d73786ef |
feat: tree view custom tooltips, inside labels, and dynamic node sizing
- Add custom tooltip system for tree edges using ZRender mousemove + point-to-bezier distance calculation with 12px screen-pixel hit area - Add custom tooltip for tree nodes showing direction-aware metrics (incoming edge data, not aggregate) matching the tree label values - Move tree node labels inside circles with rich text formatting, consistent with graph view layout - Use dynamic node sizing (40-80px based on request volume) matching graph view's formula - Maximize tree layout bounds to reduce sibling edge overlap - Remove ECharts built-in tooltip (replaced by custom tooltip system) |
||
|
|
26943655e8 |
fix: service graph UI cleanup
- Remove All Streams option, sync stream from traces page - Swap tab order: Tree View first, Graph View second - Remove radial and circular layout options and related code - Disable layout dropdown in graph mode (force-directed only) - Move Show telemetry button to header with investigate icon - Rename Total req/min to Requests /min |
||
|
|
6310097c40 |
feat: service graph tree view improvements and telemetry correlation
- Restore edge-specific metrics in tree view (request counts per edge) - Add adaptive percentile-based coloring (nodes by error rate, edges by latency) - Show P50/P95/P99 latency in tree tooltips and side panel - Add "Show telemetry" button with correlated logs/metrics/traces dialog - Remove connection_type (was always hardcoded to "standard") - Make client_service optional for entry-point services - Default to tree view layout |
||
|
|
69e7dca5e6 | feat: service graph edge metrics fix, connection_type removal, and side panel latency display | ||
|
|
f59382dea1 |
feat: navigation for o2 assistant (#10564)
- **improve dashbaord tool prompt** - **fix: pipeline create handler to return a pipeline ID and name** - **feat: navigation event handler, button rendering** |
||
|
|
9a260f8efb |
fix: Trace Details UI improvements (#10550)
Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai> |
||
|
+2 |
7ac02698e9 |
fix: Large log lines main (#10533)
Co-authored-by: Subhra264 <chakrabortysubhradeep556@gmail.com> Co-authored-by: ktx-akshay <akshay.patil@kiara.tech> Co-authored-by: Loakesh Indiran <66478092+Loaki07@users.noreply.github.com> Co-authored-by: Chaitanya Sistla <122406662+chaitanya-sistla@users.noreply.github.com> Co-authored-by: mmosarafO2 <mosraf@openobserve.ai> Co-authored-by: ktx-vaidehi <vaidehi.akhani@kiara.tech> Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai> Co-authored-by: Harsh Mahajan <115500013+007harshmahajan@users.noreply.github.com> Co-authored-by: Shrinath Rao <shnath@openobserve.ai> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|
|
94ade6598a |
fix: Correlation error message fix (#10511)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|
|
e9785af1f0 | fix: ai chat telemetry (#10546) | ||
|
|
7f5215744d |
fix: clear cache when we load the data (#10528)
This PR fixes the issue when user changes the stream on servicegraph it should render the actual data from api not from cache |
||
|
|
524606e4f0 | fix: insight page baseline vs selected time range (#10514) | ||
|
|
cf98c39c81 |
fix: semantic groups, service graph, dedup, dashboard cleanup (#10502)
## Summary
- **Semantic Groups**: add JSON export button, fix broken JSON import
(`handleJsonUpdate` was a no-op), fix "Applied 0 changes" toast bug
- **Service Graph**: remove unused `availableStreams` from
`build_topology` return and API response, skip `_`-prefixed orgs in
processor
- **Dedup Config**: change `time_window_minutes` from `Option<i64>` to
`Option<i32>`, add `deserialize_optional_i32` for defense-in-depth,
sanitize empty/NaN values on frontend before sending
- **Dashboard**: remove dead `/export` endpoint (identical to GET,
unused by frontend)
## Test plan
- [x] Semantic groups: export downloads JSON, import with file upload
works, import shows correct change count
- [x] Service graph: topology loads, stream dropdown works (populated by
`loadTraceStreams`)
- [x] Dedup: clearing time window field and saving no longer returns 422
- [x] Dashboard: GET `/{dashboard_id}` still works, `/export` route
removed
- [x] `cargo check` clean, `cargo clippy` clean
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
|
||
|
|
ba2329b27e | fix: removed console log statements (#10499) | ||
|
|
85cf946426 | fix: fix for switch between pattern to logs showing more logs (#10492) | ||
|
|
0593644a6e | fix: Issue 1208 correlation UI (#10484) | ||
|
|
f9b745764b |
fix: use search time range for trace id (#10485)
### **PR Type**
Bug fix
___
### **Description**
- Pass time range to trace details
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Service graph side panel"]
B["Trace details route"]
C["Query params include from/to"]
A -- "on trace click" --> B
B -- "adds time range" --> C
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>ServiceGraphSidePanel.vue</strong><dd><code>Include
selected time range in trace navigation</code>
</dd></summary>
<hr>
web/src/plugins/traces/ServiceGraphSidePanel.vue
<ul><li>Add <code>from</code> query param from
<code>props.timeRange.startTime</code><br> <li> Add <code>to</code>
query param from <code>props.timeRange.endTime</code></ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10485/files#diff-10bc2834e87e49bf0cd972341639fcfdcac92db60b00cc0852bcf24bdb983d4b">+2/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
9d8ad1d265 |
fix(incidents): widen correlation_key column, fix trace ID extraction, and clean up incident UI (#10477)
## Summary This PR bundles several incident and log correlation fixes: - **DB migration**: Widen `alert_incidents.correlation_key` from `varchar(64)` to `varchar(128)` (Postgres raw SQL, MySQL SeaORM alter, SQLite no-op) and bump `DB_SCHEMA_VERSION` to 30. Correlation keys use prefixed formats (`SCOPE:` + 64-char hash = 70+ chars) that exceeded the previous limit, causing `upgrade_incident_correlation` to fail. - **Incident detail UI**: Remove the redundant refresh button/bar from the correlated logs tab; hide search-term and dimension-filter actions in the incident logs view since they don't apply in that context; remove `cursor: help` from the badge overflow indicator. - **Trace ID extraction fix**: Merge log record fields into `availableDimensions` (in both `SearchResult.vue` and `TraceDetailsSidebar.vue`) so trace ID extraction no longer fails when the trace ID lives in log record fields rather than stream filters. - **`hideSearchTermActions` prop plumbing**: Add the prop to `JsonPreview.vue`, pass it through `TenstackTable.vue`, and enable search-term actions in `DetailTable.vue` correlation view while hiding them in the incident drawer. - **Locale key rename**: Rename `rowsPerPage` to `recordsPerPage` across all 12 language files for consistency. ## Test plan - [ ] Migration unit tests pass for MySQL and PostgreSQL SQL generation - [ ] Deploy to test env and verify incidents populate `stable_dimensions` on next alert cycle - [ ] Verify incident logs tab no longer shows the refresh bar - [ ] Verify trace ID extraction works from log correlation in both logs and traces views - [ ] Verify "Records per page" label renders correctly in all locales --------- Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai> Co-authored-by: omkark06 <omkar@zinclabs.io> Co-authored-by: Bhargav <BJP232004@GMAIL.COM> Co-authored-by: Shrinath Rao <shnath@openobserve.ai> |
||
|
|
d021db325b |
fix: Redirection to trace details from logs correlation (#10403)
### **PR Type**
Bug fix, Tests, Enhancement
___
### **Description**
- Preserve log stream when opening trace details
- Auto-select correlated log stream in UI
- Prevent null RUM session replay crash
- Expand TraceDetails mode/prop test coverage
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["TelemetryCorrelationDashboard (embedded trace)"]
B["TraceDetails (embedded)"]
C["TraceDetails route (standalone)"]
D["TraceDetails loadLogStreams auto-select"]
A -- "passes `correlated-log-stream`" --> B
B -- "expand: open new window + `log_stream` query" --> C
C -- "reads `log_stream` query" --> D
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>TraceDetails.vue</strong><dd><code>Preserve correlation
log stream on navigation</code>
</dd></summary>
<hr>
web/src/plugins/traces/TraceDetails.vue
<ul><li>Add <code>correlatedLogStream</code> prop for correlation
context<br> <li> Auto-select <code>log_stream</code> from route
query<br> <li> Fix <code>redirectToSessionReplay</code> null session
guard<br> <li> Open expanded view via <code>router.resolve</code> +
<code>window.open</code></ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10403/files#diff-bc7fe6b6339ee2cde6494c0982d4b860847447e79f7431f07d598e0446df06f2">+135/-77</a></td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>TelemetryCorrelationDashboard.vue</strong><dd><code>Pass
log stream context to TraceDetails</code>
</dd></summary>
<hr>
web/src/plugins/correlation/TelemetryCorrelationDashboard.vue
<ul><li>Provide <code>:correlated-log-stream</code> when embedding
TraceDetails<br> <li> Include <code>log_stream</code> in trace-details
new-window URL<br> <li> Simplify tooltip to use
<code>correlation.viewInTraces</code></ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10403/files#diff-b77a766fa0094f641873071a8f13c73704933b941f387ed105e85a4e59efdb38">+23/-9</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>TraceDetails.spec.ts</strong><dd><code>Add extensive
TraceDetails prop and flow tests</code>
</dd></summary>
<hr>
web/src/plugins/traces/TraceDetails.spec.ts
<ul><li>Add embedded/standalone mode behavior tests<br> <li> Cover
correlation params, expand, and URL building<br> <li> Add edge-case
coverage for redirects and filtering<br> <li> Add RUM span formatting
and search navigation tests</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10403/files#diff-beb61b6b044829d77ec5f0feabdd2b5ff980cc4f2b1ba8a809617b765f086c2b">+1606/-0</a></td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>en.json</strong><dd><code>Remove unused correlation
tooltip translation key</code>
</dd></summary>
<hr>
web/src/locales/languages/en.json
- Delete `correlation.viewInTracesTooltip` string entry
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10403/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+0/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
c2c756613f | fix: servie graph v2 (#10410) | ||
|
|
2075dd0fad |
fix: use jsonb_exists() instead of ? operator for scope conflict SQL (#10429)
### **User description**
## Summary
- Replace PostgreSQL `?` JSONB operator with `jsonb_exists()` function
in service streams scope conflict SQL to avoid ambiguity with
parameterized query placeholders.
## Test plan
- [ ] Verify scope conflict filtering queries work correctly with
`jsonb_exists()`
- [ ] Run existing `service_streams` unit tests
___
### **PR Type**
Bug fix
___
### **Description**
- Replace JSONB `?` with `jsonb_exists()`
- Update Postgres SQL generation for filters
- Adjust unit tests for new SQL
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Scope filters input"]
B["build_scope_conflict_sql (Postgres)"]
C["SQL uses jsonb_exists() checks"]
D["Updated SQL assertions in tests"]
A -- "iterates key/value" --> B
B -- "generates conflict predicates" --> C
C -- "validated by" --> D
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>service_streams.rs</strong><dd><code>Use
`jsonb_exists()` in scope conflict SQL</code>
</dd></summary>
<hr>
src/infra/src/table/service_streams.rs
<ul><li>Generate Postgres conflict checks with
<code>jsonb_exists(dimensions::jsonb, </code><br><code>key)</code><br>
<li> Keep value mismatch logic via <code>dimensions::jsonb->>'{key}' !=
$n</code><br> <li> Update SQL string assertions in related unit
tests</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10429/files#diff-51e4848c872a89ac19b18d5d49292ea20bf23bf71498236a4a4ea147f0600a77">+4/-4</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai>
|
||
|
|
35831659a9 |
fix: use log stream filters for correlated logs query field names
When navigating from traces/logs to the correlated Logs tab, the SQL
query was using trace field names (e.g., service_k8s_statefulset_name)
or semantic IDs (e.g., http-status) instead of the actual log stream
field names (e.g., k8s_statefulset_name).
Use logStreams[0].filters from the _correlate API response which
already contains the correct per-stream field names. Same pattern as
|
||
|
|
b315f4ca08 | feat: dag graph for llm traces (#10388) | ||
|
|
e6d5b6eed5 | fix: ParserError on streams with : in name (#10394) | ||
|
|
2ca1a05458 |
fix: line chart issue with vrl for visualization (#10373)
### **User description** - #10281 ___ ### **PR Type** Bug fix ___ ### **Description** - Store VRL function query as plain text - Restrict VRL usage to table visualizations - Clear VRL when switching off table charts - Prevent histogram queries for table/VRL cases ___ ### Diagram Walkthrough ```mermaid flowchart LR A["Logs visualization update flow"] B["VRL function content"] C["Chart type selection"] D["VRL query stored/cleared"] E["Histogram query decision"] F["Visualization request"] A -- "reads" --> B A -- "finalizes" --> C C -- "gates VRL support" --> D C -- "affects" --> E D -- "influences" --> F E -- "selects query mode" --> F ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>Index.vue</strong><dd><code>Fix VRL persistence and histogram selection</code> </dd></summary> <hr> web/src/plugins/logs/Index.vue <ul><li>Save <code>vrlFunctionQuery</code> without base64 encoding<br> <li> Apply VRL only when chart type <code>table</code><br> <li> Clear stale VRL when chart becomes non-table<br> <li> Recompute histogram eligibility after chart selection</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/10373/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+34/-14</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
71f1d085a3 |
refactor: add a common component for the error/warnings (#10140)
### **PR Type**
Enhancement, Bug fix
___
### **Description**
- Add shared `PanelErrorButtons` UI component
- Replace duplicated panel warning button code
- Show last refreshed and loading warnings
- Wire partial/cached state from renderer
___
### Diagram Walkthrough
```mermaid
flowchart LR
PSR["`PanelSchemaRenderer` emits state"]
VP["`ViewPanel.vue` / `AddPanel.vue` / `Index.vue` / `VisualizeLogsQuery.vue` / `PanelContainer.vue`"]
PEB["`PanelErrorButtons.vue` renders warnings + time"]
PSR -- "emits (partial/loading/cached/lastTriggeredAt)" --> VP
VP -- "passes props" --> PEB
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>PanelContainer.vue</strong><dd><code>Use shared warning
buttons in container</code>
</dd></summary>
<hr>
web/src/components/dashboards/PanelContainer.vue
<ul><li>Replace inline warning/refresh UI with
<code>PanelErrorButtons</code><br> <li> Lazy-load and register
<code>PanelErrorButtons</code> component<br> <li> Pass
error/warning/refresh props to shared component</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10140/files#diff-414737cba6064461f7026e0b016afcb9620bd5bb29c4708fc170dee789dbcd4d">+14/-112</a></td>
</tr>
<tr>
<td>
<details>
<summary><strong>PanelErrorButtons.vue</strong><dd><code>New shared
component for panel warnings</code>
</dd></summary>
<hr>
web/src/components/dashboards/PanelErrorButtons.vue
<ul><li>Add reusable warning/error buttons with tooltips<br> <li>
Include cached/partial-data warnings and icons<br> <li> Add "Last
Refreshed At" display with <code>RelativeTime</code><br> <li> Provide
scoped styles for warning/refresh UI</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10140/files#diff-570007fb3e9612099b25a19987366be1e1bacfe614176bdc146866cb3069a38c">+183/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>ViewPanel.vue</strong><dd><code>Centralize view panel
warning indicators</code>
</dd></summary>
<hr>
web/src/components/dashboards/viewPanel/ViewPanel.vue
<ul><li>Replace local tooltip buttons with
<code>PanelErrorButtons</code><br> <li> Listen to renderer events for
partial/loading/cached state<br> <li> Track new reactive flags and
expose to template<br> <li> Lazy-load/register
<code>PanelErrorButtons</code> component</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10140/files#diff-e7b26fbbfe7ae57f50377c0f002155df17109ea54708b0f134dd2005356b2930">+40/-64</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>VisualizeLogsQuery.vue</strong><dd><code>Reuse warning
buttons in logs visualize</code>
</dd></summary>
<hr>
web/src/plugins/logs/VisualizeLogsQuery.vue
<ul><li>Adjust panel layout spacing for new header height<br> <li> Add
<code>PanelErrorButtons</code> beside action buttons<br> <li> Track
<code>lastTriggeredAt</code>, partial/loading/cached flags<br> <li> Wire
additional <code>PanelSchemaRenderer</code> event handlers</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10140/files#diff-979b01d943d58c5d70faeeac5948b7f02f0b2392a12b84ef07ba7f7393ab0261">+56/-62</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>AddPanel.vue</strong><dd><code>Reuse warning buttons in
add panel view</code>
</dd></summary>
<hr>
web/src/views/Dashboards/addPanel/AddPanel.vue
<ul><li>Replace inline error/warning/refresh UI with
<code>PanelErrorButtons</code><br> <li> Add
<code>PanelErrorButtons</code> near errors sidebar area<br> <li> Track
partial/loading/cached state via renderer events<br> <li>
Lazy-load/register <code>PanelErrorButtons</code> component</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10140/files#diff-c9632db1ad95af95aba10161bcbc7c5608318919f228637bdafae3f3a31267e8">+55/-65</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Bug fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>Index.vue</strong><dd><code>Unify metrics panel
warnings and refresh</code>
</dd></summary>
<hr>
web/src/plugins/metrics/Index.vue
<ul><li>Move "last refreshed" into <code>PanelErrorButtons</code><br>
<li> Add <code>PanelErrorButtons</code> to both panel layouts<br> <li>
Wire partial/loading/cached and series-limit warnings<br> <li> Adjust
panel top spacing and header positioning</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10140/files#diff-a6734928ea4dcb5244e90de5a16fe6f5cafa95ccf58430ac7b548a065daf3d61">+78/-12</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
740fd6816c |
fix: minor UI issues (#10377)
### **User description** This Pr fixes the #10110 , #10345 , #9908 ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Fix org dropdown fixed-height layout - Improve alert cloning modal spacing/alignment - Add tooltips for truncated select values - Correct `search_history.results` i18n key ___ ### Diagram Walkthrough ```mermaid flowchart LR header["Header org dropdown"] alerts["Alerts UI (clone/settings)"] templates["Template select layout + tooltip"] history["Search History UI + i18n"] i18n["Locale JSON updates"] header -- "fixed height" --> header alerts -- "spacing tweaks" --> alerts templates -- "ellipsis + tooltip" --> templates history -- "tab container classes" --> history history -- "rename key to `results`" --> i18n ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Bug fix</strong></td><td><details><summary>3 files</summary><table> <tr> <td><strong>Header.vue</strong><dd><code>Set fixed height for org dropdown table</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10377/files#diff-d2152ac954fdd715c1562bd834bcf6f3d79c64fc2e7ac5315279d29af1ffd4d2">+1/-1</a> </td> </tr> <tr> <td><strong>AlertSettings.vue</strong><dd><code>Add tooltips and fix template select layout</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10377/files#diff-1d5bfd6a1ea672884193649b1271d751d6f3b8ec84af759071c9bfd169a8ab28">+35/-3</a> </td> </tr> <tr> <td><strong>en.json</strong><dd><code>Rename `resuls` to `results` key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10377/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+1/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>AlertList.vue</strong><dd><code>Tweak clone dialog padding and actions alignment</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10377/files#diff-be3e41b823e163b226ffc270d95cc4981e59c600851e4e0d10ee5e4ee994ac8e">+2/-2</a> </td> </tr> <tr> <td><strong>SearchHistory.vue</strong><dd><code>Update expanded row tabs container styling</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10377/files#diff-9dd167bd5e272b2057f53c16b905047eec00655a3552daad240a964d67a6f56d">+3/-3</a> </td> </tr> </table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>10 files</summary><table> <tr> <td><strong>de.json</strong><dd><code>Add `search_history.results` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10377/files#diff-78f24ecb2dbcfc38fdf3ec22b2559a5b40d236ea689d1c55f5d3e87168310264">+2/-1</a> </td> </tr> <tr> <td><strong>es.json</strong><dd><code>Add `search_history.results` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10377/files#diff-ac2a2167b8b973e3f776f9fe3b43bef4576470d8ad33f3d7cfaff6edff0e5778">+2/-1</a> </td> </tr> <tr> <td><strong>fr.json</strong><dd><code>Add `search_history.results` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10377/files#diff-db80e762b88ddf183820c050cdc6b215e6b02b365b5e73f5152af46b0d26f1a2">+2/-1</a> </td> </tr> <tr> <td><strong>it.json</strong><dd><code>Add `search_history.results` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10377/files#diff-2de78074a5f887afddce60d694ead9322e6ab223eb70251c13819f3028bdc70d">+2/-1</a> </td> </tr> <tr> <td><strong>ja.json</strong><dd><code>Add `search_history.results` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10377/files#diff-092e49c5f9fbc1b539ab9c2866d108d0ce1d314022b4c294eb4611b285e7bbd3">+2/-1</a> </td> </tr> <tr> <td><strong>ko.json</strong><dd><code>Add `search_history.results` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10377/files#diff-50e27ca1b4825a5026f3a251bfcf79c97cab07cfade2ebd512d332453d707c48">+2/-1</a> </td> </tr> <tr> <td><strong>nl.json</strong><dd><code>Add `search_history.results` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10377/files#diff-a1706021687ae5d8a1c006c49eab3946174fecd895f9b70a89c2e76d97250906">+2/-1</a> </td> </tr> <tr> <td><strong>pt.json</strong><dd><code>Add `search_history.results` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10377/files#diff-38e804f64cb5e0e451849fc84e9b46e53c954a4a4263d51c18665ad45f4b4815">+2/-1</a> </td> </tr> <tr> <td><strong>tr.json</strong><dd><code>Add `search_history.results` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10377/files#diff-6f0f131e9e2591480c4c5d1eaffc72d02dc31cbd8d3f90d8f012f08cabac8818">+2/-1</a> </td> </tr> <tr> <td><strong>zh.json</strong><dd><code>Add `search_history.results` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10377/files#diff-8818055db58f83230aeea4ebfd4cec31d924e8c47b6f91298e356959ab25339e">+2/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|
|
1bc1b4b6a6 |
fix: insights UI changes (#10322)
### **PR Type** Enhancement ___ ### **Description** - Add collapsible dimension sidebar in analysis - Introduce `simplifiedPanelView` for dashboards - Disable drag/resize and hide controls - Add `dimensionsSelected` locale strings ___ ### Diagram Walkthrough ```mermaid flowchart LR tad["TracesAnalysisDashboard: splitter + dimension sidebar"] rdc["RenderDashboardCharts: `simplifiedPanelView` support"] pc["PanelContainer: simplified controls + delete"] loc["Locales: add `latencyInsights.dimensionsSelected`"] tad -- "renders dashboards in simplified mode" --> rdc rdc -- "passes prop to panels" --> pc tad -- "shows selected-count label" --> loc ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>3 files</summary><table> <tr> <td><strong>PanelContainer.vue</strong><dd><code>Hide edit/drag UI in simplified view</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10322/files#diff-414737cba6064461f7026e0b016afcb9620bd5bb29c4708fc170dee789dbcd4d">+32/-13</a> </td> </tr> <tr> <td><strong>TracesAnalysisDashboard.vue</strong><dd><code>Replace dimension dialog with splitter sidebar</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10322/files#diff-d27dd619532ec278c376c09a05d5106fdb38863c3aa1c56e109fc2145a8a5a3a">+266/-138</a></td> </tr> <tr> <td><strong>RenderDashboardCharts.vue</strong><dd><code>Add `simplifiedPanelView` and disable GridStack</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10322/files#diff-313f7c69102161242c893c863c50f1f1cd1fc19b68b5c99bf840b4b5c72f0f2e">+10/-4</a> </td> </tr> </table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>11 files</summary><table> <tr> <td><strong>de.json</strong><dd><code>Add `dimensionsSelected` latency insights translation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10322/files#diff-78f24ecb2dbcfc38fdf3ec22b2559a5b40d236ea689d1c55f5d3e87168310264">+2/-1</a> </td> </tr> <tr> <td><strong>en.json</strong><dd><code>Add `dimensionsSelected` latency insights translation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10322/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+2/-1</a> </td> </tr> <tr> <td><strong>es.json</strong><dd><code>Add `dimensionsSelected` latency insights translation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10322/files#diff-ac2a2167b8b973e3f776f9fe3b43bef4576470d8ad33f3d7cfaff6edff0e5778">+2/-1</a> </td> </tr> <tr> <td><strong>fr.json</strong><dd><code>Add `dimensionsSelected` latency insights translation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10322/files#diff-db80e762b88ddf183820c050cdc6b215e6b02b365b5e73f5152af46b0d26f1a2">+2/-1</a> </td> </tr> <tr> <td><strong>it.json</strong><dd><code>Add `dimensionsSelected` latency insights translation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10322/files#diff-2de78074a5f887afddce60d694ead9322e6ab223eb70251c13819f3028bdc70d">+2/-1</a> </td> </tr> <tr> <td><strong>ja.json</strong><dd><code>Add `dimensionsSelected` latency insights translation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10322/files#diff-092e49c5f9fbc1b539ab9c2866d108d0ce1d314022b4c294eb4611b285e7bbd3">+2/-1</a> </td> </tr> <tr> <td><strong>ko.json</strong><dd><code>Add `dimensionsSelected` latency insights translation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10322/files#diff-50e27ca1b4825a5026f3a251bfcf79c97cab07cfade2ebd512d332453d707c48">+2/-1</a> </td> </tr> <tr> <td><strong>nl.json</strong><dd><code>Add `dimensionsSelected` latency insights translation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10322/files#diff-a1706021687ae5d8a1c006c49eab3946174fecd895f9b70a89c2e76d97250906">+2/-1</a> </td> </tr> <tr> <td><strong>pt.json</strong><dd><code>Add `dimensionsSelected` latency insights translation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10322/files#diff-38e804f64cb5e0e451849fc84e9b46e53c954a4a4263d51c18665ad45f4b4815">+2/-1</a> </td> </tr> <tr> <td><strong>tr.json</strong><dd><code>Add `dimensionsSelected` latency insights translation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10322/files#diff-6f0f131e9e2591480c4c5d1eaffc72d02dc31cbd8d3f90d8f012f08cabac8818">+2/-1</a> </td> </tr> <tr> <td><strong>zh.json</strong><dd><code>Add `dimensionsSelected` latency insights translation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10322/files#diff-8818055db58f83230aeea4ebfd4cec31d924e8c47b6f91298e356959ab25339e">+2/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|
|
c50d3906d4 | fix: In trace-details added validation for _rumdata stream (#10366) | ||
|
|
21155591fd | feat: map otel field to openobserve field (#10213) | ||
|
|
06cd64df9b |
fix: organization update fix (#10356)
### **PR Type**
Bug fix
___
### **Description**
- Refresh organizations store after invitation accept
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["User accepts invitation"]
B["Process subscription confirm"]
C["Fetch updated organizations list"]
D["Update store organizations"]
E["Dismiss dialog + notify success"]
A -- "triggers" --> B
B -- "on success" --> C
C -- "dispatch" --> D
D -- "continue UX flow" --> E
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>InvitationList.vue</strong><dd><code>Refresh org store
after invitation acceptance</code>
</dd></summary>
<hr>
web/src/components/iam/users/InvitationList.vue
<ul><li>Fetch latest organizations after confirmation<br> <li> Dispatch
<code>setOrganizations</code> with refreshed data</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10356/files#diff-ee97546ff1aba36cc0b24cb20782502c7c88279850cc3d540ea5685209f10702">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: omkark06 <omkar@zinclabs.io>
|
||
|
|
4c080dfd5f |
fix: alert graph edges not rendering due to timestamp equality (#10347)
### **User description** ## Problem Fixes openobserve/o2-enterprise#1229 Alert graphs were not rendering edges (arrows) when nodes had identical timestamps, causing the topology graph to show nodes without connections. ## Root Cause The edge creation logic used strict timestamp inequality (`<`, `>`), which failed when alerts fired at the exact same microsecond. This commonly occurs with: - High-frequency alerting - Bulk alert ingestion - Simulated/test data with fixed timestamps - Clock resolution limitations ## Solution Added timestamp tiebreaker logic using node index (insertion order) for all three edge creation scenarios: 1. **Same-service temporal edges**: Connect to most recent previous node, use index as tiebreaker 2. **Cross-service temporal edges**: Connect to chronologically closest node, use index as tiebreaker 3. **Service dependency edges**: Connect related services, use index as tiebreaker ## Changes - `src/service/alerts/incidents.rs`: Updated 3 edge creation locations with timestamp + index comparisons ## Impact - ✅ Edges now created even when alerts have identical timestamps - ✅ Deterministic behavior based on insertion order - ✅ Graph visualization shows proper alert flow with arrows - ✅ Root cause analysis now possible ## Testing - Verified code compiles successfully - Manual testing recommended with alerts at same timestamp ___ ### **PR Type** Bug fix ___ ### **Description** - Add tiebreaker for equal timestamps - Ensure deterministic topology edge creation - Fix missing incident graph arrows ___ ### Diagram Walkthrough ```mermaid flowchart LR A["New alert node added"] --> B["Find candidate prior/next nodes"] B --> C["Compare (first_fired_at, node_index)"] C --> D["Create temporal/dependency edges deterministically"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>incidents.rs</strong><dd><code>Deterministic edge creation for equal timestamps</code> </dd></summary> <hr> src/service/alerts/incidents.rs <ul><li>Add index-based tiebreaker for same-service edges<br> <li> Allow dependency edges when timestamps equal<br> <li> Refine cross-service temporal matching with index<br> <li> Update ordering keys to include node index</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/10347/files#diff-2411d921fd8b8783c049deea11da06726ed986550d405477d486234892353ca9">+17/-5</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
d7c0874084 |
fix: vrl warning message on visualization page (#10343)
### **User description** - #10281 ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Disable VRL editor for non-table visualizations - Show inline warning instead of blocking switch - Remove forced table chart on VRL usage ___ ### Diagram Walkthrough ```mermaid flowchart LR A["SearchBar VRL editor"] B["isVrlEditorDisabled computed"] C["Read-only editor state"] D["Inline disabled warning"] E["Chart type switch validation"] F["Allow non-table without forcing table"] A -- "adds" --> B B -- "controls" --> C B -- "renders" --> D E -- "removes VRL blocking logic" --> F ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table> <tr> <td> <details> <summary><strong>SearchBar.vue</strong><dd><code>Disable VRL editor and show warning</code> </dd></summary> <hr> web/src/plugins/logs/SearchBar.vue <ul><li>Bind VRL editor <code>readOnly</code> to <code>isVrlEditorDisabled</code><br> <li> Add warning banner when VRL is disabled<br> <li> Compute disable state for visualize non-table<br> <li> Export <code>isVrlEditorDisabled</code> to template</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/10343/files#diff-81893de4edf186b0556f610acb280c87baa2ffe67d3b48a60a866094c7635baf">+37/-1</a> </td> </tr> </table></td></tr><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>VisualizeLogsQuery.vue</strong><dd><code>Remove VRL-based chart type restriction</code> </dd></summary> <hr> web/src/plugins/logs/VisualizeLogsQuery.vue <ul><li>Delete blocking logic when switching from table<br> <li> Stop forcing <code>dashboardPanelData.data.type = "table"</code><br> <li> Keep only select-* validation before type change</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/10343/files#diff-979b01d943d58c5d70faeeac5948b7f02f0b2392a12b84ef07ba7f7393ab0261">+0/-14</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
dfb84780a1 |
fix: issue 10319 values api for sql mode multi stream selection (#10323)
issue #10319 ### **PR Type** Bug fix, Tests ___ ### **Description** - Add fallback for unparseable UNION queries - Prevent empty `query_context` in sqlMode - Add tests for UNION parse/unparse safety ___ ### Diagram Walkthrough ```mermaid flowchart LR UI["IndexList.vue openFilterCreator"] Parser["fnParsedSQL(query)"] Unparser["fnUnparsedSQL(parsedSQL)"] DetectFail["Detect empty columns/from"] Fallback["Fallback: SELECT * FROM \"[INDEX_NAME]\""] ValuesAPI["Values API field query context"] UI -- "parse query" --> Parser Parser -- "parsedSQL" --> Unparser Unparser -- "query_context" --> DetectFail DetectFail -- "if unparseable" --> Fallback Fallback -- "safe query_context" --> ValuesAPI ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><table> <tr> <td> <details> <summary><strong>logsUtils.spec.ts</strong><dd><code>Add UNION parsing/unparsing regression tests</code> </dd></summary> <hr> web/src/test/unit/composables/logsUtils.spec.ts <ul><li>Add unit tests for UNION/UNION ALL parsing<br> <li> Cover unsupported <code>UNION ALL BY NAME</code> cases<br> <li> Assert <code>fnUnparsedSQL</code> returns empty on errors<br> <li> Simulate openFilterCreator fallback flow behavior</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/10323/files#diff-4492d9abd2bc95897c46f6ed177f3298bda9f1419dc91b07e2aa1409b598bb7f">+245/-0</a> </td> </tr> </table></td></tr><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>IndexList.vue</strong><dd><code>Add fallback query_context for UNION parse failures</code> </dd></summary> <hr> web/src/plugins/logs/IndexList.vue <ul><li>Detect SQL parser failures via empty <code>columns</code>/<code>from</code><br> <li> Provide <code>SELECT * FROM "[INDEX_NAME]"</code> fallback<br> <li> Ensure <code>query_context</code> is non-empty for values flow</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/10323/files#diff-08f058f883b659e713e606991a7ea37ae1ff016b7cccef970489ab5840dc3d09">+12/-0</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
7d9da6d47f |
fix: Logs correlation traces list UI improvements (#10328)
### **PR Type** Enhancement, Bug fix ___ ### **Description** - Replace correlated traces table with `TraceBlock` list - Add `View in Traces` navigation button - Centralize trace metadata formatting in `useTraces` - Add i18n strings for correlation actions ___ ### Diagram Walkthrough ```mermaid flowchart LR U["`useTraces`: `formatTracesMetaData` + service colors"] C["TelemetryCorrelationDashboard: correlated traces UI"] B["`TraceBlock` list rendering"] D["Open single trace: `traceDetails` route"] T["Open traces list: `traces` route"] I["Traces `Index.vue`: reuse formatter"] L["Locales: add `viewInTraces` strings"] C -- "formats API hits" --> U I -- "formats API hits" --> U C -- "renders traces" --> B C -- "open trace in new tab" --> D C -- "view all correlated traces" --> T C -- "button/tooltip text" --> L ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>3 files</summary><table> <tr> <td><strong>useTraces.ts</strong><dd><code>Add reusable trace metadata formatter</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-1cf652f1e074a135294702959cf09fd96a1ed13e661ee3bc85266dbb1909c1a7">+74/-0</a> </td> </tr> <tr> <td><strong>TelemetryCorrelationDashboard.vue</strong><dd><code>Replace traces table with `TraceBlock` list</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-b77a766fa0094f641873071a8f13c73704933b941f387ed105e85a4e59efdb38">+98/-289</a></td> </tr> <tr> <td><strong>Index.vue</strong><dd><code>Reuse `useTraces` trace formatting logic</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-952e26660e4d6aadd292ea2ef7b314e139a4f516d0b3931e20d42d6394700d07">+8/-43</a> </td> </tr> </table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>11 files</summary><table> <tr> <td><strong>de.json</strong><dd><code>Add correlation “View in Traces” strings</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-78f24ecb2dbcfc38fdf3ec22b2559a5b40d236ea689d1c55f5d3e87168310264">+3/-1</a> </td> </tr> <tr> <td><strong>en.json</strong><dd><code>Add correlation “View in Traces” strings</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+2/-0</a> </td> </tr> <tr> <td><strong>es.json</strong><dd><code>Add correlation “View in Traces” strings</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-ac2a2167b8b973e3f776f9fe3b43bef4576470d8ad33f3d7cfaff6edff0e5778">+3/-1</a> </td> </tr> <tr> <td><strong>fr.json</strong><dd><code>Add correlation “View in Traces” strings</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-db80e762b88ddf183820c050cdc6b215e6b02b365b5e73f5152af46b0d26f1a2">+3/-1</a> </td> </tr> <tr> <td><strong>it.json</strong><dd><code>Add correlation “View in Traces” strings</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-2de78074a5f887afddce60d694ead9322e6ab223eb70251c13819f3028bdc70d">+3/-1</a> </td> </tr> <tr> <td><strong>ja.json</strong><dd><code>Add correlation “View in Traces” strings</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-092e49c5f9fbc1b539ab9c2866d108d0ce1d314022b4c294eb4611b285e7bbd3">+3/-1</a> </td> </tr> <tr> <td><strong>ko.json</strong><dd><code>Add correlation “View in Traces” strings</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-50e27ca1b4825a5026f3a251bfcf79c97cab07cfade2ebd512d332453d707c48">+3/-1</a> </td> </tr> <tr> <td><strong>nl.json</strong><dd><code>Add correlation “View in Traces” strings</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-a1706021687ae5d8a1c006c49eab3946174fecd895f9b70a89c2e76d97250906">+3/-1</a> </td> </tr> <tr> <td><strong>pt.json</strong><dd><code>Add correlation “View in Traces” strings</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-38e804f64cb5e0e451849fc84e9b46e53c954a4a4263d51c18665ad45f4b4815">+3/-1</a> </td> </tr> <tr> <td><strong>tr.json</strong><dd><code>Add correlation “View in Traces” strings</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-6f0f131e9e2591480c4c5d1eaffc72d02dc31cbd8d3f90d8f012f08cabac8818">+3/-1</a> </td> </tr> <tr> <td><strong>zh.json</strong><dd><code>Add correlation “View in Traces” strings</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-8818055db58f83230aeea4ebfd4cec31d924e8c47b6f91298e356959ab25339e">+3/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|
|
7df19cb00a |
fix: incident graphs and service graphs improvements (#10318)
### **User description**
## Changes
### 1. Reduce alert graph edge explosion
- Modified temporal edge logic to prevent O(n²) growth
- Changed same-service edges to only connect to most recent previous
alert
- Changed cross-service temporal edges to connect to chronologically
closest alert
- **Impact**: 88% reduction in edges (16 instead of 136 for 17 alerts)
### 2. Improve correlation error handling
- Added fallback mechanism when service registry is empty
- Better error messages for correlation failures
- Enhanced incident detail view with clearer feedback
**Files modified:**
- `src/service/alerts/incidents.rs`
- Incident correlation handling
___
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Prevent alert topology edge explosion
- Add frontend fallback incident correlation
- Improve correlation tab empty/error UX
- Share time/stream state across tabs
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Incident alerts ingested"]
B["Topology enrichment"]
C["Same-service temporal chain"]
D["Cross-service edges"]
E["ServiceGraph tab shared state"]
F["Incident detail correlation"]
G["FQN-priority drift detection"]
H["Frontend fallback correlation"]
A -- "build graph" --> B
B -- "temporal edges" --> C
B -- "dependency edges" --> D
E -- "share datetime/stream" --> B
F -- "fetch correlated streams" --> G
G -- "if not drift" --> H
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>convertTraceData.ts</strong><dd><code>Simplify
service-graph tree request metrics</code>
</dd></summary>
<hr>
web/src/utils/traces/convertTraceData.ts
<ul><li>Use incoming edge metrics for non-root<br> <li> Root sums
outgoing edge request counts<br> <li> Default root error rate to
zero<br> <li> Keep connection count as in+out</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10318/files#diff-f236b4107f8b11c8281dec8279238d02309a3c958bd1ee2076716df56b00c057">+5/-6</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>incidents.rs</strong><dd><code>Limit temporal topology
edges to nearest alerts</code>
</dd></summary>
<hr>
src/service/alerts/incidents.rs
<ul><li>Same-service temporal edge targets most recent prior<br> <li>
Keep full ServiceDependency edges when SG edge exists<br> <li> For
non-dependent services, link to closest later alert<br> <li> Avoid
duplicate edges with type-specific checks</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10318/files#diff-2411d921fd8b8783c049deea11da06726ed986550d405477d486234892353ca9">+80/-47</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>IncidentDetailDrawer.vue</strong><dd><code>Add fallback
correlation and improve tab states</code>
</dd></summary>
<hr>
web/src/components/alerts/IncidentDetailDrawer.vue
<ul><li>Show refresh header only when streams exist<br> <li> Unify
error/no-data states with clearer messaging<br> <li> Detect FQN priority
changes post-incident creation<br> <li> Build frontend fallback
correlation from schema mapping</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10318/files#diff-6973d58a5f49658b07d3533d4db5d32cc6430433b51732481e7497243dadb0b0">+217/-72</a></td>
</tr>
<tr>
<td>
<details>
<summary><strong>ServiceGraph.vue</strong><dd><code>Share Service Graph
time/stream with traces state</code>
</dd></summary>
<hr>
web/src/plugins/traces/ServiceGraph.vue
<ul><li>Bind datetime picker to <code>searchObj.data.datetime</code><br>
<li> Use shared <code>searchObj.data.stream.*</code> for stream
lists<br> <li> Remove local stream/time state and duplicate stream
loading<br> <li> Simplify empty-state guidance and code styling</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10318/files#diff-da1aabfbe74e57c02db16fc5d3e00cd76dc76bf0ad9b57f9dfda7d6d9da06129">+50/-181</a></td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai>
|
||
|
|
054cf84e9b |
fix: Logs telemetry correlation traces improvements (#10316)
### **PR Type** Enhancement, Bug fix ___ ### **Description** - Embed `TraceDetails` into correlation traces - Add standalone/embedded modes to `TraceDetails` - Enable “Open in Traces” navigation - Update i18n for new label ___ ### Diagram Walkthrough ```mermaid flowchart LR tcd["TelemetryCorrelationDashboard (correlation UI)"] td["TraceDetails (standalone/embedded)"] tds["TraceDetailsSidebar (mode-aware)"] rtr["Router: `traces` route"] i18n["Locales: `traces.openInTraces`"] tcd -- "passes trace id, spans, time range" --> td td -- "renders sidebar with `parentMode`" --> tds td -- "expand/open in traces" --> rtr td -- "uses label" --> i18n ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>TelemetryCorrelationDashboard.vue</strong><dd><code>Replace spans table with embedded TraceDetails</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-b77a766fa0094f641873071a8f13c73704933b941f387ed105e85a4e59efdb38">+99/-233</a></td> </tr> <tr> <td><strong>TraceDetails.vue</strong><dd><code>Add embedded mode and conditional UI</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-bc7fe6b6339ee2cde6494c0982d4b860847447e79f7431f07d598e0446df06f2">+391/-109</a></td> </tr> </table></details></td></tr><tr><td><strong>Bug fix</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>TraceDetailsSidebar.vue</strong><dd><code>Hide standalone-only actions in embedded mode</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-0017bc08d8da96af6433770d0b274f825798d24401b33ce091b16a50fbaf4b57">+14/-3</a> </td> </tr> </table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>11 files</summary><table> <tr> <td><strong>de.json</strong><dd><code>Add `traces.openInTraces` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-78f24ecb2dbcfc38fdf3ec22b2559a5b40d236ea689d1c55f5d3e87168310264">+2/-1</a> </td> </tr> <tr> <td><strong>en.json</strong><dd><code>Add `traces.openInTraces` base string</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+1/-0</a> </td> </tr> <tr> <td><strong>es.json</strong><dd><code>Add `traces.openInTraces` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-ac2a2167b8b973e3f776f9fe3b43bef4576470d8ad33f3d7cfaff6edff0e5778">+2/-1</a> </td> </tr> <tr> <td><strong>fr.json</strong><dd><code>Add `traces.openInTraces` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-db80e762b88ddf183820c050cdc6b215e6b02b365b5e73f5152af46b0d26f1a2">+2/-1</a> </td> </tr> <tr> <td><strong>it.json</strong><dd><code>Add `traces.openInTraces` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-2de78074a5f887afddce60d694ead9322e6ab223eb70251c13819f3028bdc70d">+2/-1</a> </td> </tr> <tr> <td><strong>ja.json</strong><dd><code>Add `traces.openInTraces` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-092e49c5f9fbc1b539ab9c2866d108d0ce1d314022b4c294eb4611b285e7bbd3">+2/-1</a> </td> </tr> <tr> <td><strong>ko.json</strong><dd><code>Add `traces.openInTraces` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-50e27ca1b4825a5026f3a251bfcf79c97cab07cfade2ebd512d332453d707c48">+2/-1</a> </td> </tr> <tr> <td><strong>nl.json</strong><dd><code>Add `traces.openInTraces` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-a1706021687ae5d8a1c006c49eab3946174fecd895f9b70a89c2e76d97250906">+2/-1</a> </td> </tr> <tr> <td><strong>pt.json</strong><dd><code>Add `traces.openInTraces` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-38e804f64cb5e0e451849fc84e9b46e53c954a4a4263d51c18665ad45f4b4815">+2/-1</a> </td> </tr> <tr> <td><strong>tr.json</strong><dd><code>Add `traces.openInTraces` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-6f0f131e9e2591480c4c5d1eaffc72d02dc31cbd8d3f90d8f012f08cabac8818">+2/-1</a> </td> </tr> <tr> <td><strong>zh.json</strong><dd><code>Add `traces.openInTraces` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-8818055db58f83230aeea4ebfd4cec31d924e8c47b6f91298e356959ab25339e">+2/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|
|
a621982d32 |
fix: 10310 tanstack table implementation on logs tab in traces detail page (#10311)
### **PR Type** Enhancement ___ ### **Description** - Introduce `hideDimensionFilters` prop for correlated logs - Conditionally render dimension filters in tables - Update UI layouts: container height and sidebar widths - Replace `TelemetryCorrelationDashboard` with `CorrelatedLogsTable` - Add span selection highlighting and reload logic on span change ___ <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>7 files</summary><table> <tr> <td><strong>useCorrelatedLogs.ts</strong><dd><code>Add `hideDimensionFilters` to CorrelatedLogsProps</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10311/files#diff-310992fb4914c6eaffbbce225e0c0683c2edad2bb0ab0f8e43530fc38152ed2a">+1/-0</a> </td> </tr> <tr> <td><strong>CorrelatedLogsTable.vue</strong><dd><code>Conditionally render dimension filters in table</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10311/files#diff-57e0ec3ac2762de21e67254edf83a4559490f717a8826762c0566fa3b70b6fb8">+2/-1</a> </td> </tr> <tr> <td><strong>TelemetryCorrelationDashboard.vue</strong><dd><code>Add filter toggle in TelemetryCorrelationDashboard props</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10311/files#diff-b77a766fa0094f641873071a8f13c73704933b941f387ed105e85a4e59efdb38">+2/-0</a> </td> </tr> <tr> <td><strong>DetailTable.vue</strong><dd><code>Pass `hide-dimension-filters` to logs correlation table</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10311/files#diff-80552b5d25fa6cef9fbbe430b1865d761c4b132284c2d2175afceea8cbabc8c7">+3/-0</a> </td> </tr> <tr> <td><strong>TraceDetails.vue</strong><dd><code>Adjust sidebar widths and pass `selectedSpanId`</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10311/files#diff-bc7fe6b6339ee2cde6494c0982d4b860847447e79f7431f07d598e0446df06f2">+18/-7</a> </td> </tr> <tr> <td><strong>TraceDetailsSidebar.vue</strong><dd><code>Replace dashboard with `CorrelatedLogsTable` in sidebar</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10311/files#diff-0017bc08d8da96af6433770d0b274f825798d24401b33ce091b16a50fbaf4b57">+12/-6</a> </td> </tr> <tr> <td><strong>TraceTree.vue</strong><dd><code>Add span selection highlight and hover logic</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10311/files#diff-5d1fa8ba4d433439860b4bc036fb80e3e1b51948616dc04b1bfd1f9110a87091">+26/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
c34988a3ea |
fix: insights traces changes (#10304)
### **PR Type** Enhancement ___ ### **Description** - Introduce `timeStart`/`timeEnd` in filters - Enable baseline-only and comparison modes - Conditional single vs comparison query logic - Always show Insights button and update translations ___ ### Diagram Walkthrough ```mermaid flowchart LR start["Open analysis"] start -- "Has time filters?" --> comp["Comparison mode"] start -- "No time filters" --> base["Baseline-only mode"] comp -- "Query both ranges" --> merge["Merge & score"] base -- "Use baseline only" --> sort["Sort by baseline percent"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>3 files</summary><table> <tr> <td><strong>useLatencyInsightsAnalysis.ts</strong><dd><code>Support time-based filters and baseline-only mode</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-343474bc1f120f5ecebfc595bf0d3151b2db096d9226369c496b7a0cfaa33899">+87/-54</a> </td> </tr> <tr> <td><strong>useLatencyInsightsDashboard.ts</strong><dd><code>Conditional single/comparison query generation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-960dec4a653d7c079157499a2473d0e87bd8b61463e1c3f633e7682ba763a4b1">+58/-7</a> </td> </tr> <tr> <td><strong>TracesMetricsDashboard.vue</strong><dd><code>Always show Insights button and update labels</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-7b6f29a2737d9501b18dbd8622eba4965e4bc2b92115627ae7d2e70cc3382087">+68/-54</a> </td> </tr> </table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>11 files</summary><table> <tr> <td><strong>de.json</strong><dd><code>Add `volumeInsights.insightsButtonLabel` translation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-78f24ecb2dbcfc38fdf3ec22b2559a5b40d236ea689d1c55f5d3e87168310264">+3/-1</a> </td> </tr> <tr> <td><strong>en.json</strong><dd><code>Add insights translation keys to English</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+2/-0</a> </td> </tr> <tr> <td><strong>es.json</strong><dd><code>Add insights translation keys to Spanish</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-ac2a2167b8b973e3f776f9fe3b43bef4576470d8ad33f3d7cfaff6edff0e5778">+3/-1</a> </td> </tr> <tr> <td><strong>fr.json</strong><dd><code>Add insights translation keys to French</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-db80e762b88ddf183820c050cdc6b215e6b02b365b5e73f5152af46b0d26f1a2">+3/-1</a> </td> </tr> <tr> <td><strong>it.json</strong><dd><code>Add insights translation keys to Italian</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-2de78074a5f887afddce60d694ead9322e6ab223eb70251c13819f3028bdc70d">+3/-1</a> </td> </tr> <tr> <td><strong>ja.json</strong><dd><code>Add insights translation keys to Japanese</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-092e49c5f9fbc1b539ab9c2866d108d0ce1d314022b4c294eb4611b285e7bbd3">+3/-1</a> </td> </tr> <tr> <td><strong>ko.json</strong><dd><code>Add insights translation keys to Korean</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-50e27ca1b4825a5026f3a251bfcf79c97cab07cfade2ebd512d332453d707c48">+3/-1</a> </td> </tr> <tr> <td><strong>nl.json</strong><dd><code>Add insights translation keys to Dutch</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-a1706021687ae5d8a1c006c49eab3946174fecd895f9b70a89c2e76d97250906">+3/-1</a> </td> </tr> <tr> <td><strong>pt.json</strong><dd><code>Add insights translation keys to Portuguese</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-38e804f64cb5e0e451849fc84e9b46e53c954a4a4263d51c18665ad45f4b4815">+3/-1</a> </td> </tr> <tr> <td><strong>tr.json</strong><dd><code>Add insights translation keys to Turkish</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-6f0f131e9e2591480c4c5d1eaffc72d02dc31cbd8d3f90d8f012f08cabac8818">+3/-1</a> </td> </tr> <tr> <td><strong>zh.json</strong><dd><code>Add insights translation keys to Chinese</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-8818055db58f83230aeea4ebfd4cec31d924e8c47b6f91298e356959ab25339e">+3/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |