Neha P
9f2e8c87d5
test: index-type-testcases ( #9115 )
...
1. Verify stream detail access and index type options - Test stream
navigation and available configuration options
2. Verify validation error when selecting both index types - Test
business rule enforcement for conflicting field configurations
3. Verify index type clearing mechanism works - Test ability to clear
field index selections after validation errors
2025-11-14 19:00:35 +05:30
ktx-akshay
83ce0cf0d4
test: add test coverage for dashboard camelCase zero value issue ( #9119 )
...
…L queries
2025-11-14 16:57:37 +05:30
Neha P and Shrinath Rao
4901605a2c
test: e2e-cmd+enter tests ( #9098 )
...
1. Blank SQL Query Error - Verifies proper error message when cmd+enter
pressed with empty SQL query
2. Include/Exclude Terms Persistence - Ensures search terms remain
visible in log details after query execution
3. API Call Optimization - Validates cmd+enter makes exactly 1 search +
1 histogram call (no duplicates)
4. Editor Cursor Integrity - Confirms cmd+enter doesn't add unwanted
characters to Monaco editor
---------
Co-authored-by: Shrinath Rao <shnath@openobserve.ai >
2025-11-13 14:49:59 +05:30
Shrinath Rao
a4dd576df4
test: unskipped 2 pipeline-core tests ( #9085 )
2025-11-13 07:30:32 +05:30
ktx-akshay
f665228a1b
test: stabilize flaky dashboard test cases ( #9048 )
...
…ging
2025-11-12 22:21:53 +05:30
dd92d33ac0
test: fix sdr patterns locator ( #9076 )
...
Co-authored-by: Priyabrata Das <pryabrata@altimate.ai >
Co-authored-by: Shrinath Rao <shnath@openobserve.ai >
Co-authored-by: Neha P <neha@openobserve.ai >
2025-11-12 18:22:22 +05:30
Subhra264 and Shrinath Rao
683bf89c7b
test: Add tests for alerts and pipelines history ( #9064 )
...
Co-authored-by: Shrinath Rao <shnath@openobserve.ai >
2025-11-12 17:48:12 +05:30
Shrinath Rao and priyabrata-stack
8ea3c3240f
test: updated sharding logic for test dino reporting ( #9073 )
...
Co-authored-by: priyabrata-stack <pryabrata@openobserve.ai >
2025-11-12 16:04:10 +05:30
Sai Nikhil
39bcaad8f6
fix: import module refactored ( #8962 )
...
1. Here we have refactored import module
the structure will be
```
BaseImport will be main serving component for Import UI
import(module).vue will be used to serve core business logic and functionality
```
2025-11-12 09:29:04 +05:30
udev
a5b9facdc8
fix: migration issue ( #9067 )
...
fixes migration issue where older format pipeline would fail to load if
the pipeline contains a `condition` node.
2025-11-11 23:20:23 +05:30
Shrinath Rao
6b11b81d06
test: updated testDino workflow order ( #9059 )
2025-11-11 19:28:53 +05:30
udev
2854a33791
feat: pipeline or operator ( #8911 )
...
with this PR we add OR operator support in pipeline conditions along
with the ability to nest conditions, creating complex conditions
quickly. existing conditions will be treated as legacy conditions and
still be honoured in the new evaluation logic.
2025-11-11 17:39:11 +05:30
Shrinath Rao and Yashodhan Joshi
98e35c1632
test: added ent tags to all enterprise tests ( #9040 )
...
Co-authored-by: Yashodhan Joshi <yashodhan@openobserve.ai >
2025-11-11 15:14:33 +05:30
85a8fc1648
feat: license check ( #8522 )
...
### **User description**
This adds license check job
___
### **PR Type**
Enhancement, Bug fix
___
### **Description**
- Add enterprise license HTTP APIs and DB watch
- Enforce quota checks on search and ingestion
- Always enable usage reporting; simplify modes
- Expose license expiry in config and UI
___
### Diagram Walkthrough
```mermaid
flowchart LR
Backend["Backend: License APIs + quota checks"]
DB["DB: License watch + dist lock"]
Config["Config: usage/reporting & expiry"]
UI["UI: Settings License page + banner"]
Search["Search/PromQL: quota enforcement"]
Backend -- "watch updates" --> DB
Backend -- "expose expiry" --> Config
UI -- "GET/POST /api/license" --> Backend
Search -- "check_search_allowed" --> Backend
```
<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>21
files</summary><table>
<tr>
<td><strong>config.rs</strong><dd><code>Validate usage mode and publish
interval bounds</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-9aeee4a74c0520daa40f9b81c7016f5b6b3254375b968dd7598e745630980d62 ">+16/-4</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Add license GET/POST endpoints with
validation</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-d569000673e415b222a20a6f4f50a93c278c189a7d6e43231d5ab8807e93021f ">+75/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Register license routes for
enterprise builds</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-a1cfd40da1ab6cd4db0181fd8664965034298047b3b7c3320c5385897a7c4aed ">+2/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Enforce search quota in PromQL
endpoints</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-0ad5729a1fbce00ff53076728c51822400c13af9918e1d8554f41be56d060fa0 ">+24/-1</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Add enterprise search quota checks
in endpoints</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-96630a0dbb6dd7b2b0248fa325c7c7041ce31340c32826675a4a70772e9d29f6 ">+51/-1</a>
</td>
</tr>
<tr>
<td><strong>search_stream.rs</strong><dd><code>Enforce quota in
streaming search endpoints</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-642de43ff6b19ae41087a9f1efc02d8b0b873809e0c92cbddfac1a30ef3f1184 ">+21/-1</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Expose license expiry; always
enable usage flag</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-ca09c9c9b020049bdbc3382c466bfcca80daac92e98760d9a9a76172abf34049 ">+8/-1</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Wire license endpoints into
router</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-02556e3f515441b5d2b6bbea7829df488beac03c4cc41309a6638ae3c0e0aec6 ">+3/-1</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Add license check locking and
startup watchers</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-f2e4c29b8eef22189ec704a832633c4bd135a24444f054864c98064bd0963681 ">+57/-0</a>
</td>
</tr>
<tr>
<td><strong>license.rs</strong><dd><code>Implement license update
broadcast and watch</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-43bb2d7d70d03657337dfabb078079de71fae8a7f58962a10ac68c03594e0f81 ">+70/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Export license DB module for
enterprise</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-b7e3bf7f0ac23dd084c0c817a310a4d5e7a64ff532746d182986ef940fa03fd0 ">+2/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Enforce ingestion quota for
enterprise</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-7c7b5bca85f0ced652965cae66540c96f56dfcca4f4c16b77bf7b45aac203d1b ">+10/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Provide search quota check
helper</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-c3b85ea662a885fbd39797968928b291cb59a58f53a03f7b7dfd7ba8b6a7985a ">+18/-0</a>
</td>
</tr>
<tr>
<td><strong>ingestion.rs</strong><dd><code>Simplify reporting mode;
always requeue on error</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-3edd5f4ed1eed0f765b7b450ef0fbf587632e6b22302006a5e397049e297057f ">+19/-50</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Always enable usage queue and
publishing</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-c6255010f7a87d6acdb3ad04954fc9f2c27350ae319c53a1857b120aa06408a3 ">+2/-25</a>
</td>
</tr>
<tr>
<td><strong>useManagementRoutes.ts</strong><dd><code>Add license
management route</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-b71a1d39b1fab0749f0668d5f16382536fbda6e2f0c92c56a972fb5d8b5835f5 ">+8/-0</a>
</td>
</tr>
<tr>
<td><strong>license_server.ts</strong><dd><code>Add client for license
APIs</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-3ac3fe8faca5f5a6aebd9d5e8885837f1511834eb7c78d0830af8f00c70523cb ">+16/-0</a>
</td>
</tr>
<tr>
<td><strong>License.vue</strong><dd><code>New license management UI with
usage</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-614c7b48f6f2ab1e8041d20c7583b6864285eacf9db032c27508b76f6de8467f ">+469/-0</a>
</td>
</tr>
<tr>
<td><strong>index.vue</strong><dd><code>Add License tab and routing
guards</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-699c63979f851c48ad440a078e93282fd797a18fc065e5331b2e41122ddb8b69 ">+27/-0</a>
</td>
</tr>
<tr>
<td><strong>LicensePeriod.vue</strong><dd><code>License expiry banner
component</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-14f02914aaa78ef3e82717173fa95455b7f1092faff2d0dbd51e243663850ad4 ">+111/-0</a>
</td>
</tr>
<tr>
<td><strong>HomeView.vue</strong><dd><code>Show license expiry banner
and navigate</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-9af441af191d3254ef5f9db603dca75486de7638cda41a3c050e7b3c33d68280 ">+9/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Bug
fix</strong></td><td><details><summary>1 files</summary><table>
<tr>
<td><strong>schema.rs</strong><dd><code>Remove usage_enabled dependency
in org creation</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-4696a44abde2df4ac48fed716f930bfdcc01759bdfcfd8d802821c6dd857bff9 ">+1/-3</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>en.json</strong><dd><code>Add i18n key for License tab
label</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8522/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824 ">+2/-1</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
---------
Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com >
Co-authored-by: Yashodhan Joshi <yjdoc2@gmail.com >
Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai >
2025-11-11 14:36:03 +05:30
Simha G and Subhradeep Chakraborty
24ac8ee0ff
fix: Add RBAC to the Alerts and Pipelines history endpoints and add tests ( #8930 )
...
# PR Type
Feature/Fix
# Description
The pipelines history and alerts history endpoints are now covered by
RBAC. Added basic e2e api test for the same endpoints.
---------
Co-authored-by: Subhradeep Chakraborty <chakrabortysubhradeep556@gmail.com >
2025-11-11 11:49:14 +05:30
Shrinath Rao
e26c810ffb
test: testdino retry failed tests flow optimisations ( #9015 )
2025-11-11 06:34:41 +05:30
Abhay Padamani and Kirtan Thakkar
098ee9d7d2
fix: dashboard panel re-position ( #9016 )
...
- #9020
---------
Co-authored-by: Kirtan Thakkar <kirtan@kiara.tech >
2025-11-10 18:54:30 +05:30
Shrinath Rao
2e89ae259a
test: skip invalid tests ( #9007 )
2025-11-07 22:17:49 +05:30
Shrinath Rao
44de3f8dca
test: fixed failing api tests ( #9004 )
2025-11-07 19:05:35 +05:30
Shrinath Rao
87ae8953b1
test: updated testdino approach to work from github variables ( #8987 )
2025-11-06 20:11:48 +05:30
Shrinath Rao
42dae4ba31
test: unskipped org tests ( #8972 )
2025-11-06 17:41:20 +05:30
ktx-akshay
48b8143769
fix: update dashboard failing testcases ( #8975 )
2025-11-06 19:43:42 +08:00
Subhra264
659a5439d1
fix: Make cron handler DST aware ( #8952 )
...
# Add DST-Aware Timezone Handling for Alert Scheduling
## Summary
Alerts previously used static timezone offsets that became outdated
during DST transitions, causing alerts to fire at incorrect times (e.g.,
an alert configured for "9 AM Pacific" would fire at 10 AM after DST
change).
## Solution
- Added `chrono-tz` dependency for IANA timezone database support
- Implemented DST-aware offset calculation at scheduling time using
timezone strings (e.g., `America/Los_Angeles`)
- Updated `get_next_trigger_time_non_aligned()` and `align_time()` to
dynamically calculate offsets based on the scheduled timestamp
- Maintains backward compatibility: alerts without timezone strings
continue using fixed offsets
2025-11-05 10:42:51 +05:30
Shrinath Rao
f61b715a1e
test: Cleanup Mechanism and ENV Runs for e2e tests ( #8839 )
...
### **PR Type**
Enhancement, Tests
___
### **Description**
- Add robust alerts cleanup utilities
- Improve UI flows and resiliency
- Support deployed env testing delays
- Add CI cleanup and health checks
___
### Diagram Walkthrough
```mermaid
flowchart LR
UI["Playwright UI flows hardened"]
API["APICleanup cascade (Alerts→Folders→Destinations→Templates)"]
CI["CI workflow targets deployed env"]
Delay["Configurable test step delay"]
Data["Global ingestion more robust"]
UI -- "uses" --> API
CI -- "runs cleanup.spec" --> API
CI -- "health checks + env vars" --> Data
Delay -- "slows page ops" --> UI
Data -- "ingest logs with parsing" --> UI
```
<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>alertDestinationsPage.js</strong><dd><code>Add search,
cascade-safe delete, bulk prefix cleanup</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8839/files#diff-57e5c53b4ef998b3d8708149620ff94dcc46807927f1a3a9e9f28ed3ebe25b0a ">+178/-0</a>
</td>
</tr>
<tr>
<td><strong>alertTemplatesPage.js</strong><dd><code>Add template search,
in-use handling, prefix cleanup</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8839/files#diff-f4ebd248b2140051e74dbbbd1aabe344f01c80704ce5857e9c28a04350e018f3 ">+177/-2</a>
</td>
</tr>
<tr>
<td><strong>alertsPage.js</strong><dd><code>Harden alert actions, bulk
deletion, search across folders</code></dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8839/files#diff-79ee01d6d7f145f19207b93b87143b545a1188cfc6a82bc8c45fecfbf68f8a1d ">+280/-9</a>
</td>
</tr>
<tr>
<td><strong>apiCleanup.js</strong><dd><code>New API-based cascade
cleanup utility</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8839/files#diff-537fe76c0d8e26e81c5f77c83bd0ee35daaa973822105c809bf83171a26b33c5 ">+399/-0</a>
</td>
</tr>
<tr>
<td><strong>page-manager.js</strong><dd><code>Wire APICleanup into
PageManager</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8839/files#diff-565eab8b3c767ae50c9d05e591621d14f66b81af84d6b5ea6efe136c1c3933df ">+4/-0</a>
</td>
</tr>
<tr>
<td><strong>baseFixtures.js</strong><dd><code>Add configurable test step
delay hooks</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8839/files#diff-c4c5ee7fbb248d1ab14d3d4e33ffb9626f9aab74c9e0207fcfc08051c8c3c7ee ">+46/-0</a>
</td>
</tr>
<tr>
<td><strong>global-setup.js</strong><dd><code>Harden login and ingestion
with diagnostics</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8839/files#diff-06323dad7214f86b41b62e121e716eeea0054bc4d950c6bcf4a0efe53894acc8 ">+61/-22</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Bug
fix</strong></td><td><details><summary>1 files</summary><table>
<tr>
<td><strong>commonActions.js</strong><dd><code>Fix ingestion URLs to use
org variable</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8839/files#diff-4d726dd2bdb34b2c90a31798ff49b6df5bc952bd049b7c38bebb18b6db0076e2 ">+4/-4</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>4
files</summary><table>
<tr>
<td><strong>alerts-e2e-flow.spec.js</strong><dd><code>Pre-move folder
cleanup and stabilization</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8839/files#diff-32972e38c1fe0e8bb887f9f254b3130916a36f96ea924f9987493d44efefeab9 ">+13/-3</a>
</td>
</tr>
<tr>
<td><strong>alerts-import.spec.js</strong><dd><code>Use dedicated
invalid import test data</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8839/files#diff-62b6ec4818685eacc0a934d68aaadfd73b512ef4f4be25fcd5135b97c2844912 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>cleanup.spec.js</strong><dd><code>New pre-test API cleanup
spec</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8839/files#diff-c214275a512fa285a7e4f2ab61dfcb42d71a0436b0e4241f94d7b45693587983 ">+29/-0</a>
</td>
</tr>
<tr>
<td><strong>invalid-alert.json</strong><dd><code>Add invalid alert
sample for import tests</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8839/files#diff-c695f71048e9393a45d3e3e3e415696559fecf3ba85712e7c3f366092f53f424 ">+24/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Configuration
changes</strong></td><td><details><summary>1 files</summary><table>
<tr>
<td><strong>playwright.yml</strong><dd><code>Target deployed env; add
cleanup job and health checks</code> </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8839/files#diff-7afcd2d8f7b49bda74843f209eefb7b2da45f7e7803bf2e4bd636699b76aa2d3 ">+123/-65</a></td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
2025-11-04 23:54:54 +05:30
Shrinath Rao
d70c75e4bc
test: added tests for ent repo - not to be run, but maintained ( #8956 )
2025-11-04 22:26:50 +05:30
Shrinath Rao
6e490f360b
test: test commit
2025-11-04 06:48:47 -08:00
Shrinath Rao
603d641b01
test: test dino upload flag added ( #8945 )
2025-11-04 12:23:28 +05:30
348ec6914d
fix: 8928 UI revamp issues ( #8940 )
...
Co-authored-by: ktx-vaidehi <vaidehi.akhani@kiara.tech >
Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai >
Co-authored-by: ktx-abhay <abhay.padamani@kiara.tech >
2025-11-03 23:25:53 +05:30
db7f947089
fix: UI design implementation ( #8841 )
...
Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai >
Co-authored-by: omkark06 <omkar@zinclabs.io >
Co-authored-by: ktx-vaidehi <vaidehi.akhani@kiara.tech >
Co-authored-by: ktx-abhay <abhay.padamani@kiara.tech >
Co-authored-by: ktx-akshay <akshay.patil@kiara.tech >
2025-11-01 21:22:27 +05:30
dd11cb4dae
feat: removed http api from ui and add multistream search v2 ( #8735 )
...
Removed HTTP API support from the UI. The backend API will remain
unchanged, and the UI will now communicate exclusively through the
streaming API.
---------
Co-authored-by: omkark06 <omkar@zinclabs.io >
Co-authored-by: udev <uddhavdave1@gmail.com >
Co-authored-by: ktx-vaidehi <vaidehi.akhani@kiara.tech >
Co-authored-by: hengfeiyang <hengfei.yang@gmail.com >
Co-authored-by: ByteBaker <42913098+ByteBaker@users.noreply.github.com >
Co-authored-by: ktx-abhay <abhay.padamani@kiara.tech >
Co-authored-by: ktx-akshay <akshay.patil@kiara.tech >
2025-10-31 16:38:05 +05:30
ktx-akshay
e8f93ca802
test: add test cases for various filter operators in dashboard ( #8918 )
2025-10-31 16:06:06 +05:30
ByteBaker
77ab0cff5c
fix: resolve flaky integration tests
...
- Ensure memtable isolation to prevent cross-test data contamination
- Fix dashboard API version compatibility (v5 -> version-agnostic dashboard_id)
- Fix indentation bug causing function/dashboard/stream deletions to run inside alert loop
- Add 3-second wait after dashboard deletion for propagation
2025-10-30 17:20:21 +05:30
ktx-akshay
766bd14db1
fix: update dashboard tests for schema version v6 ( #8909 )
2025-10-29 11:52:49 +05:30
ktx-akshay
8f495b56a7
test: chart rendering with connect null values enabled testcase ( #8899 )
2025-10-28 16:34:51 +05:30
ktx-akshay
3af7349795
test: add pytest cases for dashboard functionality ( #8885 )
2025-10-28 15:39:31 +05:30
Neha P and Subhradeep Chakraborty
56024fe950
fix: dynamic stream name should work if it starts with { and ends with } ( #8882 )
...
### **PR Type**
Tests, Enhancement
___
### **Description**
- Add comprehensive dynamic template tests
- Introduce reusable validation utilities
- Parameterize edge and nested cases
- Standardize waits and identifiers
___
### Diagram Walkthrough
```mermaid
flowchart LR
Consts["Add constants (waits, limits)"]
Utils["Add utils: time window, query builder, validator, enabler"]
DynamicTest["Enhance dynamic template test"]
ComplexTests["Add complex, special-char, edge, nested tests"]
Perf["Add performance and cleanup tests"]
Consts -- "used by" --> Utils
Utils -- "reused in" --> DynamicTest
Utils -- "reused in" --> ComplexTests
Utils -- "reused in" --> Perf
```
<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>test_pipeline_dynamic.py</strong><dd><code>Expand
pipeline dynamic template tests and utilities</code>
</dd></summary>
<hr>
tests/api-testing/tests/test_pipeline_dynamic.py
<ul><li>Add constants and safety helpers.<br> <li> Add reusable
validation and enable helpers.<br> <li> Expand tests: complex, special
chars, edge, nested.<br> <li> Add performance and cleanup tests.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8882/files#diff-0bbefbbf7a34e3414a0aadd1963ffe6a2af8b5df4d619076207e361b2a42bcb1 ">+774/-49</a></td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: Subhradeep Chakraborty <chakrabortysubhradeep556@gmail.com >
2025-10-27 18:27:49 +05:30
ktx-akshay
1ee98654ca
fix: resolve flaky behavior in dashboard tests ( #8840 )
...
### **PR Type**
Bug fix, Tests
___
### **Description**
- Stabilize dashboard chart rendering waits
- Replace network idle with canvas detection
- Add explicit chart render wait helper
- Adjust workflow Node action version
___
### Diagram Walkthrough
```mermaid
flowchart LR
Tests["Dashboard tests"] -- "add render waits" --> Transpose["Transpose spec"]
Tests -- "replace networkidle with selector" --> DashboardSpec["Dashboard spec"]
CI["Playwright workflow"] -- "use setup-node v4" --> NodeSetup["Node action updated"]
```
<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>dashboard-transpose.spec.js</strong><dd><code>Add
explicit chart render wait in transpose test</code>
</dd></summary>
<hr>
tests/ui-testing/playwright-tests/dashboards/dashboard-transpose.spec.js
<ul><li>Wait for chart render after apply<br> <li> Update comments to
reflect rendering wait</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8840/files#diff-da631007cea76a4bc59e4acd1195b59ae4131cd5208d21a9c1f94d3913911dc4 ">+3/-2</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>dashboard.spec.js</strong><dd><code>Use canvas-based
wait to reduce flakiness</code>
</dd></summary>
<hr>
tests/ui-testing/playwright-tests/dashboards/dashboard.spec.js
<ul><li>Replace networkidle waits with canvas selector<br> <li> Add
targeted wait for chart canvas attachment<br> <li> Remove redundant
networkidle wait</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8840/files#diff-d0fa0042783dc109334b05266edce228bad97adcb568dd1e447920596238e9b4 ">+5/-3</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>playwright.yml</strong><dd><code>Update GitHub Action
setup-node to v4</code>
</dd></summary>
<hr>
.github/workflows/playwright.yml
<ul><li>Downgrade actions/setup-node from v5 to v4<br> <li> Keep Node.js
version at 22</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8840/files#diff-7afcd2d8f7b49bda74843f209eefb7b2da45f7e7803bf2e4bd636699b76aa2d3 ">+1/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-10-27 17:48:08 +05:30
001d444521
feat: alert dedup ( #8884 )
...
### **PR Type**
Enhancement, Tests
___
### **Description**
- Introduce alert deduplication feature
- Persist dedup state and migration
- API/UI support for dedup config
- Scheduled cleanup job added
___
### Diagram Walkthrough
```mermaid
flowchart LR
Config["Config: DeduplicationConfig + grouping"] -- "exposed in Alert" --> API["HTTP Models: Alert.deduplication"]
API -- "persist/read" --> Infra["Infra: alerts table cols + dedup_state table"]
Infra -- "migration + entity" --> DB["DB Schema v11"]
Scheduler["Scheduler handlers"] -- "apply_deduplication()" --> Service["Service: alerts/deduplication"]
Service -- "fingerprint + state" --> Infra
Job["Background job"] -- "cleanup_expired_state" --> Service
UI["Web UI: form + i18n"] -- "bind Alert.deduplication" --> API
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Configuration
changes</strong></td><td><details><summary>3 files</summary><table>
<tr>
<td><strong>config.rs</strong><dd><code>Bump DB schema version to
11</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8884/files#diff-9aeee4a74c0520daa40f9b81c7016f5b6b3254375b968dd7598e745630980d62 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Wire enterprise-only dedup
migration</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8884/files#diff-7ee42a714d3d56c663da0412d15514613222055aebb5b50dafbc051a656a36f6 ">+7/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Gate deduplication module behind
enterprise feature</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8884/files#diff-ba9b65130898444f7815fd6068bdb0dc590612f74cc893f79d91b0afc44cc851 ">+2/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>15
files</summary><table>
<tr>
<td><strong>alert.rs</strong><dd><code>Add optional deduplication to
Alert model</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8884/files#diff-45c7eaf1a764ab52f3e014fe0555c03dc59d77c5ce974684cdee4ed90463a234 ">+4/-1</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Export deduplication
module</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8884/files#diff-308ddd8764236c9a75da9ba7742843ee096f34a126306a58a1e695c1ee148fe5 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Expose deduplication in HTTP Alert
model mappings</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8884/files#diff-7937de550cb8784a6c3beca0689c8a88508c4b93ecf441280f47e08f988d2a5a ">+7/-1</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Map dedup fields to DB and
serialize config</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8884/files#diff-238b8087501b1743c3c4608469596d431869f021e9bb30e9a058d1294229ee67 ">+29/-0</a>
</td>
</tr>
<tr>
<td><strong>alert_dedup_state.rs</strong><dd><code>New entity for
deduplication state</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8884/files#diff-f6ea59e731cb65769f76f5e3a092331e433d73cfb55589861c7cd4fc415744dc ">+85/-0</a>
</td>
</tr>
<tr>
<td><strong>alerts.rs</strong><dd><code>Add dedup columns to alerts
entity</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8884/files#diff-a3e9c7993f95c9f2414e5da12d12f5f60422ac927c105f32141e4854f0e7179a ">+3/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Register alert_dedup_state
entity</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8884/files#diff-c539d7557d1425986d5c09849d8dbca42d1b309c2bc33d49db641d6a783098f6 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>m20251024_000001_add_alert_deduplication.rs</strong><dd><code>Migration:
add dedup columns and state table</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8884/files#diff-5146fa66b9b2805cd19d8a0fe363976a5966d70132400e54e576f277c23c8d34 ">+245/-0</a>
</td>
</tr>
<tr>
<td><strong>alert_manager.rs</strong><dd><code>Add scheduled dedup state
cleanup job</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8884/files#diff-7e30858abad652a860186eb047347305488f52356112b1495dd53ce740316d7c ">+55/-0</a>
</td>
</tr>
<tr>
<td><strong>deduplication.rs</strong><dd><code>Implement dedup logic,
fingerprinting, cleanup</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8884/files#diff-6073bba67ae904acb5f5b73104f84a81c13608f31aeb6558e9787da67efa03df ">+975/-0</a>
</td>
</tr>
<tr>
<td><strong>handlers.rs</strong><dd><code>Apply deduplication before
sending alerts</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8884/files#diff-5eca8995a88fcecb6d6b8efd3c7c4496f4a96a4b060fb4ed85593574f7cf49eb ">+49/-0</a>
</td>
</tr>
<tr>
<td><strong>alert.ts</strong><dd><code>Add deduplication to Alert
interface</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8884/files#diff-95f520d803aecbe4142e486037faf07124a5da245d504f0d11147bcb6a4c8918 ">+11/-0</a>
</td>
</tr>
<tr>
<td><strong>AlertsContainer.vue</strong><dd><code>UX: expand/collapse
area clickable with hover</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8884/files#diff-39b487d54970cff4a1ccdfbb49a4ccb38f7131bb9d30944ce1c6e86d3f818148 ">+12/-5</a>
</td>
</tr>
<tr>
<td><strong>DeduplicationConfig.vue</strong><dd><code>New UI for
configuring alert deduplication</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8884/files#diff-63eb39111409780e4dc064ea80056dfe096038ee76b389cdd8e9d14c0ae29a32 ">+401/-0</a>
</td>
</tr>
<tr>
<td><strong>ScheduledAlert.vue</strong><dd><code>Integrate dedup config
into scheduled alerts (enterprise)</code></dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8884/files#diff-5e143a17ab0fa5d7817f6d9301667fb5597236f27184248c7a71728e85b8d999 ">+13/-3</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>deduplication.rs</strong><dd><code>New deduplication and
grouping config with tests</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8884/files#diff-ee8d9d671130757ae84ef01809003701d36e4cc90a1d1eca286d3af9a6def2ea ">+183/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>en.json</strong><dd><code>i18n strings for deduplication
UI</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8884/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824 ">+23/-1</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com >
2025-10-26 18:52:05 +05:30
Subhra264
57902884f2
feat: use primary region if specified when caching the enrichment tables on node start ( #8878 )
...
### **User description**
In a multi-region super cluster setup, when a node starts up and caches
enrichment tables, it generally queries all regions for enrichment table
data. However, if user is sure that enrichment table is stored in one
primary region, then querying all regions is inefficient and might even
fail if other region queriers return error for some reason. Which can
eventually cause node start failure.
### Solution
This commit adds a new `apply_primary_region_if_specified` boolean
parameter throughout the enrichment table data fetching flow to control
whether to use only the primary region when fetching data.
### Key Changes
1. **New Parameter Added** (`enrichment_table.rs:40`, `mod.rs:190`):
- Added `apply_primary_region_if_specified` boolean parameter to:
- `get_enrichment_table_data()`
- `get_enrichment_table()`
- `get_enrichment_table_json()`
2. **Primary Region Logic** (`enrichment_table.rs:52-68`):
- When `apply_primary_region_if_specified` is true and enterprise
features are enabled:
- Checks if super cluster is enabled
- Reads the `enrichment_table_get_region` configuration
- If a primary region is specified, uses only that region for the search
request
- Otherwise, uses empty regions array (queries all regions)
3. **Cache Initialization** (`schema.rs:588-591`):
- When caching enrichment tables during node startup
(`cache_enrichment_tables()`), passes `true` for the parameter
- This ensures node startup only queries the primary region for
enrichment data
4. **Runtime Watch Operations** (`enrichment_table.rs:310-328`):
- Watch operations pass `false` for the parameter
- This maintains existing behavior for runtime updates
5. **Code Cleanup**:
- Removed unused `get()` function (lines 105-146 deleted)
- Simplified logging by removing redundant empty/non-empty checks
- Added better debug logging showing number of records fetched
### Impact
- **Performance**: Node startup is faster as it only queries the
designated primary region for enrichment table data
- **Correctness**: Ensures enrichment tables are fetched from the
authoritative source (primary region) during initialization
- **Flexibility**: Runtime operations can still query all regions if
needed
### Configuration Required
This feature requires enterprise edition with super cluster enabled and
the `enrichment_table_get_region` configuration set to specify which
region should be considered the primary source for enrichment table
data.
___
### **PR Type**
Enhancement
___
### **Description**
- Add primary-region-aware enrichment fetch
- Thread control flag across fetch APIs
- Use primary region on node startup
- Preserve all-regions for watch updates
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["schema::cache_enrichment_tables()"] -- "get_enrichment_table(..., true)" --> B["enrichment::get_enrichment_table_inner(..., true)"]
B -- "get_enrichment_table_data(..., true)" --> C["db::enrichment_table::search_inner(regions=primary)"]
D["db::watch()"] -- "get_enrichment_table(..., false)" --> B
```
<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>enrichment_table.rs</strong><dd><code>Region-aware
enrichment data retrieval and watch updates</code> </dd></summary>
<hr>
src/service/db/enrichment_table.rs
<ul><li>Add <code>_apply_primary_region_if_specified</code> to
<code>get_enrichment_table_data</code><br> <li> Determine
<code>regions</code> based on enterprise config and flag<br> <li> Call
<code>search_inner</code> with computed regions and enable consistency
flag<br> <li> Update watch flow to call enrichment getter with
<code>false</code></ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8878/files#diff-6ce27ddf8a0d8b4e790bda90d088ff692a5da31a8d330beea8a9dd843294572b ">+35/-6</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>schema.rs</strong><dd><code>Startup caching uses
primary region when specified</code>
</dd></summary>
<hr>
src/service/db/schema.rs
<ul><li>Cache startup uses <code>get_enrichment_table(...,
true)</code><br> <li> Add comment clarifying primary-region-only
behavior</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8878/files#diff-4696a44abde2df4ac48fed716f930bfdcc01759bdfcfd8d802821c6dd857bff9 ">+4/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>mod.rs</strong><dd><code>Plumb primary-region flag
through enrichment APIs</code>
</dd></summary>
<hr>
src/service/enrichment/mod.rs
<ul><li>Plumb <code>apply_primary_region_if_specified</code> through
public APIs<br> <li> Document flag semantics and usage caveats<br> <li>
Pass flag to DB layer when fetching remote data</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8878/files#diff-0ea1823eb8a3a9845cde8bb2264ccdb749fad5be6d9acda8b17d76b2dbfdcc9f ">+16/-3</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-10-24 22:05:41 +05:30
0a6d9a86b6
fix: pipelines should be able to create streams with dynamic names ( #8874 )
...
### **PR Type**
Tests
___
### **Description**
- Add pytest for dynamic namespace routing
- Create and enable pipelines via API
- Ingest logs post-creation and verify routing
- Optional cleanup to delete created pipelines
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Parametrized test inputs"] -- "build payload" --> B["Create pipeline via API"]
B -- "enable pipeline" --> C["Ingest logs to source"]
C -- "wait and verify" --> D["Search destination stream count"]
C -- "verify source matches" --> E["Search source for condition"]
D -- "report counts" --> F["Keep pipeline for monitoring"]
G["Cleanup test"] -- "find by name" --> H["Delete pipeline via API"]
```
<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>test_pipeline_dynamic.py</strong><dd><code>Add tests
for pipeline dynamic namespace routing</code>
</dd></summary>
<hr>
tests/api-testing/tests/test_pipeline_dynamic.py
<ul><li>Add parametrized test creating dynamic routing pipelines<br>
<li> Enable pipeline, ingest logs, verify counts via SQL search<br> <li>
Include optional cleanup test to delete created pipelines<br> <li> Use
unique node IDs and names; wait for processing</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8874/files#diff-0bbefbbf7a34e3414a0aadd1963ffe6a2af8b5df4d619076207e361b2a42bcb1 ">+243/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: Subhradeep Chakraborty <chakrabortysubhradeep556@gmail.com >
Co-authored-by: Hengfei Yang <hengfei.yang@gmail.com >
2025-10-23 18:25:40 +05:30
ktx-akshay
0a4a2a434d
test: add dashboard variable testcases ( #8767 )
...
### **PR Type**
Enhancement, Tests
___
### **Description**
- Add filter config to variable creation
- Improve save/close stability with waits
- Add helper to await dependent API calls
- New e2e test for filtered variables
___
### Diagram Walkthrough
```mermaid
flowchart LR
varsJS["dashboard-variables.js"]
testJS["dashboard-streaming.spec.js"]
feature["Filter config for variables"]
stability["Stability and wait improvements"]
helper["Dependent API calls wait helper"]
e2e["E2E test for filtered variables"]
varsJS -- "implement" --> feature
varsJS -- "add" --> stability
varsJS -- "introduce" --> helper
testJS -- "use" --> feature
testJS -- "validate" --> helper
testJS -- "verify streaming behavior" --> e2e
```
<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>dashboard-variables.js</strong><dd><code>Variable
creation gains filter support and waits</code>
</dd></summary>
<hr>
tests/ui-testing/pages/dashboardPages/dashboard-variables.js
<ul><li>Extend addDashboardVariable with filterConfig param.<br> <li>
Add robust waits and save/close handling.<br> <li> Implement
waitForDependentVariablesToLoad helper.<br> <li> Improve selectors and
option picking with visibility checks.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8767/files#diff-67d38d39bb67f4a0cbfa473ee81ad50b1fffebc40c635417e58905f3c865a6e2 ">+96/-19</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>dashboard-streaming.spec.js</strong><dd><code>Streaming
test validates filtered variable dependencies</code>
</dd></summary>
<hr>
tests/ui-testing/playwright-tests/dashboards/dashboard-streaming.spec.js
<ul><li>Add test for variables with filter chains.<br> <li> Track
streaming values API responses.<br> <li> Assert dependent calls and
statuses.<br> <li> Create panel and verify variable-driven
filtering.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8767/files#diff-92f44296937f53cb448371d1c61510c8c910fbecab83b02b8e89490d5832be19 ">+203/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-10-21 15:39:31 +05:30
Hengfei Yang
3554e39cea
feat: support choose kv watcher or queue for sync events ( #8858 )
2025-10-21 17:27:55 +08:00
dependabot[bot]
1709ce5ec1
chore(deps): bump playwright from 1.50.0 to 1.55.1 in /tests/ui-testing ( #8850 )
2025-10-21 14:52:29 +08:00
ktx-akshay
1f1f57d7a6
fix: dashboard flaky testcases ( #8820 )
...
### **PR Type**
Enhancement, Tests
___
### **Description**
- Stabilize dashboard deletion flow waits
- Add networkidle waits around chart checks
- Use API/selector race for readiness
- Simplify success toast assertion
___
### Diagram Walkthrough
```mermaid
flowchart LR
charts["Dashboard chart test"]
networkIdle1["Wait networkidle before checks"]
networkIdle2["Wait networkidle after boundingBox"]
deletion["Delete dashboard util"]
raceWait["Race: API response or table selector"]
assertToast["Simplified success toast assertion"]
charts -- "add waits" --> networkIdle1
networkIdle1 -- "proceed" --> networkIdle2
deletion -- "replace fixed waits" --> raceWait
raceWait -- "proceed" --> assertToast
```
<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>dashboard.spec.js</strong><dd><code>Add networkidle
waits around chart rendering checks</code>
</dd></summary>
<hr>
tests/ui-testing/playwright-tests/dashboards/dashboard.spec.js
<ul><li>Add networkidle wait before chart validation.<br> <li> Add
networkidle wait after fetching bounding box.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8820/files#diff-d0fa0042783dc109334b05266edce228bad97adcb568dd1e447920596238e9b4 ">+2/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>dashCreation.js</strong><dd><code>Robust deletion flow
with adaptive waiting logic</code>
</dd></summary>
<hr>
tests/ui-testing/playwright-tests/dashboards/utils/dashCreation.js
<ul><li>Replace fixed waits with API/selector race.<br> <li> Adjust
dashboard row locator formatting.<br> <li> Simplify success toast
visibility assertion.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8820/files#diff-137f9f1fa23669cea684a9a98b42a9d04caaa18d75466b5605c717408e932122 ">+18/-5</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-10-16 13:20:45 +05:30
Neha P
c5ea42ec2a
test: UTF8 queries pytests ( #8818 )
...
### **PR Type**
Tests
___
### **Description**
- Add regression tests for substr subqueries
- Validate env flags causing Utf8View panic
- Add alternative query pattern coverage
- Verify data content and string functions
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Env flags set via monkeypatch"] -- "enable JOIN_MATCH_ONE, UTF8_VIEW" --> B["Execute queries against stream_pytest_data"]
B -- "substr + IN subquery" --> C["Assert 200, validate hits"]
B -- "alternative IN/JOIN/CONCAT/length" --> D["Cross-validate no Utf8View error"]
B -- "data verification" --> E["Inspect container names/prefixes"]
```
<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>test_subquery_join_match.py</strong><dd><code>Add
regression and coverage tests for substr subqueries</code>
</dd></summary>
<hr>
tests/api-testing/tests/test_subquery_join_match.py
<ul><li>Add end-to-end regression tests reproducing Utf8View panic<br>
<li> Set env vars via monkeypatch for failing conditions<br> <li> Cover
substr IN, JOIN, CONCAT, and length() variants<br> <li> Add data
verification and structural assertions on hits</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8818/files#diff-facac795b55980509f22b59fec9090910a8eb2c8d442936114c4b11f11008152 ">+564/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-10-15 18:17:55 +05:30
ByteBaker
50e0b64aa9
feat: add MCP protocol endpoints
...
Integrate Model Context Protocol server endpoints at `/api/{org_id}/mcp`
for both enterprise and non-enterprise builds.
Changes:
- Add POST and GET handlers for MCP requests with streaming support
- Extract and pass through Authorization header for API authentication
- Add non-enterprise stub endpoints that return "not available" error
- Update router to register MCP endpoints conditionally
Endpoints:
- POST `/api/{org_id}/mcp`: Single MCP request/response
- GET `/api/{org_id}/mcp`: Streaming MCP requests
2025-10-15 14:47:33 +05:30
Shrinath Rao
4403a5f35a
test: Delete Template tests flakiness fix, code quality enhancements ( #8810 )
...
### **PR Type**
Tests, Enhancement
___
### **Description**
- Replace console logs with structured test logger
- Add error handling on data waits
- Import shared test logger utility
- Improve search and navigation robustness
___
### Diagram Walkthrough
```mermaid
flowchart LR
AlertsPages["Alerts/AlertTemplates Pages"] --> LoggerImport["Import shared test logger"]
AlertsPages --> ErrorHandling["Wrap waits with try/catch"]
ErrorHandling --> StructuredLogs["Log errors with context"]
StructuredLogs --> ThrowExplicit["Throw explicit failure messages"]
```
<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>alertTemplatesPage.js</strong><dd><code>Structured
logging and robust waits in AlertTemplates</code>
</dd></summary>
<hr>
tests/ui-testing/pages/alertsPages/alertTemplatesPage.js
<ul><li>Import <code>testLogger</code> utility.<br> <li> Replace
console.log with <code>testLogger.info/error</code>.<br> <li> Wrap
Promise.race waits in try/catch with explicit errors.<br> <li> Improve
error messages including <code>templateName</code>.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8810/files#diff-f4ebd248b2140051e74dbbbd1aabe344f01c80704ce5857e9c28a04350e018f3 ">+20/-13</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>alertsPage.js</strong><dd><code>Add logging and error
handling to Alerts page</code>
</dd></summary>
<hr>
tests/ui-testing/pages/alertsPages/alertsPage.js
<ul><li>Import <code>testLogger</code> utility.<br> <li> Add try/catch
around table/no-data waits.<br> <li> Log contextual errors for folder
and alert search.<br> <li> Throw explicit errors with
<code>folderName</code>/<code>alertName</code>.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8810/files#diff-79ee01d6d7f145f19207b93b87143b545a1188cfc6a82bc8c45fecfbf68f8a1d ">+19/-12</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-10-15 11:35:53 +05:30
Shrinath Rao
d9955aac86
test: enhanced unflattened test to not be flaky ( #8808 )
...
### **PR Type**
Tests
___
### **Description**
- Stabilize unflattened Playwright tests
- Add structured test logging throughout
- Increase waits for indexing and UI readiness
- Ensure query refresh and result validation
___
### Diagram Walkthrough
```mermaid
flowchart LR
Login["Login and setup"] -- "ingestion + waits" --> Streams["Open Streams"]
Streams -- "configure store original data" --> Schema["Update Schema"]
Schema -- "ingest + index wait" --> Explore["Explore Logs"]
Explore -- "set time range" --> Results["Load Results"]
Results -- "expand row" --> Details["_o2_id in details"]
Explore -- "SQL mode + SELECT * + refresh" --> Results
```
<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>unflattened.spec.js</strong><dd><code>Stabilize
unflattened Playwright tests with logging</code>
</dd></summary>
<hr>
tests/ui-testing/playwright-tests/Logs/unflattened.spec.js
<ul><li>Add structured testLogger.info/error messages.<br> <li> Replace
flaky short waits; add longer indexing waits.<br> <li> Add query
refresh, SQL mode selection, and result assertions.<br> <li> Minor
formatting fixes and consistent waits in setup/teardown.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8808/files#diff-35703a04047bd3dc257e8e606360e196f9ead45fc44f3857a6e04023590f1a1e ">+171/-137</a></td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-10-15 05:44:53 +05:30
9f8d25cb4d
fix: dashboard listing pages UI changes made sync with other pages ( #8796 )
...
### **User description**
1. Table list changes
2. folder list changes
3. submit btn , cancel btn , move btn , export btn , discard btn, apply
btn changes
___
### **PR Type**
Enhancement
___
### **Description**
- Align dashboards UI with new design
- Replace buttons with themed O2 styles
- Standardize toggles sizing and theming
- Improve tables, search, and layout
___
### Diagram Walkthrough
```mermaid
flowchart LR
AddDash["AddDashboard.vue"] -- "buttons, spacing" --> UI["Unified O2 styles"]
AddFolder["AddFolder.vue"] -- "inputs, buttons" --> UI
ConfigPanel["ConfigPanel.vue"] -- "toggle sizing/theming" --> UI
QueryEditor["DashboardQueryEditor.vue"] -- "function toggle style" --> UI
DashboardsView["Dashboards.vue"] -- "search, folder header, table footer" --> UI
AddPanel["AddPanel.vue"] -- "action button styles" --> UI
Styles["app.scss"] -- "new negative button theme" --> UI
```
<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>AddDashboard.vue</strong><dd><code>Update form spacing and
action buttons styling</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8796/files#diff-21d49964b1a38dce6b2b2811cade3cff3dcfd0f70cb1aa94b6deb7ea9ac848ce ">+10/-8</a>
</td>
</tr>
<tr>
<td><strong>AddFolder.vue</strong><dd><code>Revamp paddings, inputs, and
footer buttons</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8796/files#diff-3bd1ba28ba29b71469aac901fd8000480c3db6c0f2dbc86ea55221787ae3ffd2 ">+10/-12</a>
</td>
</tr>
<tr>
<td><strong>ConfigPanel.vue</strong><dd><code>Apply large themed toggles
across options</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8796/files#diff-c3a6e64dff02b58bb7cdc3f0668990b41ff41544b4c5e991bbcd989ad4bba3f8 ">+25/-0</a>
</td>
</tr>
<tr>
<td><strong>DashboardQueryEditor.vue</strong><dd><code>Restyle function
editor toggle with theming</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8796/files#diff-68bf1b319223d103f1b99e0b681764e4eb76942399397779c81c2cd18f6485ff ">+4/-3</a>
</td>
</tr>
<tr>
<td><strong>Dashboards.vue</strong><dd><code>Redesign list UI: search,
folders, table, footer</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8796/files#diff-8da3187db8ce3d795d0f196ede6b2290221ffa3e27b15dcc2b645e44dd196213 ">+119/-78</a></td>
</tr>
<tr>
<td><strong>AddPanel.vue</strong><dd><code>Standardize header actions
and picker height</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8796/files#diff-c9632db1ad95af95aba10161bcbc7c5608318919f228637bdafae3f3a31267e8 ">+22/-15</a>
</td>
</tr>
<tr>
<td><strong>app.scss</strong><dd><code>Add negative button themed
variants</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8796/files#diff-5703d12504b0395cbfbbfad02a592bc391496026e5f03743102ce06c210ea05f ">+20/-0</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: Shrinath Rao <shnath@openobserve.ai >
Co-authored-by: ktx-akshay <akshay.patil@kiara.tech >
2025-10-14 15:57:31 +05:30
Shrinath Rao
9329c12a0c
test: updated merge logic for test dino upload ( #8793 )
...
### **PR Type**
Tests, Enhancement
___
### **Description**
- Use Playwright blob reporter on CI
- Merge shard reports via playwright merge-reports
- Streamline GitHub Actions artifacts and steps
- Update Node.js to 22 in merge job
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Playwright tests (CI shards)"] -- "reporter: blob" --> B["blob-report artifacts"]
B -- "download & merge" --> C["playwright merge-reports"]
C -- "outputs" --> D["playwright-results/report.json + html-report"]
D -- "tdpw upload" --> E["TestDino"]
```
<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>playwright.config.js</strong><dd><code>Conditional blob
reporter for CI</code>
</dd></summary>
<hr>
tests/ui-testing/playwright.config.js
<ul><li>CI uses <code>['blob']</code> reporter<br> <li> Local keeps HTML
and JSON reporters<br> <li> Enables cross-shard report merging</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8793/files#diff-91cb9615068914b2e4f5d66fcbed50d3e9771ea2d882f8e8048bbe54eab3c414 ">+6/-4</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>playwright.yml</strong><dd><code>Artifact flow: blob
upload, merge, TestDino upload</code>
</dd></summary>
<hr>
.github/workflows/playwright.yml
<ul><li>Comment out many test matrices<br> <li> Remove per-matrix
JSON/HTML upload steps<br> <li> Upload blob reports; merge with
Playwright<br> <li> New job merges and uploads to TestDino; Node 22</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8793/files#diff-7afcd2d8f7b49bda74843f209eefb7b2da45f7e7803bf2e4bd636699b76aa2d3 ">+117/-236</a></td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-10-13 21:16:29 +05:30