Commit Graph
4270 Commits
Author SHA1 Message Date
Hengfei Yang ff29e0c9c0 fix: stream stats min_ts error (#8509) 2025-09-18 13:40:47 +08:00
Huaijin c2e8d73e65 feat: implement broadcast join (#8506) 2025-09-18 12:37:44 +08:00
c77a559183 feat: add pipeline usage (#8295)
### **PR Type**
Enhancement, Bug fix


___

### **Description**
- Add pipeline and remote usage tracking

- Report usage for remote destination WAL writes

- Switch pipeline channels to structured items

- Fix size accounting across pipeline branches


___

### Diagram Walkthrough


```mermaid
flowchart LR
  A["Ingestion (Logs/Metrics)"] -- "pre-pipeline size" --> B["Usage: Pipeline"]
  B -- "execute pipeline" --> C["Pipeline Nodes (Condition/Function/Destination)"]
  C -- "local dest" --> D["Size by stream (no double count)"]
  C -- "remote dest WAL write" --> E["Usage: RemotePipeline"]
```



<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>usage.rs</strong><dd><code>Add Pipeline and RemotePipeline
usage types and mapping</code>&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8295/files#diff-b15a6adcb163dc27993c83528105a6726c44c86d8a84c5cf5d1d382c6ec8cc29">+22/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>ingest.rs</strong><dd><code>Report size before pipeline;
avoid double counting</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8295/files#diff-e62118e45be183266d39ffa08491f255017954235ff0f3d6937683e314da406f">+13/-7</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>batch_execution.rs</strong><dd><code>Add usage reporting;
introduce PipelineItem; report remote WAL usage</code></dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8295/files#diff-3f6824a6eddaf1603e5cb0f1a4311ac6a45e1ffb967266ccc1f0bba944625e69">+158/-29</a></td>

</tr>
</table></details></td></tr><tr><td><strong>Bug
fix</strong></td><td><details><summary>1 files</summary><table>
<tr>
<td><strong>handlers.rs</strong><dd><code>Avoid ownership by cloning
stream params key</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8295/files#diff-5eca8995a88fcecb6d6b8efd3c7c4496f4a96a4b060fb4ed85593574f7cf49eb">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

</table></details></td></tr><tr><td><strong>Formatting</strong></td><td><details><summary>3
files</summary><table>
<tr>
<td><strong>otlp.rs</strong><dd><code>Minor formatting and flow tidy in
loop</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8295/files#diff-183498d98b17ddf344cbab4da6b2d9fe89ac81112db51655c142a89023b46ef3">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>json.rs</strong><dd><code>Minor formatting; prep for
pipeline handling</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8295/files#diff-506987e61095a54e47f7f208dad89f9f1bce595fa6bf1ba8a7d746f2b2ff6c4a">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>prom.rs</strong><dd><code>Minor formatting; prep for
pipeline handling</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8295/files#diff-c4e9e1d49a2bd0fefe67684b3768c4792be63cebcf727d71a48141f5b5957b8c">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></details></td></tr></tr></tbody></table>

</details>

___

---------

Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai>
Co-authored-by: Shrinath Rao <shnath@openobserve.ai>
2025-09-17 19:02:41 +05:30
Hengfei Yang 4f79d76323 fix: improve match_all contains query (#8491) 2025-09-17 20:25:27 +08:00
ktx-akshay e70455bfd9 test: add custom variable tests for dashboard (#8401)
### **PR Type**
Enhancement, Tests


___

### **Description**
- Add custom value search to variables

- Introduce streaming-aware dashboard tests

- Add streaming state management helper

- Update CI to run streaming tests


___

### Diagram Walkthrough


```mermaid
flowchart LR
  vars["DashboardVariables.addDashboardVariable(custom search)"]
  mgmt["ManagementPage.setStreamingState()"]
  filtSpec["dashboard-filter.spec: custom value search test"]
  streamSpec["dashboard-streaming.spec: streaming search test"]
  ci["Playwright workflow: Dashboards-Streaming job"]

  vars -- "support custom value search" --> filtSpec
  mgmt -- "toggle streaming on/off" --> streamSpec
  streamSpec -- "verifies _values_stream calls" --> ci
  filtSpec -- "validates _values calls" --> ci
```



<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>Support custom
value search for variables</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></summary>
<hr>

tests/ui-testing/pages/dashboardPages/dashboard-variables.js

<ul><li>Extend addDashboardVariable with custom search mode<br> <li>
Conditionally skip early save/close for custom search<br> <li> Implement
custom value entry flow in settings</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8401/files#diff-67d38d39bb67f4a0cbfa473ee81ad50b1fffebc40c635417e58905f3c865a6e2">+48/-8</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>managementPage.js</strong><dd><code>Add streaming state
management utility</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

tests/ui-testing/pages/generalPages/managementPage.js

<ul><li>Add setStreamingState helper<br> <li> Navigate to settings and
toggle streaming<br> <li> Verify final toggle state with
aria-checked</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8401/files#diff-2e67acc9ff9099e14792ddeb7d0160268727fb064b85e6712f6434130cc23fdd">+48/-0</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr><tr><td><strong>Tests</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>dashboard-filter.spec.js</strong><dd><code>Add custom
value search e2e test</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></summary>
<hr>

tests/ui-testing/playwright-tests/dashboards/dashboard-filter.spec.js

<ul><li>Add test for custom value dropdown search<br> <li> Capture and
assert /_values responses status<br> <li> Configure panel and filter
using variable<br> <li> Ensure dashboard cleanup</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8401/files#diff-c48a796836a25b90a9f94af58273ea9fd1b36248ca8689075c3d48be77de1468">+110/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>dashboard-streaming.spec.js</strong><dd><code>Add
streaming-aware dashboard tests</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

tests/ui-testing/playwright-tests/dashboards/dashboard-streaming.spec.js

<ul><li>New serial test suite for streaming<br> <li> Enable/disable
streaming via page object<br> <li> Validate _values_stream requests and
200 status<br> <li> Full dashboard create, filter, save, cleanup</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8401/files#diff-92f44296937f53cb448371d1c61510c8c910fbecab83b02b8e89490d5832be19">+152/-0</a>&nbsp;
</td>

</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>playwright.yml</strong><dd><code>CI: run streaming
dashboard tests</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

.github/workflows/playwright.yml

<ul><li>Add Dashboards-Streaming matrix entry<br> <li> Map folder to
Dashboards path<br> <li> Run dashboard-streaming.spec.js on Chrome</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8401/files#diff-7afcd2d8f7b49bda74843f209eefb7b2da45f7e7803bf2e4bd636699b76aa2d3">+4/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-09-17 16:02:09 +05:30
udev 25c50d2e03 fix: update remote wal config (#8359)
### **PR Type**
Enhancement, Bug fix


___

### **Description**
- Add two new pipeline config options

- Set safe defaults when zero provided

- Improve WAL pipeline timing controls


___

### Diagram Walkthrough


```mermaid
flowchart LR
  CFG["Config struct (Pipeline)"] -- "add fields" --> F1["pipeline_file_push_back_interval (secs)"]
  CFG -- "add fields" --> F2["pipeline_sink_task_spawn_interval_ms (ms)"]
  VALID["check_pipeline_config"] -- "apply defaults if 0" --> F1
  VALID -- "apply defaults if 0" --> F2
```



<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>config.rs</strong><dd><code>New pipeline timing fields
and defaulting logic</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

src/config/src/config.rs

<ul><li>Add <code>pipeline_file_push_back_interval</code> with env
config.<br> <li> Add <code>pipeline_sink_task_spawn_interval_ms</code>
with env config.<br> <li> Enforce non-zero defaults in
<code>check_pipeline_config</code>.<br> <li> Preserve existing WAL size
handling.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8359/files#diff-9aeee4a74c0520daa40f9b81c7016f5b6b3254375b968dd7598e745630980d62">+20/-0</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-09-17 14:24:14 +05:30
mmosarafO2andShrinath Rao 8ede92a58f ci: updated oss strapi notification to pusblish content (#8465)
### **User description**
updated oss strapi notification to pusblish content


___

### **PR Type**
Enhancement


___

### **Description**
- Improve changelog cleaning logic robustness

- Stop at 'New contributors' section

- Exclude binaries and links from notes

- Publish Strapi release entries by default


___

### Diagram Walkthrough


```mermaid
flowchart LR
  GH["GitHub Release (tag)"] -- "Fetch & clean body" --> Clean["Enhanced changelog cleaner"]
  Clean -- "Cleaned notes" --> Payload["Build payload for Strapi"]
  Payload -- "POST status=published" --> Strapi["Strapi /api/github-releases"]
```



<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>release.yml</strong><dd><code>Refine changelog cleaner
and publish status</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

.github/workflows/release.yml

<ul><li>Rewrote <code>cleanChangelog</code> to iterative parser.<br>
<li> Stops at 'New contributors'; removes links and binaries lines.<br>
<li> Preserves non-empty cleaned lines only.<br> <li> Changes Strapi API
call query to <code>status=published</code>.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8465/files#diff-87db21a973eed4fef5f32b267aa60fcee5cbdf03c67fafdc2a9b553bb0b15f34">+13/-14</a>&nbsp;
</td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___

---------

Co-authored-by: Shrinath Rao <shnath@openobserve.ai>
2025-09-17 11:42:20 +05:30
1645873275 fix: interesting field config (#8480)
### **User description**
This provides the default tab for logs ui sidebar via config api and env
config


___

### **PR Type**
Enhancement


___

### **Description**
- Add env to set default fields tab

- Validate and expose config via status API

- Set frontend default tab based on config

- Add watcher to apply tab on toggle


___

### Diagram Walkthrough


```mermaid
flowchart LR
  A["Env var ZO_LOG_PAGE_DEFAULT_FIELD_LIST"] --> B["Backend Config (Common.log_page_default_field_list)"]
  B --> C["Config validation (uds|all|interesting)"]
  C --> D["/api/config response (zo_config)"]
  D --> E["Frontend store.state.zoConfig.log_page_default_field_list"]
  E --> F["Logs UI sets default tab via setDefaultFieldTab()"]
  F --> G["Watch toggle to re-apply default"]
```



<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>config.rs</strong><dd><code>Introduce and validate
default field list config</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

src/config/src/config.rs

<ul><li>Add <code>log_page_default_field_list</code> env-config
option.<br> <li> Default to <code>uds</code>; document valid values.<br>
<li> Normalize to lowercase and validate allowed values.<br> <li>
Fallback to <code>uds</code> on invalid input.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8480/files#diff-9aeee4a74c0520daa40f9b81c7016f5b6b3254375b968dd7598e745630980d62">+14/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>mod.rs</strong><dd><code>Expose default field list in
status/config API</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

src/handler/http/request/status/mod.rs

<ul><li>Extend <code>ConfigResponse</code> with
<code>log_page_default_field_list</code>.<br> <li> Populate response
from common config.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8480/files#diff-ca09c9c9b020049bdbc3382c466bfcca80daac92e98760d9a9a76172abf34049">+2/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>IndexList.vue</strong><dd><code>Use config to set Logs
UI default fields tab</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/plugins/logs/IndexList.vue

<ul><li>Add <code>setDefaultFieldTab()</code> to pick initial tab.<br>
<li> Use backend config to select UDS vs Interesting.<br> <li> Watch
user-defined schema toggle to re-apply default.<br> <li> Remove
hardcoded default to Interesting fields.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8480/files#diff-08f058f883b659e713e606991a7ea37ae1ff016b7cccef970489ab5840dc3d09">+24/-2</a>&nbsp;
&nbsp; </td>

</tr>
</table></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: omkark06 <omkar@zinclabs.io>
2025-09-17 10:45:02 +05:30
Hengfei Yang 3515e6c95d feat: support inverted index for metadata stream (#8483) 2025-09-17 07:31:49 +08:00
Hengfei Yang 3a1aaa0707 refactor: replace feature_per_thread_lock with mem_table_bucket_num (#8484) 2025-09-16 23:20:14 +08:00
Hengfei Yang 215cf796cd feat: remove etcd (#8466) 2025-09-16 19:02:47 +08:00
09abc46689 fix: fixed searcharound and parsed unparsed sql (#8240)
### **PR Type**
Enhancement, Bug fix, Tests


___

### **Description**
- Introduce streaming search composable

- Add WebSocket/HTTP streaming orchestration

- Implement histogram streaming and pagination

- Enhance multi-stream SQL handling


___

### Diagram Walkthrough


```mermaid
flowchart LR
  SB["useSearchBar: query orchestration"] -- "builds request / sets method" --> SS["useSearchStream: streaming engine"]
  SS -- "WS/HTTP streaming" --> SWS["useSearchWebSocket/useStreamingSearch"]
  SS -- "histogram logic" --> HG["useHistogram"]
  SS -- "fields/columns" --> SF["useStreamFields"]
  SB -- "partitions/page-count (HTTP)" --> PAG["usePagination"]
  SS -- "state + URL updates" --> ST["searchState/logsUtils"]
  SB -- "functions/actions" --> ACT["useFunctions/useActions"]
```



<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>25
files</summary><table>
<tr>
<td><strong>useSearchStream.ts</strong><dd><code>New streaming search
composable with WS/HTTP handlers</code>&nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-0b7e910195d1ec4b1301973bd2f4193e1e23442103f69a9fbd189d3f78547014">+2171/-0</a></td>

</tr>

<tr>
<td><strong>useSearchBar.ts</strong><dd><code>Orchestrate search,
partitions, cancel, and method selection</code></dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-489bda221a164cbee8d66aaf178acb4e0d8a860dbdf39558804fc32c9efd71e8">+1351/-0</a></td>

</tr>

<tr>
<td><strong>logs.ts</strong><dd><code>Add logs-related TypeScript
interfaces</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-637857fa918f47ffb02ebfc8a35b124001ef4f65fd180c467f0f153382d2dc76">+89/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>index.ts</strong><dd><code>Export logs interfaces from
barrel file</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-108f7ecc761a491fd64530704bf44f21473916e1d2ae495376dc996206104088">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>useStreamFields.ts</strong><dd><code>Stream fields
extraction and grid columns utilities</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-14f575947dcdd7aa0e05646be62ed15b4651a25154f679a3a08ce1bc2252acec">+1105/-0</a></td>

</tr>

<tr>
<td><strong>usePagination.ts</strong><dd><code>Partition-aware
pagination and data fetching helpers</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-74277c3b3b1f9b684913ac55ce19c72b29b477021b0ff32af44f8191b17f24a1">+869/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>logsUtils.ts</strong><dd><code>SQL parsing helpers, query
transforms, and tracing</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-c8550678e2f4da95dd54d03d9893f6bfff2061460c4a2f2c324fdd3b1d392a52">+735/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>useHistogram.ts</strong><dd><code>Histogram generation,
skeleton, and multi-stream support</code>&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-4d467d6778569f239f96f3af9ec30214aa8b029892bf40a0aa038dfbb73eca6e">+609/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>searchState.ts</strong><dd><code>Centralized reactive logs
search state</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-c0ac4f131ad64edd2ed811e183bb570be2f38d58c9ed958d093457a51280ec34">+412/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>constants.ts</strong><dd><code>Add logs module
constants</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-70282396b9397710380ad150da4428630b1b6e4a41b40d206d43cd2eb7f3b653">+279/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>searchAround.ts</strong><dd><code>Search-around utilities
for contextual queries</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-0090387d8955180e33b700e25de27dd8356a3656449a8bae3442ab476dc50494">+269/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>logsVisualization.ts</strong><dd><code>Visualization helpers
for logs/histogram</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-5913cd8ca0e98529736da0801f08bf2cd1d861ad01442fbf628d1925ed4c87a1">+46/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>useLogs.ts</strong><dd><code>Integrate new composables and
streaming flow</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-1040f61354f92711e0e77ed4e9bfa15586d45a94c7e2ab06cc37372068030e7b">+598/-7006</a></td>

</tr>

<tr>
<td><strong>useStreams.ts</strong><dd><code>Stream fetching support for
multi-stream scenarios</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-a083369344f022cdf8d4f536719179b1d920369e33e2e26234e70dd36d151a7c">+50/-42</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>useSuggestions.ts</strong><dd><code>Suggestions aligned with
SQL/streams changes</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-6d2ecd5b90970ea8c8f5d35c5928a2cf8bf0ed14af700db0202759158bfbbf9d">+56/-25</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>Index.vue</strong><dd><code>Wire UI to streaming search
lifecycle</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+104/-61</a></td>

</tr>

<tr>
<td><strong>SearchBar.vue</strong><dd><code>UI updates for new search
orchestration</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-81893de4edf186b0556f610acb280c87baa2ffe67d3b48a60a866094c7635baf">+41/-27</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>SearchHistory.vue</strong><dd><code>Adjust to new state and
tracing</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-9dd167bd5e272b2057f53c16b905047eec00655a3552daad240a964d67a6f56d">+6/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>SearchResult.vue</strong><dd><code>Display streamed hits,
histogram, pagination</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-5e65533aa4754bb6d0074fda18ffc1ecacded3b9ca6bc28a161c3f6b12f20195">+14/-8</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>IndexList.vue</strong><dd><code>Support streaming responses
and errors</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-08f058f883b659e713e606991a7ea37ae1ff016b7cccef970489ab5840dc3d09">+14/-10</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>DetailTable.vue</strong><dd><code>Column updates based on
streamed fields</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-80552b5d25fa6cef9fbbe430b1865d761c4b132284c2d2175afceea8cbabc8c7">+5/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>JsonPreview.vue</strong><dd><code>Handle streamed hit
rendering</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-3985073134d35ff074742944b114d0905524038b42e6d2ac887fef2c8436fb16">+2/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>SearchSchedulersList.vue</strong><dd><code>Align scheduler
with new search flow</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-0c0a4097c53f07712d35562b1336602bf24faddedab77a9f5717f5582dcac2f1">+2/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>TransformSelector.vue</strong><dd><code>Transform selection
wired to query transforms</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-0037d8dd9cfbacc26309b26e98ae953e7ccbd0891ac2fd01c6314ebd7eed9d2c">+5/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>FunctionSelector.vue</strong><dd><code>Functions integration
with streaming search</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-11d9577516700b94b5f3325e77214d0d886473e690db8c9ea981613c9fb89b68">+2/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

</table></details></td></tr><tr><td><strong>Miscellaneous</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>useLogs_original.ts.original</strong><dd><code>Preserve
original composable for reference</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8240/files#diff-00d4815f6d83c48def131ba94f5131e6cae436bf949cc8abf9b8beacdb0aaf7f">+7033/-0</a></td>

</tr>
</table></details></td></tr></tr></tbody></table>

</details>

___

---------

Co-authored-by: omkark06 <omkar@zinclabs.io>
Co-authored-by: Sai Nikhil <nikhil@openobserve.ai>
2025-09-16 14:51:02 +05:30
Sai Nikhil 913c41c04e fix: general management UI in sync (#8443) 2025-09-16 14:56:00 +08:00
Hengfei Yang 97d09eff1e fix: support prefix star match_all (#8451) 2025-09-16 13:05:02 +08:00
Sai Nikhil 7f3ee74085 fix: o2 ui improvements latest (#8391) 2025-09-16 10:32:51 +08:00
Huaijin aa372b53bf feat: tantivy index for multi stream [phase 2] (#8229) 2025-09-15 22:56:47 +08:00
ktx-akshayandktx-vaidehi 5fc1944621 test: add camelCase tests for dashboard (#8423)
### **PR Type**
Tests, Bug fix


___

### **Description**
- Add camelCase custom SQL UI tests

- Fix table data validation logic

- Validate line and table chart rendering


___

### Diagram Walkthrough


```mermaid
flowchart LR
  UI["Dashboard UI tests"] -- "add camelCase SQL cases" --> Tests["Playwright specs"]
  Renderer["PanelSchemaRenderer table check"] -- "fix grouping logic" --> Validation["Accurate data validation"]
  Tests -- "verify table & line charts" --> Charts["Rendered charts without no-data"]
```



<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>PanelSchemaRenderer.vue</strong><dd><code>Fix table
data validation logical grouping</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></summary>
<hr>

web/src/components/dashboards/PanelSchemaRenderer.vue

<ul><li>Correct parentheses in table branch<br> <li> Ensure x/y alias
checks grouped logically</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8423/files#diff-e5376e7e77bf3aaf6590c2522d8c2dbffcc95a8006ae0d6dc0040a37825367d6">+2/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></td></tr><tr><td><strong>Tests</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>dashboard.spec.js</strong><dd><code>Add camelCase
custom SQL UI tests</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

tests/ui-testing/playwright-tests/dashboards/dashboard.spec.js

<ul><li>Add test for camelCase in table SQL<br> <li> Add test for
camelCase in line SQL<br> <li> Assert data presence and chart
rendering<br> <li> Cleanup dashboards after tests</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8423/files#diff-d0fa0042783dc109334b05266edce228bad97adcb568dd1e447920596238e9b4">+136/-0</a>&nbsp;
</td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___

---------

Co-authored-by: ktx-vaidehi <vaidehi.akhani@kiara.tech>
2025-09-15 19:23:42 +05:30
Hengfei Yang 237c757c7c fix: improve nats queue with limit policy (#8436) 2025-09-15 20:06:03 +08:00
Omkar Kesarkhane 6afe046998 fix: In logs append results if partition results are chunked (#8385)
### **User description**
If we receive chunked hits of a single partition, then append the hits.


___

### **PR Type**
Bug fix


___

### **Description**
- Track chunks per partition for hits

- Append hits when partition is chunked

- Replace hits only on first partition

- Refactor partition map to structured object


___

### Diagram Walkthrough


```mermaid
flowchart LR
  A["WebSocket search responses"] -- "metadata" --> B["Init/Increment partition"]
  B -- "set chunks[partition]=0" --> C["Track chunks per partition"]
  A -- "hits" --> D["Increment chunk count"]
  D -- "is chunked or partition>1?" --> E["Append hits"]
  D -- "else" --> F["Replace hits"]
```



<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>useLogs.ts</strong><dd><code>Chunk-aware partition
tracking and hit appending</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/composables/useLogs.ts

<ul><li>Introduce <code>SearchPartition</code> with
<code>partition</code> and <code>chunks</code>.<br> <li> Track chunk
counts per partition per <code>traceId</code>.<br> <li> Append hits when
single partition has multiple chunks.<br> <li> Update conditions to use
<code>partition</code> field instead of number map.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8385/files#diff-1040f61354f92711e0e77ed4e9bfa15586d45a94c7e2ab06cc37372068030e7b">+29/-10</a>&nbsp;
</td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-09-15 15:45:27 +05:30
Abhay Padamaniandktx-akshay 171bea35a6 fix: restrict select * query for visualization (#8302) (#8368)
### **User description**
- #8338

Resolved Issues:
- Implemented a check for `ZO_QUICK_MODE_ENABLED` before enabling quick
mode on logs for visualization toggle.
1. If `ZO_QUICK_MODE_ENABLED=true`, quick mode is enabled when the query
is `select *`.
2. Otherwise, `select *` query is always permitted in visualization
mode.
- Restricted the use of `SELECT *` queries in visualization mode.
- As API call triggered on changing the chart type, such changes are now
disallowed for `SELECT *` queries.


___

### **PR Type**
Bug fix, Enhancement


___

### **Description**
- Block SELECT * in visualization when quick mode on

- Respect quick-mode config before auto-enabling

- Centralize SELECT * detection in sqlUtils

- Prevent chart-type changes for SELECT * queries


___

### Diagram Walkthrough


```mermaid
flowchart LR
  A["sqlUtils.ts: isSimpleSelectAllQuery()"] -- "imported by" --> B["logs/Index.vue"]
  A -- "imported by" --> C["VisualizeLogsQuery.vue"]
  B -- "auto-enable quick mode only if config true" --> D["handleQuickModeChange()"]
  B -- "block run for SELECT * when quick mode" --> E["handleRunQueryFn()"]
  C -- "validate on chart type change" --> F["handleChartTypeChange()"]
```



<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>sqlUtils.ts</strong><dd><code>Add reusable SELECT *
query detector</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/utils/query/sqlUtils.ts

<ul><li>Add <code>isSimpleSelectAllQuery</code> utility with
normalization.<br> <li> Export function for reuse across
components.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8368/files#diff-dde40e8fcb5c37b06c011ede08922c44a3c025682fbc341aee97ba046b73a0e3">+17/-0</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr><tr><td><strong>Bug fix</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>Index.vue</strong><dd><code>Enforce quick mode/config
and block SELECT * runs</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></summary>
<hr>

web/src/plugins/logs/Index.vue

<ul><li>Import shared <code>isSimpleSelectAllQuery</code>.<br> <li>
Remove local duplicate detector.<br> <li> Auto-enable quick mode only if
config enabled.<br> <li> Block visualize run for SELECT * when quick
mode enabled.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8368/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+32/-16</a>&nbsp;
</td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>VisualizeLogsQuery.vue</strong><dd><code>Validate chart
type changes against SELECT * queries</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></summary>
<hr>

web/src/plugins/logs/VisualizeLogsQuery.vue

<ul><li>Replace v-model with explicit <code>selectedChartType</code>
prop handling.<br> <li> Add <code>handleChartTypeChange</code>
validating against SELECT * when quick mode.<br> <li> Import shared
<code>isSimpleSelectAllQuery</code> and logs context.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8368/files#diff-979b01d943d58c5d70faeeac5948b7f02f0b2392a12b84ef07ba7f7393ab0261">+38/-2</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___

---------

Co-authored-by: ktx-akshay <akshay.patil@kiara.tech>
2025-09-15 14:00:02 +05:30
ktx-vaidehi c68cbcb8da fix: update table chart no data validation logic (#8422)
### **PR Type**
Bug fix


___

### **Description**
- Fix table chart no-data validation

- Separate table logic from other charts

- Ensure presence check on x/y aliases

- Prevent false negatives with single row


___

### Diagram Walkthrough


```mermaid
flowchart LR
  Renderer["PanelSchemaRenderer.vue"]
  Charts["Non-table charts validation"]
  Table["Table-specific validation"]
  Metric["Metric validation (unchanged)"]

  Renderer -- "refine validation" --> Charts
  Renderer -- "add distinct logic" --> Table
  Renderer -- "keep existing flow" --> Metric
```



<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>PanelSchemaRenderer.vue</strong><dd><code>Refine table
chart data validation logic</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></summary>
<hr>

web/src/components/dashboards/PanelSchemaRenderer.vue

<ul><li>Remove table from generic chart validation branch.<br> <li> Add
table-specific data presence checks.<br> <li> Allow single-row tables
with any x/y value.<br> <li> Keep gauge and others using stricter alias
checks.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8422/files#diff-e5376e7e77bf3aaf6590c2522d8c2dbffcc95a8006ae0d6dc0040a37825367d6">+10/-2</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-09-15 13:01:49 +05:30
ktx-vaidehiandktx-akshay 5b81317d71 fix: dashboard ensure case-insensitive comparison for stream field validation for camelCase (#8424)
### **PR Type**
Bug fix


___

### **Description**
- Make stream field validation case-insensitive

- Prevent false errors for camelCase vs snake_case


___

### Diagram Walkthrough


```mermaid
flowchart LR
  A["Query field names"] -- "toLowerCase()" --> B["Normalized names"]
  C["Available stream fields"] -- "toLowerCase()" --> D["Normalized fields"]
  B -- "compare" --> D
  E["Errors array"] -- "only push if unmatched" --> F["Accurate validation"]
```



<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>convertDataIntoUnitValue.ts</strong><dd><code>Case-insensitive
comparison for stream field validation</code>&nbsp; &nbsp;
</dd></summary>
<hr>

web/src/utils/dashboard/convertDataIntoUnitValue.ts

<ul><li>Compare field names using toLowerCase().<br> <li> Avoid mismatch
when cases differ (e.g., camelCase).<br> <li> Update filter predicate
for custom X field errors.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8424/files#diff-14c6fe442ef231566ec411f9e0262cdd24ec912fc67b9154eec743282ab7211a">+4/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___

---------

Co-authored-by: ktx-akshay <akshay.patil@kiara.tech>
2025-09-15 11:35:39 +05:30
Hengfei Yang 53d23c4e1f fix: improve stream stats reset (#8426) 2025-09-15 13:18:01 +08:00
Ashish Kolhe 34a7341e87 chore: node list & user session refresh apis (#8198) (#8200)
### **PR Type**
Enhancement


___

### **Description**
- Add CLI commands to refresh caches

- Expose HTTP endpoints for refresh actions

- Cache node list building in cluster module

- Replace retention flag with mode enum


___

### Diagram Walkthrough


```mermaid
flowchart LR
  CLI["CLI subcommands"] -- triggers --> HTTP["HTTP endpoints"]
  HTTP -- calls --> Cluster["cluster::cache_node_list"]
  HTTP -- calls --> Sessions["db::session::cache()"]
  Config["Config: file_list_deleted_mode"] -- controls --> Retention["Compactor retention logic"]
```



<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>8
files</summary><table>
<tr>
<td><strong>cli.rs</strong><dd><code>New CLI subcommands for cache
refresh</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8200/files#diff-cb1eb3e74723d891353ccf1e2e5e0d246d2e78a5e69dbe4c73006ea8412d65e0">+6/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>http.rs</strong><dd><code>HTTP client helpers for refresh
endpoints</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8200/files#diff-790b7780a51e8eecd4754b623af8d15ad87baaaf29455ba646e2e410f83f5498">+22/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>mod.rs</strong><dd><code>Cache node list and update
consistent hash</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8200/files#diff-d15434a27e2b8406811f5a707b605203b603dad4a262c0642326be860bd2b568">+33/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>config.rs</strong><dd><code>Replace retention flag with mode
string config</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8200/files#diff-9aeee4a74c0520daa40f9b81c7016f5b6b3254375b968dd7598e745630980d62">+3/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>stream.rs</strong><dd><code>Add FileListBookKeepMode enum
and conversions</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8200/files#diff-2438d04c3fe97bc5452e5b74a303163b8723d93455cda32c95f0525435ad46bd">+29/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>mod.rs</strong><dd><code>Add refresh nodes and user sessions
endpoints</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8200/files#diff-ca09c9c9b020049bdbc3382c466bfcca80daac92e98760d9a9a76172abf34049">+20/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>mod.rs</strong><dd><code>Wire refresh endpoints into basic
routes</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8200/files#diff-02556e3f515441b5d2b6bbea7829df488beac03c4cc41309a6638ae3c0e0aec6">+3/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>retention.rs</strong><dd><code>Use retention mode for
history/deleted behavior</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8200/files#diff-6abd048f5ef4e7163cffbb51cb4bee10c07fb88b871469d5b3724f7cd04743dc">+16/-6</a>&nbsp;
&nbsp; </td>

</tr>
</table></details></td></tr></tr></tbody></table>

</details>

___
2025-09-15 09:52:42 +05:30
Subhra264 6f40d2ffc0 feat: use nats queue for cluster coordination (#8413) 2025-09-13 22:51:46 +08:00
Hengfei Yang 4f49af792f fix: shutting down DDL connection (#8398) 2025-09-13 11:58:58 +08:00
Abhay Padamani 6479cb8f5a fix: axisvalue issue on go to logs page drilldown #8404 (#8405)
### **PR Type**
Bug fix


___

### **Description**
- Add `__axisValue` to drilldown payload

- Fallback to name when value missing

- Improve logs page drilldown accuracy


___

### Diagram Walkthrough


```mermaid
flowchart LR
  A["Drilldown event params"] --> B["Extract value/name"]
  B --> C["Set __axisValue from value[0]"]
  B --> D["Fallback to name if missing"]
  C --> E["Build drilldown payload"]
  D --> 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>PanelSchemaRenderer.vue</strong><dd><code>Add robust
axis value to drilldown data</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/components/dashboards/PanelSchemaRenderer.vue

<ul><li>Add <code>__axisValue</code> to the drilldown data object.<br>
<li> Use first element of <code>value</code> array when available.<br>
<li> Fallback to <code>name</code> when <code>value[0]</code> is
absent.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8405/files#diff-e5376e7e77bf3aaf6590c2522d8c2dbffcc95a8006ae0d6dc0040a37825367d6">+3/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-09-12 23:13:30 +05:30
Neha PandShrinath Rao 000009f86d test: str_match_coalesce_fix (#8403)
### **PR Type**
Tests


___

### **Description**
- Add e2e test for str_match_ignore_case with coalesce

- Validate all hits contain expected match

- Ensure 200 response and correct schema

- Log query performance and totals


___

### Diagram Walkthrough


```mermaid
flowchart LR
  T["New e2e test: str_match_ignore_case + coalesce"] -- "executes query" --> API["/api/{org}/_search?type=logs"]
  API -- "returns hits" --> V["Validate coalesce and case-insensitive match"]
  V -- "assertions + logs" --> R["Report results and timing"]
```



<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_search.py</strong><dd><code>Add coalesce-aware
case-insensitive match test</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

tests/api-testing/tests/test_search.py

<ul><li>Add end-to-end test for str_match_ignore_case with coalesce<br>
<li> Post SQL search over recent timeframe<br> <li> Assert 200, hits
presence, and per-hit validation<br> <li> Print diagnostics and timing
information</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8403/files#diff-f3776a5bc02e67c163ed707f86b2192f47b73c641dde04b83523b95a74518141">+76/-0</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___

Co-authored-by: Shrinath Rao <shnath@openobserve.ai>
2025-09-12 18:40:35 +05:30
Abhay Padamaniandomkark06 ad23d41b56 fix: handle empty hits with streaming aggs #8411 (#8412)
### **PR Type**
Bug fix


___

### **Description**
- Skip state updates for empty streaming hits

- Prevent overwriting data with empty arrays

- Apply fix across loader code paths


___

### Diagram Walkthrough


```mermaid
flowchart LR
  Source["searchRes (streaming_aggs)"] -- "hits length > 0 ?" --> Check["Check hits length"]
  Check -- "Yes" --> Update["Update state.data[currentQueryIndex]"]
  Check -- "No" --> Skip["Skip state update"]
```



<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>usePanelDataLoader.ts</strong><dd><code>Guard state
updates against empty streaming hits</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/composables/dashboard/usePanelDataLoader.ts

<ul><li>Guard assignments with hits length checks.<br> <li> Avoid
replacing state when hits are empty.<br> <li> Apply checks in three
streaming_aggs branches.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8412/files#diff-5a42e9493a7bcd722b88e61fd38883c4f61001bc9cafa399f65f8eafda3aace9">+16/-7</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___

---------

Co-authored-by: omkark06 <omkar@zinclabs.io>
2025-09-12 17:40:00 +05:30
ab156bad8d fix: changed code-mirror to monaco-editor (#8047)
### **PR Type**
Enhancement, Bug fix


___

### **Description**
- Replace CodeMirror with Monaco editor

- Add Monaco autocomplete and markers

- Update build to bundle Monaco

- Remove re-render key from logs UI


___

### Diagram Walkthrough


```mermaid
flowchart LR
  CM["CodeMirror-based editor"] -- Replaced by --> ME["Monaco editor integration"]
  ME -- Autocomplete/Markers --> UX["Improved editor UX"]
  Build["Vite config"] -- Add monaco plugin/chunks --> Bundle["Optimized bundles"]
  UI["Logs and SearchBar"] -- Minor fixes/cleanup --> Stability["Reduced re-renders"]
```



<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>CodeQueryEditor.vue</strong><dd><code>Replace CodeMirror
with Monaco, add features</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8047/files#diff-52a36bf2d64e590036ed1c1f89b07a4a6b971a84e4fae9b4272cbc69d63f9bef">+369/-980</a></td>

</tr>

<tr>
<td><strong>Index.vue</strong><dd><code>Cleanups, visualization flow,
formatting tweaks</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8047/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+105/-78</a></td>

</tr>

<tr>
<td><strong>SearchBar.vue</strong><dd><code>Editor placeholder, menus,
toggle guards</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8047/files#diff-81893de4edf186b0556f610acb280c87baa2ffe67d3b48a60a866094c7635baf">+148/-82</a></td>

</tr>

</table></details></td></tr><tr><td><strong>Dependencies</strong></td><td><details><summary>3
files</summary><table>
<tr>
<td><strong>CodeQueryEditorDarkTheme.ts</strong><dd><code>Remove legacy
CodeMirror dark theme</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8047/files#diff-4ee0166b549a9a7d6a91e72d546dffd2d031b0ad6015ef5f735b67742e13c66d">+0/-230</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>CodeQueryEditorLightTheme.ts</strong><dd><code>Remove legacy
CodeMirror light theme</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8047/files#diff-4e80117fff859d80b9dde6898e8026f2c2514c43244e48e2b639527409d38682">+0/-246</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>package.json</strong><dd><code>Remove CodeMirror deps; add
Monaco and plugin</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8047/files#diff-b861012a5dd72b8a9f3281b7cf09f5a779c98569d040b1bbc1db50f1b15e7cce">+2/-16</a>&nbsp;
&nbsp; </td>

</tr>
</table></details></td></tr><tr><td><strong>Configuration
changes</strong></td><td><details><summary>1 files</summary><table>
<tr>
<td><strong>vite.config.ts</strong><dd><code>Integrate Monaco plugin and
chunking</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8047/files#diff-9430906049744cbbfe5d0b382b2466843a42cfebf755ff86fec850b0712258ef">+25/-15</a>&nbsp;
</td>

</tr>
</table></details></td></tr></tr></tbody></table>

</details>

___

---------

Co-authored-by: ktx-abhay <abhay.padamani@kiara.tech>
Co-authored-by: Bhargav <BJP232004@GMAIL.COM>
2025-09-12 16:50:35 +05:30
ktx-vaidehi 8ba5bac002 fix: dashboard camelCase issue in query (#8407)
### **PR Type**
Enhancement


___

### **Description**
- Add `getDataValue` for case-insensitive access

- Refactor data utils to use accessor

- Improve robustness of chart/table conversions

- Handle missing labels and keys safely


___

### Diagram Walkthrough


```mermaid
flowchart LR
  A["aliasUtils.getDataValue"] -- "import and use" --> B["convertSQLData"]
  A -- "import and use" --> C["convertTableData"]
  A -- "import and use" --> D["convertGeoMapData"]
  A -- "import and use" --> E["convertMapsData"]
  A -- "import and use" --> F["convertSankeyData"]
  B -- "robust key lookup" --> G["Charts options"]
  C -- "robust key lookup" --> H["Table columns/rows"]
```



<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>aliasUtils.ts</strong><dd><code>Introduce
case-insensitive data accessor</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></summary>
<hr>

web/src/utils/dashboard/aliasUtils.ts

<ul><li>Add <code>getDataValue</code> helper for alias lookup<br> <li>
Falls back to lowercase key match</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8407/files#diff-5edee3a79266ff067f9767615a887375f369c6006c4c02bb46a9b6006969e284">+18/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>convertGeoMapData.ts</strong><dd><code>Geo map uses
case-insensitive field access</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></summary>
<hr>

web/src/utils/dashboard/convertGeoMapData.ts

<ul><li>Use <code>getDataValue</code> for lat/long/weight access<br>
<li> Validate numeric values via accessor<br> <li> Build series data
with accessor</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8407/files#diff-a09221c91ab7a83aee9ba1d2ad0d5129bc5e2fb45960676677fa35a0f9d3e640">+14/-9</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>convertMapsData.ts</strong><dd><code>Choropleth data
access via accessor</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/utils/dashboard/convertMapsData.ts

<ul><li>Use <code>getDataValue</code> for country and value<br> <li>
Ensure mapping works regardless of alias casing</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8407/files#diff-5f61730637542ed11dfb6ef6e4bc72480289b16636243c98d1b628a97cbdfa55">+6/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>convertSQLData.ts</strong><dd><code>SQL conversion
refactored to accessor-based reads</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/utils/dashboard/convertSQLData.ts

<ul><li>Replace direct key reads with <code>getDataValue</code><br> <li>
Fix time-series detection and filling logic<br> <li> Safe label access
with optional chaining<br> <li> Improve aggregation and uniqueness
checks</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8407/files#diff-88c0e865040a20b2c8bb7d77e7f6bd187a5b07c1645c120223bc9d59603752c3">+50/-30</a>&nbsp;
</td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>convertSankeyData.ts</strong><dd><code>Sankey
conversion uses case-insensitive access</code>&nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/utils/dashboard/convertSankeyData.ts

<ul><li>Use <code>getDataValue</code> for source/target/value<br> <li>
Filter validity via accessor</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8407/files#diff-5d71a65195d723600a75f7c378badd487236fa8d1b93f8c3ee4a9f214945719e">+14/-6</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>convertTableData.ts</strong><dd><code>Table conversion
uses robust accessor and mappings</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/utils/dashboard/convertTableData.ts

<ul><li>Sample and read fields with <code>getDataValue</code><br> <li>
Case-insensitive column/units/color config mapping<br> <li> Safer label
and timestamp formatting<br> <li> Transpose logic uses accessor</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8407/files#diff-a672094c46e697ee7b7a3949a901cc1f7f88ec06cddaf67370474b508d5b0960">+29/-10</a>&nbsp;
</td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-09-12 15:43:02 +05:30
Subhra264 6c848afcab fix: skip when start time > end time for delayed derived stream (#8064)
### **User description**
- When delay is non-zero for derived stream, currently sometimes the
start time becomes greater than the end time. This pr fixes that by
moving to the next run where the end time eventually becomes greater
than the start time and also follows the given delay.
- Currently when updating a derived stream, it deletes the old scheduled
job, and hence the start time for the scheduled job changes. As a
result, there can be duplicate results in the derived stream because of
updates. This pr fixes this by just updating only the next_run_at field
of the scheduled_job.


___

### **PR Type**
Bug fix, Enhancement


___

### **Description**
- Prevent invalid time ranges with delay

- Align end/scheduled times consistently

- Respect free-trial by deferring runs a week

- Avoid deleting triggers on updates


___

### Diagram Walkthrough


```mermaid
flowchart LR
  A["DerivedStream trigger handling"] -- "align end time" --> B["aligned_end_time computed"]
  B -- "start <= end ?" --> C["Proceed with eval"]
  B -- "start > end" --> D["Skip to next run"]
  D -- "set Skipped status" --> E["update trigger + usage"]
  C -- "evaluate + set times" --> F["update trigger/next_run"]
  G["Free trial check"] -- "expired" --> H["defer next_run_at by 7 days"]
  I["Pipeline update"] -- "Scheduled -> Realtime" --> J["delete old trigger only on source 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><table>
<tr>
  <td>
    <details>
<summary><strong>components.rs</strong><dd><code>PipelineSource helpers
for source type checks</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

src/config/src/meta/pipeline/components.rs

<ul><li>Add helper methods <code>is_scheduled</code> and
<code>is_realtime</code><br> <li> Keep existing default
implementation</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8064/files#diff-e2d647c422ae05ac91abc683c7b11a3fb7da61ee30968ca6e84cdba40221bbb9">+10/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>mod.rs</strong><dd><code>Safer trigger deletion on
pipeline source change</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

src/service/pipeline/mod.rs

<ul><li>Delete previous scheduled trigger only when source changes<br>
<li> Add use of <code>is_realtime</code> guard during updates</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8064/files#diff-c186c796a7bdfd9d1301b1429df11456430f1d0d4758783810b9e2e44384e3b2">+12/-9</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr><tr><td><strong>Bug fix</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>handlers.rs</strong><dd><code>Robust delayed scheduling
and alignment fixes</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

src/service/alerts/scheduler/handlers.rs

<ul><li>Defer runs by 7 days for expired free-trial orgs<br> <li>
Compute aligned end and supposed run times<br> <li> Skip runs with
invalid start/end due to delay; set Skipped<br> <li> Reorder retry
handling; adjust next_run and logging<br> <li> Update trigger_data
start/end based on alignment<br> <li> Use aligned time for catch-up
logic</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8064/files#diff-5eca8995a88fcecb6d6b8efd3c7c4496f4a96a4b060fb4ed85593574f7cf49eb">+89/-39</a>&nbsp;
</td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-09-12 14:18:22 +05:30
Huaijin e7b7fe5f03 fix: str_match with function panic[main] (#8396) 2025-09-12 15:41:35 +08:00
Yashodhan JoshiandYashodhan Joshi 2bfde6bc0b fix: rewrite match_all_raw fns to match_all (#8399)
### **User description**
This adds a sql re-writer which re-writes `match_all_raw` and
`match_all_raw_ignore_case` to just `match_all` for backward
compatibility.


___

### **PR Type**
Bug fix, Tests


___

### **Description**
- Add SQL rewriter for `match_all_raw`

- Map ignore-case variant to `match_all`

- Integrate visitor into SQL pipeline

- Add unit tests for rewrites


___

### Diagram Walkthrough


```mermaid
flowchart LR
  parser["Parse SQL statement"] --> removeDash["Remove DASHBOARD_ALL placeholders"]
  removeDash --> matchAllRaw["Rewrite match_all_raw* -> match_all"]
  matchAllRaw --> columns["Collect columns/limits"]
  columns --> matchAll["Detect match_all usage"]
  matchAll --> schema["Build used schema"]
  schema --> rest["Index/optimizations pipeline"]
```



<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>mod.rs</strong><dd><code>Integrate match_all_raw
rewriter into SQL flow</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

src/service/search/sql/mod.rs

<ul><li>Import <code>MatchAllRawVisitor</code><br> <li> Visit AST to
rewrite <code>match_all_raw*</code><br> <li> Renumber subsequent
processing step comments</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8399/files#diff-dc0ab53d0ff551cf3cd12027c73d0da5e66680c0bf2d1830778639a33bac3464">+18/-13</a>&nbsp;
</td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>mod.rs</strong><dd><code>Register match_all_raw
rewriter module</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></summary>
<hr>

src/service/search/sql/rewriter/mod.rs

- Export new `match_all_raw` module


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8399/files#diff-5e0199e85e9e2501ae1c5038ca5afb773dac8501a42f08b360fbaf9ab77c0440">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></td></tr><tr><td><strong>Bug fix</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>match_all_raw.rs</strong><dd><code>New visitor to
rewrite match_all_raw variants</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

src/service/search/sql/rewriter/match_all_raw.rs

<ul><li>Add <code>MatchAllRawVisitor</code> implementing
<code>VisitorMut</code><br> <li> Rewrite <code>match_all_raw*</code>
function names to <code>match_all</code><br> <li> Include comprehensive
unit tests</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8399/files#diff-933586a29412bf099e28da7c412feeb69d8eead2d69f3ebda1ba08abb2e6a2dc">+114/-0</a>&nbsp;
</td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___

---------

Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com>
Co-authored-by: Yashodhan Joshi <yjdoc2@gmail.com>
2025-09-12 13:09:58 +05:30
Shrinath Raoandsai nikhil kethe 9bdcc8d3f8 fix: removed the check for show add destination button (#8402)
### **PR Type**
Bug fix


___

### **Description**
- Enable Add Destination button always

- Remove templates-length disable condition


___

### Diagram Walkthrough


```mermaid
flowchart LR
  BTN["Add Destination Button"] -- remove disable binding --> ENABLED["Always enabled"]
```



<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>PipelinesDestinationList.vue</strong><dd><code>Remove
conditional disable on Add button</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/components/alerts/PipelinesDestinationList.vue

<ul><li>Removed <code>:disable="!templates.length"</code> from Add
button.<br> <li> Button now clickable regardless of templates
array.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8402/files#diff-088c66f5a34e73a5350a794a772e5d905262277337c937dd36f4295072203ebf">+0/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___

Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai>
2025-09-12 12:11:23 +05:30
Omkar Kesarkhane 976fced81a fix: UI support for uuid-v7 timestamp traceid's in traces (#8286)
### **PR Type**
Bug fix, Enhancement


___

### **Description**
- Auto-adjust time range from trace bounds

- Sync URL params with trace start/end

- Expose method to update SearchBar datetime

- Minor cleanup and inline documentation


___

### Diagram Walkthrough


```mermaid
flowchart LR
  query["Trace query result"] --> check["Has single hit with start/end?"]
  check -- "yes" --> compute["Compute seconds (floor/ceil)"]
  compute -- "Index.vue" --> updateSB["SearchBar.updateNewDateTime()"]
  compute -- "TraceDetails.vue" --> urlUpdate["Update URL from/to"]
  urlUpdate --> detailsFetch["Fetch trace details with new range"]
```



<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>Index.vue</strong><dd><code>Auto-update time range
after single trace query</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/plugins/traces/Index.vue

<ul><li>Detect single-trace queries with bounds.<br> <li> Update
SearchBar datetime via new helper.<br> <li> Add
<code>updateNewDateTime</code> wrapper with docs.<br> <li> Remove
redundant filter expansion call.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8286/files#diff-952e26660e4d6aadd292ea2ef7b314e139a4f516d0b3931e20d42d6394700d07">+25/-1</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>SearchBar.vue</strong><dd><code>Expose API to
programmatically set absolute datetime</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></summary>
<hr>

web/src/plugins/traces/SearchBar.vue

<ul><li>Add <code>updateNewDateTime</code> method to set absolute
range.<br> <li> Ensure datetime ref updates consistently.<br> <li> Minor
formatting and comments.<br> <li> Export new method from setup.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8286/files#diff-43405981dab6359bdfba1ef176d74d3c557fc349f98cf6b1662fd4a021448eb1">+14/-0</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr><tr><td><strong>Bug fix</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>TraceDetails.vue</strong><dd><code>Sync URL and fetch
window with trace time bounds</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/plugins/traces/TraceDetails.vue

<ul><li>Derive start/end from trace meta when available.<br> <li>
Normalize to seconds and update URL query.<br> <li> Use updated range
for details fetch.<br> <li> Add <code>updateUrlQueryParams</code> helper
with docs.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8286/files#diff-bc7fe6b6339ee2cde6494c0982d4b860847447e79f7431f07d598e0446df06f2">+31/-2</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-09-12 10:33:35 +05:30
Hengfei Yang b72e85e0fe feat: support nats ttl marker (#8377) 2025-09-12 11:56:19 +08:00
Sai Nikhil 7bf9770b9a fix: sorting issue in query management page (#8305)
### **User description**
This PR fixes the issue that is related to sorting doesn't work properly
for more number of records for execution duration and query range


___

### **PR Type**
Bug fix, Enhancement


___

### **Description**
- Centralize duration utilities in `zincutils`

- Fix sorting by using raw seconds

- Render durations via table slots

- Improve query range formatting


___

### Diagram Walkthrough


```mermaid
flowchart LR
  utils["zincutils.ts: add time helpers"] -- "import/use" --> runningList["RunningQueriesList.vue: slot-based render"]
  utils -- "import/use" --> summaryList["SummaryList.vue: slot-based render"]
  runningQueries["RunningQueries.vue: data shaping"] -- "use raw values" --> tables["Tables sort correctly"]
```



<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>zincutils.ts</strong><dd><code>Add shared time/duration
utilities</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/utils/zincutils.ts

<ul><li>Add <code>localTimeToMicroseconds</code> helper.<br> <li> Add
<code>getDuration</code> returning seconds and formatted.<br> <li>
Export these utilities for reuse.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8305/files#diff-d3d59688cccdcc6c84ebe88b698c6910030abecc3125f4c0ef81b0df023699ba">+23/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>RunningQueriesList.vue</strong><dd><code>Render
durations via slots using utils</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/components/queries/RunningQueriesList.vue

<ul><li>Add table slots to format <code>duration</code> and
<code>queryRange</code>.<br> <li> Import and expose
<code>getDuration</code> and <code>durationFormatter</code>.<br> <li>
Display duration from <code>created_at</code> via util.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8305/files#diff-eb568491630bd1b80935cc0b02498d40274ede0e5be78593a0b49ca17fbbe627">+13/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>SummaryList.vue</strong><dd><code>Format summary
durations with table slots</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></summary>
<hr>

web/src/components/queries/SummaryList.vue

<ul><li>Add slots to format <code>duration</code> and
<code>queryRange</code>.<br> <li> Import and expose
<code>durationFormatter</code>.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8305/files#diff-d844d0a406c5fe3b58bc254f838bfa51352721174666ebd43bbf008aa6db6f5f">+12/-0</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr><tr><td><strong>Bug fix</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>RunningQueries.vue</strong><dd><code>Use raw values and
shared duration util</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></summary>
<hr>

web/src/components/queries/RunningQueries.vue

<ul><li>Import <code>getDuration</code> from utils.<br> <li> Keep
<code>duration</code> and <code>queryRange</code> as raw values.<br>
<li> Remove local <code>getDuration</code> impl.<br> <li> Adjust
pagination code formatting.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8305/files#diff-6f0e18626a986d934c08c368ac383179c56bfcd914a27619ba748f43629c926b">+6/-14</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-09-11 23:02:12 +05:30
Ashish Kolhe 49a6744266 fix: vrl panic issues (#8355) (#8366)
### **PR Type**
Bug fix, Enhancement


___

### **Description**
- Guard flattening for non-object JSON values

- Prevent panics by checking null/object types

- Improve timestamp handling on null values

- Tighten pipeline flattening conditions


___

### Diagram Walkthrough


```mermaid
flowchart LR
  VRL["VRL result"] -- "may be null/non-object" --> Guard["Check is_object && not null"]
  Guard -- "true" --> Flatten["Flatten JSON"]
  Guard -- "false" --> Bypass["Use value as-is"]
  Timestamp["Ingest timestamp"] -- "null" --> Now["Default to current time"]
  Pipeline["Pipeline nodes"] -- "flatten only objects" --> Flatten
```



<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>multi_streams.rs</strong><dd><code>Safe flattening in
multi-stream search</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

src/handler/http/request/search/multi_streams.rs

<ul><li>Flatten only when value is non-null object<br> <li> Preserve
non-object items in per-query responses<br> <li> Avoid unwrap panics by
using ok()/None</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8366/files#diff-c3233cdf1e68cb2455f91457719b9c2f477e735ee16546fdfe111e76768bd054">+13/-5</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>functions.rs</strong><dd><code>Guard VRL transform
flattening</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></summary>
<hr>

src/service/functions.rs

<ul><li>Only flatten VRL return if object<br> <li> Prevent empty-string
on non-object by-pass</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8366/files#diff-ed5611a9aa6b5c033e70d7631ba72fafad3cc842672077a7fcf965d11a4fef23">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>ingest.rs</strong><dd><code>Robust null timestamp
handling</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></summary>
<hr>

src/service/logs/ingest.rs

<ul><li>Default null timestamp to now<br> <li> Keep error on unparsable
non-null timestamps</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8366/files#diff-e62118e45be183266d39ffa08491f255017954235ff0f3d6937683e314da406f">+10/-4</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>http.rs</strong><dd><code>Safe flattening in clustered
search</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

src/service/search/cluster/http.rs

<ul><li>Flatten array items only if objects<br> <li> Guard VRL result
flattening<br> <li> Add conditional hit flattening in query_fn path</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8366/files#diff-fe0a1bbec7ef6418120544b589a531e5144b28cd2650f99135ed8a70ac17ac03">+17/-12</a>&nbsp;
</td>

</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>batch_execution.rs</strong><dd><code>Pipeline: guarded
flattening and timestamp checks</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

src/service/pipeline/batch_execution.rs

<ul><li>Flatten only non-null objects across nodes<br> <li> Apply guards
before condition/func/destination steps<br> <li> Conditional timestamp
handling only for objects<br> <li> Improve error logging and flow
control</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8366/files#diff-3f6824a6eddaf1603e5cb0f1a4311ac6a45e1ffb967266ccc1f0bba944625e69">+26/-18</a>&nbsp;
</td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-09-11 20:21:33 +05:30
52e11d3ee7 fix: o2 UI table improvements (#8033)
### **User description**
This PR improves the following 
`Fix: checkboxes as per design for alert list


Fix: general setting, platform settings modified as per design

Fix: numeric input in general settings as per design

Fix: introduced all variables according to design

Fix: secondary button, primary button, tabs, search input added

Fix: another major change related to tabs, sticky header and footer
table

Fix: light mode q-toggle redesign done for both lg and small

Fix: pipeline list as per new design

Fix: added removed padding at the child level for pipeline editor

Fix: function list table as per design changed

Fix: made filtering rows based upon filter query this is done to avoid
the issue of the table showing some height when the filter is applied
and there are no results

Fix: enrichment table list updated with latest design

Fix: added border to the last row when having less rows when filter is
applied or not applied

Fix: function list bottom header to take functions

Fix: function list header as per design

Fix: stream list table as per design

Fix: report list table as per new design

Fix: users list table changed as per design

Fix: added filter check for height so to avoid the issue of the table
showing some height when the filter is applied and there are no results

Fix: service account list table changed as per design

Fix: organization list table updated as per design

Fix: user groups as per design with app table additional props

Fix: app roles tables list updated as per design

Fix: made group roles virtual scroll to false

Fix: group users, roles, service accounts tables as per new design
system

Fix: search icon in IAM tables as per design

Fix: search history table update as per new design

Fix: search scheduler list table updated as per design

Fix: space between app tabs and search in log stream page

Fix: pagination logic modified due to pagination component introduced

Fix: aggregation to streaming aggregation label change in management
page

Fix: change sub text for streaming aggregation in management page

Fix: q-toggle for dark mode

Fix: report list added additional checks

Fix: alert destination table as per design

Fix: destination list, template list tables updated as per design

Fix: cipher keys table as per design

Fix: regex pattern list updated as per design

Fix: search input placeholder text fixed

Fix: per page options consistent with streams page

Fix: import and pipeline editor buttons changed as per design

Fix: added primary and secondary buttons in all listing pages

Fix: increased pipeline editor height

Fix: add stream in pipeline should not have more space in x direction

Fix: secondary, primary, and delete buttons modified in pipeline nodes

Fix: IAM add pages in sync

Fix: introduce toggle button in the entire application

Fix: alert folder list made sticky top title and search input

Fix: import alert primary and secondary button changed

Fix: action scripts table modified as per design

Fix: add action script file changed

Fix: add enrichment table submit and cancel at start

Fix: add stream submit and cancel buttons at start

Fix: create report changed as per new design

Fix: real user monitoring get started button

Fix: data source page reset rum token, reset token to primary button

Fix: add destination button position changed

Fix: add cipher key UI modified according to add report

Fix: organization settings toggle changed

Fix: home view layout spacing fixed

Fix: remove negative bg for delete button`


___

### **PR Type**
Enhancement


___

### **Description**
- Adopt new design system across tables

- Introduce uniform sticky headers/footers

- Replace filters with tabs and styled inputs

- Improve pagination, per-page options


___

### Diagram Walkthrough


```mermaid
flowchart LR
  design["New design tokens/components"]
  tables["Tables (Lists across app)"]
  headers["Sticky headers/footers"]
  filters["Tabs + styled search"]
  pagination["Unified pagination options"]
  ux["Consistent UX across themes"]

  design -- applied to --> tables
  tables -- enable --> headers
  tables -- replace --> filters
  tables -- standardize --> pagination
  tables -- results in --> ux
```



<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>19
files</summary><table>
<tr>
<td><strong>LogStream.vue</strong><dd><code>Header redesign, tabs,
sticky table, pagination</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-56f4223b74568c10bc305741cc9fc3a8830184a251b4eaa6a2649033bc6200e3">+82/-95</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>AlertList.vue</strong><dd><code>Header styling,
search/toggle redesign, sticky table</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-be3e41b823e163b226ffc270d95cc4981e59c600851e4e0d10ee5e4ee994ac8e">+59/-62</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>ActionScipts.vue</strong><dd><code>Styled header/search,
computed filtering, sticky table</code>&nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-6cfeff0b8dbbaba52b13ba67d6f4f8fdc3c58996eccdfae2ad0db2e7aee20f08">+71/-65</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>User.vue</strong><dd><code>New header/search, client
filtering, footer pagination</code>&nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-e973c2a665f9b27b94673ba64cc5b23650300836a727a2e07673c8e26305aee5">+63/-53</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>HomeView.vue</strong><dd><code>Card layout spacing and
grouping tweaks</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-9af441af191d3254ef5f9db603dca75486de7638cda41a3c050e7b3c33d68280">+110/-109</a></td>

</tr>

<tr>
<td><strong>ServiceAccountsList.vue</strong><dd><code>New header/search,
client filter, sticky table/footer</code>&nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-3afe835bcfbec3fda2e9550850c29581092ee0717e7dd8de8888e774a0048d24">+63/-59</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>General.vue</strong><dd><code>Platform settings UX revamp
with GroupHeader</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-a191d0eb2843df5efa7f18d411a216e86558b49f7b6cdfa9501d69414b933fc3">+144/-63</a></td>

</tr>

<tr>
<td><strong>PipelinesList.vue</strong><dd><code>Header/tabs/search
restyle, sticky table, export button</code>&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-85e3ef322f3eea0fc6d74d89431ba338a1153cb82ee06bef0f7c5f439c04267d">+52/-31</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>EnrichmentTableList.vue</strong><dd><code>Header/search
restyle, client filtering, sticky table</code>&nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-6a29e253f59405d3c0f756dba36afd7483f10ad86927cbbc3348ede6372c3077">+45/-38</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>TemplateList.vue</strong><dd><code>Header/search/buttons
restyle, sticky table/footer</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-7df66364d7d69a26cfa25cbc555d0e090c2f73e51c8386d9b0435bae4412564c">+43/-43</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>FunctionList.vue</strong><dd><code>Header/search restyle,
client filtering, sticky table</code>&nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-6ff9af50a1597504b7f0dca91e61cf30c800b4a17b4be2ed2c3a4f7a7b2d7068">+49/-39</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>ReportList.vue</strong><dd><code>Header/tabs/search restyle,
sticky table/footer, filters</code>&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-f7d700f7e67fbaba3c58ab5d2c614925db743101828214445ce9dae35dc29067">+38/-32</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>ExternalDestination.vue</strong><dd><code>Form controls
restyle, large toggles, delete node dialog</code>&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-7ed6a9ef676d7d6db5440d4157512f731bad58716c351ca39015125a8a9d2df5">+74/-15</a>&nbsp;
</td>

</tr>

<tr>

<td><strong>AlertsDestinationList.vue</strong><dd><code>Header/search/buttons
restyle, sticky table/footer</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-e9d05ba6c071c0e2f5d9ef7acdef757f79910abd6897b29e27b069a10d4ba8de">+43/-41</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>GroupHeader.vue</strong><dd><code>New shared section header
component</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-63133a31279f4f8d5631b5d33f5b12927f9dc6616b714e8c0ffc727696abbc2b">+64/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>_variables.scss</strong><dd><code>Introduce/adjust design
tokens and variables</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-b3e37ee00c17b89ad1177c5592504277aa645b374095c065ea8b3782df5e89a2">+289/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>RegexPatternList.vue</strong><dd><code>Apply unified
table/header/search styles</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-524927acd9f5bb07b71bfac489e747470108574e21a6dde63ea7c1f219cea853">+62/-56</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>CipherKeys.vue</strong><dd><code>Apply unified
table/header/search styles</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-950b715cff2c964d8542512692030c370733b57d698abf40e1dcb3cce2cfaf7a">+45/-45</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>PipelinesDestinationList.vue</strong><dd><code>Apply unified
table/header/search styles</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-088c66f5a34e73a5350a794a772e5d905262277337c937dd36f4295072203ebf">+41/-39</a>&nbsp;
</td>

</tr>

</table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>TemplateList.spec.ts</strong><dd><code>Update tests to match
new UI structure</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-83d9701e7e491fb1ac667d1e1833ec58153c04ad844560778d06d50b85bd4bc6">+0/-20</a>&nbsp;
&nbsp; </td>

</tr>
</table></details></td></tr><tr><td><strong>Additional
files</strong></td><td><details><summary>54 files</summary><table>
<tr>
  <td><strong>alertTemplatesPage.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-f4ebd248b2140051e74dbbbd1aabe344f01c80704ce5857e9c28a04350e018f3">+17/-17</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>alertsPage.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-79ee01d6d7f145f19207b93b87143b545a1188cfc6a82bc8c45fecfbf68f8a1d">+5/-5</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>dashboard-chart.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-573a312576fce62d8e14f2bbb5f9b7d9a552d746304dce3d79862edddd24de76">+3/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>AppTable.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-efcf66a9e913b5d3a7c2eea800b7f4e54d9e5268307131482fd40f32e2074d8e">+30/-13</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>EditScript.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-bf406d8f31f66d50e11b2c41f5ec13daabb4bb2e4f4612c5ff44675817ed2eca">+37/-34</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>AddAlert.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-7b426bb23e9ed0250c3877d6d97b099c42b2d20e22ddf4459915381b2233a0a8">+12/-10</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>AddDestination.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-61b295458e13049a538f5014124855d58dce664dfbd644b57a964a37a07b7a3f">+15/-12</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>AddTemplate.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-2508a43827e6b35c07f3222deebd9945101ca6bc32b9dc592e6253ab99908bba">+11/-11</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>ImportAlert.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-0f40dbf2757672e39ad16b86dddc59b568ca2e6ca36850420cd7be617da12d38">+6/-6</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>ImportDestination.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-814b8ef1dbb4eebca9dfab72452d9a90d5f3fa5886dea8e82ac0bde44f66b445">+6/-6</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>ImportTemplate.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-d22684c5142a49b8925a9dba1ef67631128caa95de66e71ba2a5b8120a0b91c6">+7/-6</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>ScheduledAlert.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-5e143a17ab0fa5d7817f6d9301667fb5597236f27184248c7a71728e85b8d999">+6/-4</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>VariablesInput.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-23a647aa1acfc95bc726629f0daa54005e3da1ed5b16482ceccef0649f680a74">+8/-11</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>AddCipherKey.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-ff5ae3a9b070fe2b3650f177ced0d87e9449ae7375a0b117ee299238293df110">+27/-15</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>AddFolder.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-41d2f8fac44084c004d8386ea4cc32e9c5d3e33266c4009cc855e57fb00a41af">+12/-14</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>FolderList.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-b97284b1720dfb524e425f49acd70f1a4e59da3d493eb2d4b3de8551b2da7141">+47/-22</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>AddEnrichmentTable.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-9aad551dbc051edfdb3994a664506ed6d5e27dcb64f9c2fa917b02e51a35d86e">+12/-10</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>FunctionsToolbar.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-8283d2ff9c4a66b4b59eac306672aca2d54655a462e2ddb88e14e039d79dcdaf">+18/-18</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>AddGroup.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-dd49436305aadc01990cd6d9ea0abf97b964195920a1b49e64e8868fcc8afa6c">+19/-23</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>AppGroups.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-402fb2a5338e60fdc3da489f4d50b5cf52f06b4e884a6fe7b82441c9fa5ea22c">+33/-22</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>EditGroup.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-6be040722d1492644adbf65250d44d28be37614d34600a73f74c816138727a40">+2/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>GroupRoles.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-d7d1d9ec26ff77175b0e961e3e53e7ced45c9211eae8a0c00f7ac1cdac88ae14">+21/-8</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>GroupServiceAccounts.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-b7afafc6b850c2d6edc2b855e78ff51d95d101937ec001a5790d130f4fb60695">+18/-7</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>GroupUsers.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-114c767db76d4a09278c765d8aba39a1936c861488f39e7f0f6b3883499a3c40">+17/-6</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>AddUpdateOrganization.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-bca5bebfa6d5f435715dc5fa948876de02fef95a84e3e663e5c7922d601b4b9d">+19/-20</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>ListOrganizations.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-572ed99323d3e36d126074eccc10b68f6eef983d92f89d06b205fef0925c93a3">+30/-37</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>Quota.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-30293eb5cb924f95356d5abd4588ce0f03765ac9d4446cf5b8cbacba23c6f979">+13/-9</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>AddRole.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-fca7dd7f91da83de52bfc40e82451a8756001af43974d592de2e03a815b21c9b">+14/-14</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>AppRoles.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-191634ef09436199f91f442968110a01f54ae46b5ceee67476f52613ad796db4">+27/-17</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>EditRole.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-263b6bc7d29fdf8358c8437cd637f1350aa3733cc2706eae8ff00028686cc0f5">+3/-3</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>AddServiceAccount.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-4e6840978e90be9195797d1b73b6cd1545ddac45cef84aa08701a9d66013c61b">+26/-28</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>AddUser.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-47543c0488c8cb5bcf77e2bb4af9d0a5dd249993cd9577c4852f7950c7aaec91">+18/-26</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>AddStream.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-78b8c84a558e60d942bacffee365633d074042e464be465eb6984b0ee5df82b9">+11/-12</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>ImportPipeline.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-d57fa41169daa44551a181f21ca33882004b29ab74e3040e4c56a8c849078670">+10/-12</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>AssociateFunction.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-24a5b2df69327a6477227ea674939dea19dd6d393b4bfcf807089d71e6391152">+25/-18</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>Condition.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-4c3e624233c9e0355c7ded3b26dc74971b867be63e24f92a5e639284f60639dd">+20/-17</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>ScheduledPipeline.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-63d8f838bb880356e7804b4a57fd9223d4f2c189de7aadc7cf33cba723b29aaf">+21/-19</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>Stream.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-1a17ced9dc89022502cab0a6f9b97b413c2a2c4f8219733d063fc0180d361739">+26/-21</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>PipelineEditor.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-68c21f647336067eb79737ce9aca2d49632f2fa1c0878bcfdae55607e3473a15">+21/-19</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>StreamSelection.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-461440be35cc15b6b78700c8a61747ea9fb601a750af5292fa2d04b6fc96d595">+10/-10</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>CreateReport.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-cf2258c64249d4f28b2a103558bce3af1c87f0b2f23fe0652b458b8c20bb9c64">+28/-30</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>AddRegexPattern.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-a3783cfbdd32609bfff45ecfa23542854cad7ae60c3d29fedb832312a4de03dc">+9/-12</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>ImportRegexPattern.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-e8e1bcb5a02311504d7d571090eab27a270aaa71cae185ad2703023e2e70a31e">+6/-6</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>OrganizationManagement.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-21e2431538cb6b76e5ef5b367c6df8fc02ad8f6c1294f438be9937c7481ea9ff">+16/-2</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>OrganizationSettings.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-54860a5d84362fe3ade0c3a50d7bacb02af3d21e1012517a0140e21f9ddabfc1">+11/-13</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>FilterCreatorPopup.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-7fa80f0424ed3b2e60b0e3ba77493b0e5d3ef98ddcf40cd103fe433d326221d7">+16/-2</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>en.json</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+5/-3</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>SearchHistory.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-9dd167bd5e272b2057f53c16b905047eec00655a3552daad240a964d67a6f56d">+30/-18</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>SearchSchedulersList.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-0c0a4097c53f07712d35562b1336602bf24faddedab77a9f5717f5582dcac2f1">+53/-27</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>app.scss</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-5703d12504b0395cbfbbfad02a592bc391496026e5f03743102ce06c210ea05f">+414/-8</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>Functions.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-ad825ec1b8d58aec9bf5d2553ea09394a30b22ac59d708bcf9e56168ca1daaf6">+1/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>IdentityAccessManagement.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-60b63024c98ee8927e12f9ebec93e99ba7ff419038cfe1cc57d49de1f6f342d6">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>Ingestion.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-97b8e8ed2a1260a39442563c7447d4f6d4830a37d47258920d6f94a292cd2d77">+9/-9</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>RealUserMonitoring.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8033/files#diff-dd099485ccafdabc8f9e63bf1610e7044680f3b7ae19a9e9c5645b351c7a8701">+3/-1</a>&nbsp;
&nbsp; &nbsp; </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-09-11 18:09:38 +05:30
0730d5f7a4 fix: landing page / Home page revamp (#6729)
### **User description**
1. This PR implements the latest UI of landing page / Home page with 2
charts for showing alerts and pipelines
2.


___

### **PR Type**
Enhancement


___

### **Description**
- Redesigned Home page layout and tiles

- Added alerts and pipelines charts

- Implemented theme-aware icons and styles

- Added loading state for summary fetch


___

### Diagram Walkthrough


```mermaid
flowchart LR
  HomeView["HomeView.vue"]
  SummaryAPI["Summary fetch & parsing"]
  Charts["CustomChartRenderer charts"]
  Tiles["Responsive metric tiles"]
  Theming["Dark/Light computed icons & styles"]
  Loading["Loading spinner state"]

  HomeView -- "fetches org summary" --> SummaryAPI
  SummaryAPI -- "sets metrics & statuses" --> Tiles
  SummaryAPI -- "feeds alert/pipeline data" --> Charts
  HomeView -- "applies theme classes" --> Theming
  HomeView -- "shows while fetching" --> Loading
```



<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>HomeView.vue</strong><dd><code>Home page redesign with
charts and theme-aware UI</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/views/HomeView.vue

<ul><li>Rebuilt template with responsive sections and tiles.<br> <li>
Added alerts pie and pipelines bar charts via CustomChartRenderer.<br>
<li> Introduced loading state, improved summary parsing, and theme-aware
<br>icons.<br> <li> Added extensive SCSS for dark/light theming and
layout.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/6729/files#diff-9af441af191d3254ef5f9db603dca75486de7638cda41a3c050e7b3c33d68280">+568/-229</a></td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___

---------

Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com>
Co-authored-by: Taiming Liu <liutaiming3@gmail.com>
Co-authored-by: Yashodhan Joshi <yjdoc2@gmail.com>
Co-authored-by: ByteBaker <42913098+ByteBaker@users.noreply.github.com>
2025-09-11 17:13:26 +05:30
Simha G 15177ad58c feat: Display Alert name on the frontend - QueryManager View (#8378)
### **User description**
# PR Type
Fix / Enhancement

# Description
Similar to Dashboard names, we are also going to display the alert names
on the frontend. To do this we need to include the alert_name detail in
the SearchEventContext payload which will be tracked by the
QueryManager. The frontend update will make the alert name be displayed
as query_source - just like dashboard name.


___

### **PR Type**
Enhancement


___

### **Description**
- Add `alert_name` to search context

- Propagate field through proto and conversions

- Display alert source in RunningQueries

- Simplify test context init with defaults


___

### Diagram Walkthrough


```mermaid
flowchart LR
  ProtoDef["cluster/search.proto adds 'alert_name'"] -- regenerates --> ProtoGen["generated cluster.rs includes alert_name"]
  ProtoGen -- maps via From --> MetaModel["meta/search.rs SearchEventContext"]
  AlertsEval["alerts/alert.rs evaluate()"] -- sets --> MetaModel
  MetaModel -- exposed in usage --> Frontend["RunningQueries.vue shows alert name"]
```



<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>search.rs</strong><dd><code>Add alert_name to
SearchEventContext and mappings</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

src/config/src/meta/search.rs

<ul><li>Add <code>alert_name</code> field to
<code>SearchEventContext</code>.<br> <li> Map <code>alert_name</code> in
From/Into proto conversions.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8378/files#diff-373e83a31e5bbc82fba05d7ae274b0dbd624ed748272232cf7eb8b8c3b2f3afc">+4/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>alert.rs</strong><dd><code>Set alert_name in alert
evaluation context</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></summary>
<hr>

src/service/alerts/alert.rs

<ul><li>Populate <code>search_event_ctx.alert_name</code> during alert
evaluation.<br> <li> Initialize mutable context then assign alert
name.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8378/files#diff-574be3504bf4d855c65fd3d7a10797a970237ff552edac4962b474b3983e094e">+3/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>RunningQueries.vue</strong><dd><code>Display alert name
as query source in UI</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></summary>
<hr>

web/src/components/queries/RunningQueries.vue

<ul><li>Compute <code>query_source</code> based on
<code>search_type</code>.<br> <li> Show <code>folder/dashboard</code>
for dashboards.<br> <li> Show <code>alert_name(alert_key)</code> for
alerts.<br> <li> Fallback to <code>-unknown-</code> when missing.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8378/files#diff-6f0e18626a986d934c08c368ac383179c56bfcd914a27619ba748f43629c926b">+10/-1</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>search.proto</strong><dd><code>Proto: add alert_name to
SearchEventContext</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

src/proto/proto/cluster/search.proto

- Add `optional string alert_name = 8;` to `SearchEventContext`.


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8378/files#diff-789f17326b818d5fbd1b5b752bed17e5341fde3d3261951634edcf78cacf3dbe">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></td></tr><tr><td><strong>Dependencies</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>cluster.rs</strong><dd><code>Regenerated proto includes
alert_name field</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

src/proto/src/generated/cluster.rs

- Include optional `alert_name` with tag 8 in generated struct.


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8378/files#diff-542d8f27a174c845740ca1c3fe0b697db89c3db666437c1c4dd8c9745510080c">+2/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></td></tr><tr><td><strong>Tests</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>ingestion.rs</strong><dd><code>Simplify test context
with default struct update</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

src/service/self_reporting/ingestion.rs

<ul><li>Use <code>..Default::default()</code> to fill unused context
fields.<br> <li> Keep only <code>dashboard_id</code> explicitly set in
test.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8378/files#diff-3edd5f4ed1eed0f765b7b450ef0fbf587632e6b22302006a5e397049e297057f">+1/-6</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-09-11 15:29:17 +05:30
Bhargav dce3f30283 feat: provided search on indextype selection along with name field. (#8333)
### **PR Type**
Enhancement


___

### **Description**
- Extend filter to search index types

- Support label-to-value index type matching

- Handle empty search gracefully

- Refactor loop with match flag


___

### Diagram Walkthrough


```mermaid
flowchart LR
  A["User search term"] -- "normalize to lowercase" --> B["searchTerm"]
  B -- "map labels→values from streamIndexType" --> C["labelToValueMap"]
  D["Rows iteration"] -- "name match OR index_type match" --> E["match = true"]
  C -- "label lookup equals stored value" --> E
  E -- "if match push row" --> F["filtered 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>Enhancement</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>schema.vue</strong><dd><code>Add index type label-aware
filtering</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/components/logstream/schema.vue

<ul><li>Add lowercase search term handling.<br> <li> Map index type
labels to values for matching.<br> <li> Support matching by name and
index_type in both modes.<br> <li> Refactor loop using a match flag and
early checks.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8333/files#diff-9196be2ccae4054a00b0b1aa9d1e87b366c10920d6eaf9ef8c6e6293d50bcf46">+52/-9</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-09-11 13:42:40 +05:30
Hengfei Yang 5d6700fa58 feat: add per-stream flatten level configuration (#8353) 2025-09-11 15:05:31 +08:00
Bhargav 9235fa7bc3 feat: highlight stream fields when part of default environment quick … (#8336)
### **User description**
…mode settings


___

### **PR Type**
Enhancement, Documentation


___

### **Description**
- Highlight env quick mode fields in schema

- Add tooltip and icon for quick mode

- Localize tooltip message in English


___

### Diagram Walkthrough


```mermaid
flowchart LR
  SchemaVue["schema.vue component"] -- checks --> StoreQuickFields["store.state.zoConfig.default_quick_mode_fields"]
  SchemaVue -- renders --> NameCell["Field name cell with icon + tooltip"]
  ThemeStore["store.state.theme"] -- selects --> QuickIcon["quick_mode(_light).svg"]
  i18nEn["en.json"] -- provides --> TooltipText["logStream.envQuickModeMsg"]
```



<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>schema.vue</strong><dd><code>Visual cue and tooltip for
env quick mode fields</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/components/logstream/schema.vue

<ul><li>Render quick mode icon next to field name.<br> <li> Show tooltip
using <code>logStream.envQuickModeMsg</code>.<br> <li> Add
<code>isEnvQuickModeField</code> helper using store config.<br> <li>
Compute icon per theme via <code>quickModeIcon</code>.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8336/files#diff-9196be2ccae4054a00b0b1aa9d1e87b366c10920d6eaf9ef8c6e6293d50bcf46">+32/-5</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>en.json</strong><dd><code>Add i18n message for quick
mode tooltip</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></summary>
<hr>

web/src/locales/languages/en.json

<ul><li>Add <code>envQuickModeMsg</code> translation string.<br> <li>
Maintain trailing commas consistency.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8336/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+2/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-09-11 11:56:38 +05:30
Hengfei Yang 09c09659fd feat: add tokio runtime metrics collection (#8371) 2025-09-11 13:34:29 +08:00
Neha P 50490671db test: create org testcases (#8362)
### **PR Type**
Tests, Enhancement


___

### **Description**
- Add comprehensive org CRUD Playwright tests

- Implement org delete via API and UI

- Add helper to extract org identifier

- Fix verifyOrgNotExists usage and CI suite


___

### Diagram Walkthrough


```mermaid
flowchart LR
  Tests["New Playwright org tests"] -- "uses" --> CreateOrgPage["CreateOrgPage page object"]
  CreateOrgPage -- "adds" --> DeleteAPI["deleteOrgViaAPI()"]
  CreateOrgPage -- "adds" --> DeleteUI["deleteOrgViaUI()"]
  CreateOrgPage -- "adds" --> GetIdentifier["getOrgIdentifierFromTable()"]
  Workflow["GitHub Actions workflow"] -- "runs" --> Tests
```



<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>createOrgPage.js</strong><dd><code>Enhance
CreateOrgPage with delete and identifier utilities</code></dd></summary>
<hr>

tests/ui-testing/pages/generalPages/createOrgPage.js

<ul><li>Import Playwright <code>expect</code>.<br> <li> Remove param
from <code>verifyOrgNotExists</code>.<br> <li> Add
<code>deleteOrgViaAPI</code> with Basic Auth DELETE call.<br> <li> Add
<code>deleteOrgViaUI</code> with fallback selectors and confirm
flow.<br> <li> Add <code>getOrgIdentifierFromTable</code> utility
parsing table cells.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8362/files#diff-e3ff7268323b35f1798acb81fcd3541e0d2ee7c283124a064854ac9f6e67beb8">+113/-3</a>&nbsp;
</td>

</tr>
</table></td></tr><tr><td><strong>Tests</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>org.spec.js</strong><dd><code>New Playwright org
management E2E tests</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></summary>
<hr>

tests/ui-testing/playwright-tests/GeneralTests/org.spec.js

<ul><li>Add full CRUD and validation test suite.<br> <li> Cover API/UI
creation, search, negatives, special chars.<br> <li> Implement cleanup
via API with UI fallback.<br> <li> Use test logger and base navigation
setup.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8362/files#diff-ab00b9371adadcb16226e3afb422dcab9e6fb0b99a3b43766d4bdda6b12f4378">+556/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>usersOrg.spec.js</strong><dd><code>Fix
verifyOrgNotExists usage in user-org tests</code>&nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

tests/ui-testing/playwright-tests/GeneralTests/usersOrg.spec.js

<ul><li>Update <code>verifyOrgNotExists</code> call signature.<br> <li>
Remove redundant <code>expect</code> argument.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8362/files#diff-0bf40521e88d2cf427617e49affa14d4ebe469b6da4ea4aeef4fe3e246eb24c7">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>playwright.yml</strong><dd><code>Run organization tests
in CI workflow</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

.github/workflows/playwright.yml

<ul><li>Add <code>org.spec.js</code> to CI run files.<br> <li> Ensure
org tests run in workflow.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8362/files#diff-7afcd2d8f7b49bda74843f209eefb7b2da45f7e7803bf2e4bd636699b76aa2d3">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-09-10 19:09:08 +05:30
Simha G 19574955fe chore: Update canonnicalization step for scan_files_filtered to be more async (#8364)
### **User description**
# PR type
Chore / Code improvement

# Description
We are addressing Greptile's complaint about Path::canonnicalize
negating the async benefits and suggested tokio::fs::cannonicalize. Now
all path canonnicalizations are performed asynchronously.

create_wal_dir_datetime_filter is now refactored into async_file.rs
where its companion function scan_file_filtered() exists.


___

### **PR Type**
Enhancement


___

### **Description**
- Switch to async canonicalization with Tokio

- Defer canonicalization after filtering files

- Batch resolve paths via join_all

- Preserve limit before async canonicalization


___

### Diagram Walkthrough


```mermaid
flowchart LR
  A["Dir entries stream"] -- "filter files" --> B["PathBuf list (uncanonicalized)"]
  B -- "apply limit (optional)" --> C["Bounded list"]
  C -- "tokio::fs::canonicalize (join_all)" --> D["Canonical paths (String)"]
```



<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>async_file.rs</strong><dd><code>Replace blocking
canonicalize with async batched canonicalize</code></dd></summary>
<hr>

src/config/src/utils/async_file.rs

<ul><li>Remove blocking <code>PathBuf::canonicalize</code> in
walker.<br> <li> Collect uncanonicalized files, then async
canonicalize.<br> <li> Use <code>futures::future::join_all</code> with
<code>tokio::fs::canonicalize</code>.<br> <li> Preserve string
conversion and error filtering.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8364/files#diff-8275f369cab85b5e9a97ed11d236de3364850b6989698936f19e70a0144e6a0d">+10/-8</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-09-10 20:27:15 +08:00
Simha G 419d60ff4e chore: Move async scan_files_filtered() into appropriate async_file module (#8358) 2025-09-10 19:13:02 +08:00
Hengfei Yang 6e614f23e3 fix: user update mode for enterprise (#8363) 2025-09-10 19:08:09 +08:00