mirror of
https://github.com/openobserve/openobserve.git
synced 2026-11-05 16:10:43 +00:00
111a67b73d21d8cf45253efdddb122b127018565
2267
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
111a67b73d | fix: return proper error for incorrect function panic (#7708) (#8021) | ||
|
|
cd00d5b06c |
feat: dashboard color based on series name (#7941)
### **PR Type** Enhancement, Bug fix ___ ### **Description** - Add "Color by series" UI and schema - Apply custom series colors in charts - Emit and wire series data for config - Improve autocomplete filtering robustness ___ ### Diagram Walkthrough ```mermaid flowchart LR UI["ConfigPanel adds ColorBySeries UI"] -- "saves mappings" --> Schema["color.colorBySeries in panel schema"] Charts["PanelSchemaRenderer emits series data"] -- "series-data-update" --> Pages["Visualize/Metrics/AddPanel pages"] Pages -- "pass seriesData" --> UI Colors["applySeriesColorMappings + getSeriesColor"] -- "resolve colors" --> ECharts["ECharts series options"] ``` <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>13 files</summary><table> <tr> <td><strong>mod.rs</strong><dd><code>Add colorBySeries schema and struct</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-da49585bbcb02bf0f737bb68739ebc248edd15c7ad9427c0e68f7728bb4a8c17">+14/-0</a> </td> </tr> <tr> <td><strong>PanelSchemaRenderer.vue</strong><dd><code>Emit series data updates to parents</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-e5376e7e77bf3aaf6590c2522d8c2dbffcc95a8006ae0d6dc0040a37825367d6">+6/-0</a> </td> </tr> <tr> <td><strong>ColorBySeries.vue</strong><dd><code>New Color by series config entrypoint</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-2783259507b45f0b3664d9be68ca236690bbbf151472da3fa8b552d230af5b3f">+126/-0</a> </td> </tr> <tr> <td><strong>ColorBySeriesPopUp.vue</strong><dd><code>New popup to map series to colors</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-8b4dce28a203ce7e70550d6437f16e7661d5a4ecaf336de3450a8dc7fbe5e27a">+385/-0</a> </td> </tr> <tr> <td><strong>ConfigPanel.vue</strong><dd><code>Integrate ColorBySeries and accept panelData</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-c3a6e64dff02b58bb7cdc3f0668990b41ff41544b4c5e991bbcd989ad4bba3f8">+5/-3</a> </td> </tr> <tr> <td><strong>VisualizeLogsQuery.vue</strong><dd><code>Wire series-data-update and pass to ConfigPanel</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-979b01d943d58c5d70faeeac5948b7f02f0b2392a12b84ef07ba7f7393ab0261">+34/-7</a> </td> </tr> <tr> <td><strong>Index.vue</strong><dd><code>Capture series data and pass to ConfigPanel</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-a6734928ea4dcb5244e90de5a16fe6f5cafa95ccf58430ac7b548a065daf3d61">+11/-0</a> </td> </tr> <tr> <td><strong>AddPanel.vue</strong><dd><code>Capture panel series data for config</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-c9632db1ad95af95aba10161bcbc7c5608318919f228637bdafae3f3a31267e8">+11/-1</a> </td> </tr> <tr> <td><strong>useDashboardPanel.ts</strong><dd><code>Add defaults for mappings and colorBySeries</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-fbba1700750053b9eaf38ddd30dab84531bc44131c795ebb713811e4930cd7cb">+2/-0</a> </td> </tr> <tr> <td><strong>colorPalette.ts</strong><dd><code>Prefer custom colorBySeries mapping</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-30ac812743f2388c4061647fac5e9f413bfe561f1fc5d4f6f7be82fce73f2840">+11/-0</a> </td> </tr> <tr> <td><strong>convertDataIntoUnitValue.ts</strong><dd><code>Add applySeriesColorMappings helper</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-14c6fe442ef231566ec411f9e0262cdd24ec912fc67b9154eec743282ab7211a">+82/-0</a> </td> </tr> <tr> <td><strong>convertPromQLData.ts</strong><dd><code>Apply mapped colors to PromQL charts</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-68d70ba6c622911d48cdb567940dc404a4a6468b86c6d24fb54e5f1d8aa5ca2a">+9/-0</a> </td> </tr> <tr> <td><strong>convertSQLData.ts</strong><dd><code>Apply mapped colors to SQL charts</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-88c0e865040a20b2c8bb7d77e7f6bd187a5b07c1645c120223bc9d59603752c3">+13/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Formatting</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>CommonAutoComplete.vue</strong><dd><code>Fix watch comma and cleanup</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-35f59b61336a5ba3f5933f6803e8e2cc84ced59c3f0bea25f370bb2e3d21849b">+1/-2</a> </td> </tr> </table></details></td></tr><tr><td><strong>Bug fix</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>useSearchInputUsingRegex.ts</strong><dd><code>Guard nulls in option filtering</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7941/files#diff-f901991c2e465430e9b2434405852ac225ff94f5adfcfeb0ad0e80fdaadd0f4b">+6/-2</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
3458678f3a |
feat: Query Optimiser cli (#7745) (#7748)
### **PR Type**
Enhancement
___
### **Description**
- Add `query-optimiser` subcommand with required flags
- Dispatch to `query_optimiser` handler in CLI
- Introduce `query_optimiser` module with enterprise logic
- Fallback stub when enterprise feature disabled
___
### Diagram Walkthrough
```mermaid
flowchart LR
CLIApp["CLI Application"] --> Dispatch["Subcommand Dispatch"]
Dispatch -- "query-optimiser" --> QueryOpt["query_optimiser Module"]
QueryOpt -- "feature enterprise" --> GetRec["get_recommendations API"]
QueryOpt -- "no enterprise" --> Fallback["Unsupported Handler"]
```
<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>cli.rs</strong><dd><code>Add query-optimiser command
handling</code>
</dd></summary>
<hr>
src/cli/basic/cli.rs
<ul><li>Added <code>query-optimiser</code> command definition<br> <li>
Defined arguments: url, token, duration, etc.<br> <li> Implemented match
branch for dispatch</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7748/files#diff-cb1eb3e74723d891353ccf1e2e5e0d246d2e78a5e69dbe4c73006ea8412d65e0">+70/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>query_optimiser.rs</strong><dd><code>Implement
query_optimiser functionality</code>
</dd></summary>
<hr>
src/cli/basic/query_optimiser.rs
<ul><li>Created <code>query_optimiser</code> module file<br> <li>
Enterprise feature calls <code>get_recommendations</code><br> <li>
Fallback prints unsupported message</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7748/files#diff-69a90f896bb4c373e3f710b55453404c9cfd1d4b17a8d57a835e2b07de9a85fe">+64/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>mod.rs</strong><dd><code>Register query_optimiser
module</code>
</dd></summary>
<hr>
src/cli/basic/mod.rs
- Registered new `query_optimiser` module
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7748/files#diff-8820944bd26c070b4d7d80c21d699937e32f8f8d0f3dad496edf580bd83aa321">+1/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
d28b5064d8 |
fix: handle non-empty base-uri in router (main) (#8032)
### **User description** cherry pick of https://github.com/openobserve/openobserve/pull/8016 on main, with added tests. ___ ### **PR Type** Bug fix, Tests ___ ### **Description** - Respect non-empty base URI in routing - Update dispatcher to pass base URI - Strip base URI before route matching - Add tests covering base URI logic ___ ### Diagram Walkthrough ```mermaid flowchart LR Req["Incoming request path"] -- includes base URI --> Strip["Strip base_uri prefix"] Strip -- api_path --> Match["Match querier/ingester routes"] Match -- node discovery --> Proxy["Proxy to appropriate node"] Tests["Tests"] -- validate --> Strip ``` <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>mod.rs</strong><dd><code>Base URI-aware routing and tests</code> </dd></summary> <hr> src/router/http/mod.rs <ul><li>Pass <code>cfg.common.base_uri</code> into <code>get_url</code>.<br> <li> Update <code>get_url</code> to strip <code>base_uri</code> from paths.<br> <li> Base path used for <code>is_querier_route</code> now <code>api_path</code>.<br> <li> Add async test <code>test_with_base_uri</code> for base URI cases.</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8032/files#diff-d7987e62dcc7b1ec1bd4aeabef94f85d8c41b2ea33de5ab78660794fa4d51a9e">+22/-3</a> </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> |
||
|
|
a99527ce52 | fix: tantivy row_id to AccessPlan (#8034) | ||
|
|
c51142de03 | fix: streaming aggregate config (#8029) | ||
|
|
2ce1fba5d3 |
fix: add max bytes for nats stream (#8009)
### **PR Type**
Enhancement, Bug fix
___
### **Description**
- Add NATS queue max size config
- Validate and default NATS size to 2GB
- Convert GB setting to bytes at init
- Apply max_bytes to JetStream stream
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Config: Add `queue_max_size` (GB)"] -- "init validation" --> B["`check_nats_config`: default 2GB if 0"]
B -- "convert to bytes" --> C["Store bytes in cfg.nats.queue_max_size"]
C -- "use in stream config" --> D["NATS JetStream: set `max_bytes`"]
```
<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 NATS
`queue_max_size`</code>
</dd></summary>
<hr>
src/config/src/config.rs
<ul><li>Add <code>queue_max_size</code> env config (GB, default 0)<br>
<li> Validate NATS config, default to 2GB if 0<br> <li> Convert size
from GB to bytes during init<br> <li> Wire
<code>check_nats_config</code> into global init</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8009/files#diff-9aeee4a74c0520daa40f9b81c7016f5b6b3254375b968dd7598e745630980d62">+19/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>nats.rs</strong><dd><code>Use config to set JetStream
max_bytes</code>
</dd></summary>
<hr>
src/infra/src/queue/nats.rs
<ul><li>Apply <code>cfg.nats.queue_max_size</code> to JetStream
<code>max_bytes</code><br> <li> Enforce retention by size alongside age
limits</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8009/files#diff-b05729b03dff9a5e29eaf536d0f90e94a0c27a27d1a3a41b52f25dc6dc380138">+1/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
3eb271620a | refactor: try move remotescan, stream aggregate, topk from rewrite to optimize rule (#7998) | ||
|
|
1d0490875b |
fix: is_multi_stream_search and enable_align_histogram (#8003)
### **User description** Fixes: - https://github.com/openobserve/openobserve/issues/7986 ### **PR Type** Enhancement, Bug fix ___ ### **Description** - Add multi-stream search histogram support - Gate histogram alignment via query flag - Remove unused search_type plumbing - Propagate multi-stream flag through services ___ ### Diagram Walkthrough ```mermaid flowchart LR HTTP["HTTP handlers"] GRPC["gRPC handlers"] Utils["HTTP query utils"] SQL["SQL utils: histogram eligibility"] Hist["SQL: histogram query builder"] Svc["Search service"] Cache["Search cache"] Stream["Streaming pipeline"] Utils -- "parse is_multi_stream_search / enable_align_histogram" --> HTTP Utils -- "parse flags" --> GRPC HTTP -- "pass flags" --> Svc GRPC -- "pass flags" --> Svc Svc -- "eligibility check (multi/unified)" --> SQL Svc -- "partitioning uses align flag" --> Svc Svc -- "search() with multi-stream flag" --> Cache Cache -- "eligibility(query, multi)" --> SQL HTTP -- "convert_to_histogram_query(..., multi)" --> Hist Stream -- "do_search(..., multi)" --> Cache Hist -- "build single/multi-stream histogram query" --> Svc ``` <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>15 files</summary><table> <tr> <td><strong>http.rs</strong><dd><code>Parse multi-stream and align histogram flags</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-3b50a69c1ec2f63f8eebb5f9880e17826463a586768aed3e3e15242833609d6b">+20/-0</a> </td> </tr> <tr> <td><strong>search.rs</strong><dd><code>Remove SearchPartitionRequest.search_type field</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-373e83a31e5bbc82fba05d7ae274b0dbd624ed748272232cf7eb8b8c3b2f3afc">+0/-3</a> </td> </tr> <tr> <td><strong>sql.rs</strong><dd><code>Add multi-stream histogram eligibility (UNION ALL)</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-a0a09c66a20d878ec7683ae222c919fbe092b8001871ade7f455b89573ce0911">+134/-38</a></td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Pass multi-stream flag into search service</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-8dcdb10340635be8bb58d45a815569026877f6fdbb3b69a773a30698b91674b0">+3/-0</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Wire flags; histogram conversion uses multi-stream</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-96630a0dbb6dd7b2b0248fa325c7c7041ce31340c32826675a4a70772e9d29f6">+11/-7</a> </td> </tr> <tr> <td><strong>multi_streams.rs</strong><dd><code>Partition multi: add align flag; remove search_type</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-c3233cdf1e68cb2455f91457719b9c2f477e735ee16546fdfe111e76768bd054">+10/-9</a> </td> </tr> <tr> <td><strong>search_inspector.rs</strong><dd><code>Pass multi-stream flag in search profile</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-f818db4ca10b411c3559cc2a2659c49a59a45ecde0e4a22f9ef023da0bf4a009">+1/-0</a> </td> </tr> <tr> <td><strong>search_stream.rs</strong><dd><code>Stream API supports multi-stream histogram and flag</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-642de43ff6b19ae41087a9f1efc02d8b0b873809e0c92cbddfac1a30ef3f1184">+9/-3</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Propagate multi-stream flag in traces search</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-64694c886c809b6efe449e6eba9fbb33d31ce5a3c49cea1a30006fc1d9522665">+2/-0</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Cache search considers multi-stream eligibility</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-f07bfacc0501b9c234e64b16c1dd8eb0ae8fcbe231f90c81fed72bcc94946f74">+2/-1</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Align partitions via flag; multi partition API updates</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-c3b85ea662a885fbd39797968928b291cb59a58f53a03f7b7dfd7ba8b6a7985a">+22/-12</a> </td> </tr> <tr> <td><strong>histogram.rs</strong><dd><code>Build histogram for multi-stream queries (UNION ALL)</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-a5fc4cd11b3ec569b4cedf278ef0b14f540504abfbb23e29eb896d5b2a6cc2b2">+64/-8</a> </td> </tr> <tr> <td><strong>cache.rs</strong><dd><code>Streaming cache handles multi-stream flag</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-55769b7cb67b550daf45363c6d7d569b39d4a6235f6a68c091beb40f16b6511e">+3/-0</a> </td> </tr> <tr> <td><strong>execution.rs</strong><dd><code>Execution path passes multi-stream flag to searches</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-75d432351865224f0b00d7cc819554c2ad5fa1f777e9c645d91a3fd5c1113bc0">+25/-4</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Stream request processing threads multi-stream flag</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-f236c6c880ed80233fd264e657d5ab658c16c7368bdc70e20f123862b7214374">+4/-0</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ ___ ### **PR Type** Enhancement, Bug fix ___ ### **Description** - Add multi-stream histogram query support - Align histogram via query flag - Remove search_type plumbing in partitions - Propagate multi-stream flag end-to-end ___ ### Diagram Walkthrough ```mermaid flowchart LR Http["HTTP handlers"] Grpc["gRPC handlers"] Utils["HTTP query utils"] Front["Web client"] Service["Search service"] Cache["Search cache"] SQLU["SQL utils: histogram eligibility"] Hist["Histogram query builder"] Front -- "is_multi_stream, align flag" --> Http Utils -- "parse is_multi_stream/align" --> Http Http -- "enable_align_histogram" --> Service Http -- "is_multi_stream_search" --> Cache Grpc -- "flags default false" --> Service Cache -- "eligibility(sql, multi)" --> SQLU Http -- "convert_to_histogram_query(..., multi)" --> Hist Service -- "partition(gen interval if enabled)" --> Service ``` <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>http.rs</strong><dd><code>Parse multi-stream and align-histogram flags</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-3b50a69c1ec2f63f8eebb5f9880e17826463a586768aed3e3e15242833609d6b">+20/-0</a> </td> </tr> <tr> <td><strong>search.rs</strong><dd><code>Remove search_type from partition request</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-373e83a31e5bbc82fba05d7ae274b0dbd624ed748272232cf7eb8b8c3b2f3afc">+0/-4</a> </td> </tr> <tr> <td><strong>sql.rs</strong><dd><code>Histogram eligibility with multi-stream UNION ALL</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-a0a09c66a20d878ec7683ae222c919fbe092b8001871ade7f455b89573ce0911">+134/-38</a></td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Pass default multi-stream flag to service</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-8dcdb10340635be8bb58d45a815569026877f6fdbb3b69a773a30698b91674b0">+3/-0</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Add flags to HTTP search; align histogram handling</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-96630a0dbb6dd7b2b0248fa325c7c7041ce31340c32826675a4a70772e9d29f6">+11/-7</a> </td> </tr> <tr> <td><strong>multi_streams.rs</strong><dd><code>Partition multi endpoint supports align flag</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-c3233cdf1e68cb2455f91457719b9c2f477e735ee16546fdfe111e76768bd054">+10/-9</a> </td> </tr> <tr> <td><strong>search_inspector.rs</strong><dd><code>Forward multi-stream flag in inspector search</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-f818db4ca10b411c3559cc2a2659c49a59a45ecde0e4a22f9ef023da0bf4a009">+1/-0</a> </td> </tr> <tr> <td><strong>search_stream.rs</strong><dd><code>Streaming search supports multi-stream histogram</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-642de43ff6b19ae41087a9f1efc02d8b0b873809e0c92cbddfac1a30ef3f1184">+9/-3</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Forward multi-stream flag in traces helpers</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-64694c886c809b6efe449e6eba9fbb33d31ce5a3c49cea1a30006fc1d9522665">+2/-0</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Eligibility check aware of multi-stream</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-f07bfacc0501b9c234e64b16c1dd8eb0ae8fcbe231f90c81fed72bcc94946f74">+2/-1</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Align histogram in partition; multi aggregate</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-c3b85ea662a885fbd39797968928b291cb59a58f53a03f7b7dfd7ba8b6a7985a">+22/-12</a> </td> </tr> <tr> <td><strong>histogram.rs</strong><dd><code>Build single/multi-stream histogram SQL</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-a5fc4cd11b3ec569b4cedf278ef0b14f540504abfbb23e29eb896d5b2a6cc2b2">+64/-8</a> </td> </tr> <tr> <td><strong>cache.rs</strong><dd><code>Propagate multi-stream flag in streaming cache</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-55769b7cb67b550daf45363c6d7d569b39d4a6235f6a68c091beb40f16b6511e">+3/-0</a> </td> </tr> <tr> <td><strong>execution.rs</strong><dd><code>Pass multi flag through streaming execution</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-75d432351865224f0b00d7cc819554c2ad5fa1f777e9c645d91a3fd5c1113bc0">+25/-4</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Wire multi-stream flag across streaming path</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-f236c6c880ed80233fd264e657d5ab658c16c7368bdc70e20f123862b7214374">+4/-0</a> </td> </tr> <tr> <td><strong>IndexList.vue</strong><dd><code>Use align flag in partition requests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-08f058f883b659e713e606991a7ea37ae1ff016b7cccef970489ab5840dc3d09">+1/-1</a> </td> </tr> <tr> <td><strong>usePanelDataLoader.ts</strong><dd><code>Toggle align histogram for dashboards</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-5a42e9493a7bcd722b88e61fd38883c4f61001bc9cafa399f65f8eafda3aace9">+3/-1</a> </td> </tr> <tr> <td><strong>useLogs.ts</strong><dd><code>Multi-stream histogram flow and params</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-1040f61354f92711e0e77ed4e9bfa15586d45a94c7e2ab06cc37372068030e7b">+3/-2</a> </td> </tr> <tr> <td><strong>search.ts</strong><dd><code>API params for is_multi_stream and align flag</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8003/files#diff-885ab872dbc6e7b20264df815e3ef4727f0abc86ce90d2fb47e4aff572814c75">+7/-5</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: Bhargav <BJP232004@GMAIL.COM> Co-authored-by: ktx-abhay <abhay.padamani@kiara.tech> Co-authored-by: Shrinath Rao <shnath@openobserve.ai> Co-authored-by: omkark06 <omkar@zinclabs.io> Co-authored-by: ktx-akshay <akshay.patil@kiara.tech> |
||
|
|
cb07c8af7e |
fix: improve alert manager error handling (#7936)
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Add robust trigger usage reporting on failures
- Improve retry/backoff and next-run updates
- Respect alert/report realtime and free-trial states
- Add scheduler debug logs and report success log
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Scheduler workers"] -- process --> B["Alert triggers"]
A -- process --> C["Report triggers"]
B -- failures/conditions --> D["Update trigger (status/next_run/retries)"]
C -- failures/conditions --> D
B -- publish --> E["Trigger usage telemetry"]
C -- publish --> E
A -- keep-alive --> F["Job keep-alive logs"]
G["Report sender"] -- success --> H["Info log: report sent"]
```
<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>handlers.rs</strong><dd><code>Stronger trigger failure
handling, retries, and telemetry</code></dd></summary>
<hr>
src/service/alerts/scheduler/handlers.rs
<ul><li>Compute queue timing and source node metadata<br> <li> Publish
TriggerData on alert/report fetch failures<br> <li> Refactor trigger
updates: retries, next_run_at, realtime<br> <li> Handle free-trial:
reschedule next run appropriately</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7936/files#diff-5eca8995a88fcecb6d6b8efd3c7c4496f4a96a4b060fb4ed85593574f7cf49eb">+151/-29</a></td>
</tr>
<tr>
<td>
<details>
<summary><strong>reports.rs</strong><dd><code>Log report send
success</code>
</dd></summary>
<hr>
src/service/dashboards/reports.rs
- Log info on successful report send
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7936/files#diff-07dd8993c92038fa1197f9a4b6fe141d310854fbc5859d76ee8723fb90871312">+1/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>worker.rs</strong><dd><code>Add detailed scheduler
debug logs</code>
</dd></summary>
<hr>
src/service/alerts/scheduler/worker.rs
<ul><li>Add debug log after trigger processing<br> <li> Add debug log
for keep-alive extension</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7936/files#diff-3d37991258d3f26b16ad99bba59b63adfa614bfbc4866c4088544ca9308ae49d">+10/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
db454f2d50 |
fix: use uds fields length for file move (#7813)
### **PR Type**
Bug fix
___
### **Description**
- Pass UDS schema field count to merge_files
- Compute `num_uds_fields` from stream settings
- Use UDS count when determining field number
- Fallback to full schema fields if none defined
___
<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>parquet.rs</strong><dd><code>Add and use UDS fields
count in merge logic</code>
</dd></summary>
<hr>
src/job/files/parquet.rs
<ul><li>Extract <code>num_uds_fields</code> from
<code>stream_settings</code><br> <li> Extend <code>merge_files</code>
signature with <code>num_uds_fields</code><br> <li> Use
<code>num_uds_fields</code> over schema fields when > 0<br> <li> Retain
default schema field count otherwise</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7813/files#diff-27f710981cfe1b938aeeb53abaed05961596c32e2edf3b8a2a59d3e72b2f542b">+10/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
cd08a60baf |
fix: vrl error report fn name (#7968) (#7973)
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Include function name in node errors
- Propagate optional fn name through channel
- Truncate VRL error messages to 500 chars
- Minor refactors in VRL apply path
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["process_node errors"] -- "send (node_id, type, msg, fn)" --> B["error channel tuple +fn"]
B -- "collect" --> C["PipelineError.add_node_error(..., fn)"]
C -- "store" --> D["NodeErrors.function_name (Option)"]
A -- "VRL errors truncated" --> B
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>error.rs</strong><dd><code>Add function name to node
error metadata</code>
</dd></summary>
<hr>
src/config/src/meta/self_reporting/error.rs
<ul><li>Add <code>function_name</code> to <code>NodeErrors</code>
(optional).<br> <li> Extend <code>add_node_error</code> to accept
<code>fn_name</code>.<br> <li> Update <code>NodeErrors::new</code> to
take <code>function_name</code>.<br> <li> Fix tests to include
<code>function_name: None</code>.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7973/files#diff-00a00a557343475be7131843f748fbae2d0c1a4041a5c4dddec56c940a03e613">+13/-3</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Bug fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>batch_execution.rs</strong><dd><code>Propagate fn name
and trim VRL error messages</code>
</dd></summary>
<hr>
src/service/pipeline/batch_execution.rs
<ul><li>Extend error channel to carry optional function name.<br> <li>
Pass function name for FunctionNode errors.<br> <li> Truncate VRL error
messages to 500 chars.<br> <li> Minor VRL apply and stream_name handling
tweaks.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7973/files#diff-3f6824a6eddaf1603e5cb0f1a4311ac6a45e1ffb967266ccc1f0bba944625e69">+60/-35</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Formatting</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>mod.rs</strong><dd><code>Minor formatting
cleanup</code>
</dd></summary>
<hr>
src/service/self_reporting/mod.rs
- Remove superfluous blank line.
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7973/files#diff-c6255010f7a87d6acdb3ad04954fc9f2c27350ae319c53a1857b120aa06408a3">+0/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
6921d9ad96 |
refactor: remove warn(dead_code) annotation from Immutable (#8006)
Remove unnecessary `#[warn(dead_code)]` annotation from `Immutable` struct. Co-authored-by: Hengfei Yang <hengfei.yang@gmail.com> |
||
|
|
9f5aa745a7 |
feat: remove tantivy footer cache (#8004)
### **User description**
We can't control the memory with the cache, it doesn't only cache footer
it will cache all the data, it caused memory issue. so i removed this
feature.
___
### **PR Type**
Enhancement, Bug fix
___
### **Description**
- Remove Tantivy reader cache feature
- Drop related config flag and module
- Rename result cache static to `GLOBAL_CACHE`
- Expose result cache size and memory stats
___
### Diagram Walkthrough
```mermaid
flowchart LR
cfg["Config: remove inverted index reader cache flag"]
http["HTTP status: report Tantivy result cache stats"]
grpc_use["gRPC search: remove reader cache usage"]
resultCache["Result cache: rename to GLOBAL_CACHE + stats"]
module["Puffin directory: remove reader_cache module"]
cfg -- "delete ZO_INVERTED_INDEX_CACHE_ENABLED" --> grpc_use
grpc_use -- "open index per request (no reader cache)" --> module
grpc_use -- "use GLOBAL_CACHE get/put" --> resultCache
http -- "display len + memory_size" --> resultCache
module -- "cleanup module export" --> ( )
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>config.rs</strong><dd><code>Drop inverted index reader
cache config flag</code>
</dd></summary>
<hr>
src/config/src/config.rs
<ul><li>Remove <code>inverted_index_cache_enabled</code> env config.<br>
<li> Delete flag <code>ZO_INVERTED_INDEX_CACHE_ENABLED</code>.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8004/files#diff-9aeee4a74c0520daa40f9b81c7016f5b6b3254375b968dd7598e745630980d62">+0/-6</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>mod.rs</strong><dd><code>Expose Tantivy result cache
metrics in status</code>
</dd></summary>
<hr>
src/handler/http/request/status/mod.rs
<ul><li>Replace reader cache stats with result cache stats.<br> <li>
Import <code>grpc::tantivy_result_cache</code>.<br> <li> Report
<code>len</code> and <code>memory_size</code> for result cache.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8004/files#diff-ca09c9c9b020049bdbc3382c466bfcca80daac92e98760d9a9a76172abf34049">+8/-3</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>storage.rs</strong><dd><code>Remove reader cache; use
GLOBAL_CACHE for results</code>
</dd></summary>
<hr>
src/service/search/grpc/storage.rs
<ul><li>Remove reader cache usage and logic paths.<br> <li> Always open
index and reader directly.<br> <li> Switch to
<code>tantivy_result_cache::GLOBAL_CACHE</code>.<br> <li> Clean up
imports for removed reader_cache.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8004/files#diff-ab2d867e1e2e3dd8307505c2e130039628a84f8131a9b38cd2e7b4e1c141e094">+29/-45</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>tantivy_result_cache.rs</strong><dd><code>Result cache
rename and stats helpers</code>
</dd></summary>
<hr>
src/service/search/grpc/tantivy_result_cache.rs
<ul><li>Rename global static to <code>GLOBAL_CACHE</code>.<br> <li> Add
<code>len()</code> and <code>memory_size()</code> helpers.<br> <li>
Update test to use <code>GLOBAL_CACHE</code>.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8004/files#diff-f4bcf95cba21da14d907701d1440b1be9c9140c23de8681639770364e78af01e">+13/-2</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>reader_cache.rs</strong><dd><code>Delete Tantivy reader
cache module</code>
</dd></summary>
<hr>
src/service/tantivy/puffin_directory/reader_cache.rs
- Delete reader cache implementation and tests.
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8004/files#diff-baabb8633f8966f2407c724632e85a34f469a1591d52ded16a6d66c40950c190">+0/-423</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Miscellaneous</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>mod.rs</strong><dd><code>Remove reader_cache module
reference</code>
</dd></summary>
<hr>
src/service/tantivy/puffin_directory/mod.rs
- Remove `reader_cache` module export.
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8004/files#diff-1602f85399080c1e2838d1ef1d62af23d96f353379e49a7770026e892c954018">+0/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
1f15b7ed58 | ci: bump version (#7992) | ||
|
|
748cca3ecb |
feat: visualization enhancement (#7456)
### **User description**
### Which query will be used?
- If query is empty will use histogram query
- Else query will be available:
- If query has group by clause :- will use same query
- Else will use histogram query
___
### **PR Type**
Enhancement, Tests, Bug fix
___
### **Description**
- Add server API to extract result schema
- Implement DataFusion plan visitor for projections
- Integrate visualization flow with schema and histogram
- Numerous UI fixes and UX improvements
___
### Diagram Walkthrough
```mermaid
flowchart LR
DF["DataFusion Plan Visitor (Rust)"]
API["HTTP API /result_schema (Rust)"]
FE["Logs Visualize UI (Vue)"]
Loader["Panel Data Loader (TS)"]
Cache["Histogram Handler & Cache (Rust)"]
DF -- "extract projections/group_by/timeseries" --> API
API -- "JSON ResultSchemaResponse" --> FE
FE -- "build config, set fields, decide histogram" --> Loader
Loader -- "inject searchResponse / is_ui_histogram" --> FE
Cache -- "normalize histogram()" --> DF
```
<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>14
files</summary><table>
<tr>
<td><strong>projections.rs</strong><dd><code>Add DataFusion logical plan
visitor to extract schema</code> </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-7a0420d3649da44b80be36d7f1043d6ff81d88395c961266882c3c700f7edff7">+651/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Add /result_schema endpoint and
wire parsing/security</code> </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-96630a0dbb6dd7b2b0248fa325c7c7041ce31340c32826675a4a70772e9d29f6">+224/-2</a>
</td>
</tr>
<tr>
<td><strong>cacher.rs</strong><dd><code>Improve histogram() handling and
make public</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-8c387b22b2c0a282600ee41ca702b3db60f5a284d507c0feb7418608ff062c6c">+22/-11</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Export projections
module</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-70bb941c2eef1365e5ead1a59b65c5397457b9197a4e22596e18d17db7eaf922">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>Index.vue</strong><dd><code>Integrate visualization with
schema API and histogram</code> </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+564/-154</a></td>
</tr>
<tr>
<td><strong>VisualizeLogsQuery.vue</strong><dd><code>Field list UX,
props for searchResponse/histogram</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-979b01d943d58c5d70faeeac5948b7f02f0b2392a12b84ef07ba7f7393ab0261">+236/-174</a></td>
</tr>
<tr>
<td><strong>SearchBar.vue</strong><dd><code>Visualize toggle gating,
SQL/VRL disabled states</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-81893de4edf186b0556f610acb280c87baa2ffe67d3b48a60a866094c7635baf">+102/-52</a></td>
</tr>
<tr>
<td><strong>FieldList.vue</strong><dd><code>Readonly/visibility options
for logs visualize</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-a071c06e3e26629cb4ae4751450acc39c61fa49b07a1cc4be3711697829668d4">+13/-1</a>
</td>
</tr>
<tr>
<td><strong>TransformSelector.vue</strong><dd><code>Disable transform
controls in visualize mode</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-0037d8dd9cfbacc26309b26e98ae953e7ccbd0891ac2fd01c6314ebd7eed9d2c">+11/-4</a>
</td>
</tr>
<tr>
<td><strong>ChartSelection.vue</strong><dd><code>Allow restricting
selectable chart types</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-384ce178717731e2c85f1312f12a54b42ceabd0b86f7e2befb0e421ef568a6a3">+14/-11</a>
</td>
</tr>
<tr>
<td><strong>PanelSchemaRenderer.vue</strong><dd><code>Accept
searchResponse and is_ui_histogram props</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-e5376e7e77bf3aaf6590c2522d8c2dbffcc95a8006ae0d6dc0040a37825367d6">+13/-0</a>
</td>
</tr>
<tr>
<td><strong>usePanelDataLoader.ts</strong><dd><code>Support injected
searchResponse and ui histogram</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-5a42e9493a7bcd722b88e61fd38883c4f61001bc9cafa399f65f8eafda3aace9">+30/-5</a>
</td>
</tr>
<tr>
<td><strong>visualizationUtils.ts</strong><dd><code>Add SQL alias
validator for visualization</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-c2c391afcaa0b44c33d3f4fa531a4f31f044ae036f0baa182c8c88e83de066c5">+80/-0</a>
</td>
</tr>
<tr>
<td><strong>query.ts</strong><dd><code>Extend response metadata for
visualization</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-12dd5b3bb9741bbeaa348c0efbbd745d0a582899678738159c6927d34a35191d">+2/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>mod.rs</strong><dd><code>Add test for compact delete value
check</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-b7e3bf7f0ac23dd084c0c817a310a4d5e7a64ff532746d182986ef940fa03fd0">+17/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Configuration
changes</strong></td><td><details><summary>2 files</summary><table>
<tr>
<td><strong>auth.rs</strong><dd><code>Allow auth bypass for
result_schema route</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-9bc2b1841504a435f66ad094f72ddbe7b7fa75e5e1557b8adbfe36f7f0592e1b">+3/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Register result_schema HTTP
route</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-02556e3f515441b5d2b6bbea7829df488beac03c4cc41309a6638ae3c0e0aec6">+1/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>search.rs</strong><dd><code>Add ResultSchemaResponse
contract</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-373e83a31e5bbc82fba05d7ae274b0dbd624ed748272232cf7eb8b8c3b2f3afc">+7/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Bug
fix</strong></td><td><details><summary>1 files</summary><table>
<tr>
<td><strong>TableRenderer.vue</strong><dd><code>Render null/undefined as
empty string</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-794706ea9da3a70012a0327c0464f9fd16802f78ece26055fe951716c2d73d59">+1/-1</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Formatting</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>sqlUtils.ts</strong><dd><code>Minor formatting
fix</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-dde40e8fcb5c37b06c011ede08922c44a3c025682fbc341aee97ba046b73a0e3">+1/-1</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Additional
files</strong></td><td><details><summary>11 files</summary><table>
<tr>
<td><strong>playwright.yml</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-7afcd2d8f7b49bda74843f209eefb7b2da45f7e7803bf2e4bd636699b76aa2d3">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>visualise.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-c14ac1db3e4aa86190d7525e8e38c410bcbbae7f46b01890e74937cc11be67e6">+1/-5</a>
</td>
</tr>
<tr>
<td><strong>logsPage.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-8045b343491d8943869c1af74cdafab204dc49c02a70294417e73f47d35e0b59">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>visualize.spec.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-d144f23552ec150db375c89e52c3a53ede9ff3fa5dcd6092694fbe0a308d22ec">+225/-183</a></td>
</tr>
<tr>
<td><strong>useDashboardPanel.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-fbba1700750053b9eaf38ddd30dab84531bc44131c795ebb713811e4930cd7cb">+420/-6</a>
</td>
</tr>
<tr>
<td><strong>useLogs.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-1040f61354f92711e0e77ed4e9bfa15586d45a94c7e2ab06cc37372068030e7b">+151/-19</a></td>
</tr>
<tr>
<td><strong>useNotifications.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-32ff5072df9badfebc0a72c401fe337de3324f76b186a52d202eb6cc2fa71e3a">+25/-0</a>
</td>
</tr>
<tr>
<td><strong>en.json</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+2/-0</a>
</td>
</tr>
<tr>
<td><strong>search.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-885ab872dbc6e7b20264df815e3ef4727f0abc86ce90d2fb47e4aff572814c75">+43/-0</a>
</td>
</tr>
<tr>
<td><strong>logs.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-637857fa918f47ffb02ebfc8a35b124001ef4f65fd180c467f0f153382d2dc76">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>convertDataIntoUnitValue.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7456/files#diff-14c6fe442ef231566ec411f9e0262cdd24ec912fc67b9154eec743282ab7211a">+120/-29</a></td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
---------
Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com>
Co-authored-by: ktx-akshay <akshay.patil@kiara.tech>
Co-authored-by: Yashodhan Joshi <yjdoc2@gmail.com>
Co-authored-by: omkark06 <omkar@zinclabs.io>
Co-authored-by: loaki07 <rustyloaki@gmail.com>
Co-authored-by: Loakesh Indiran <66478092+Loaki07@users.noreply.github.com>
Co-authored-by: Bhargav <BJP232004@GMAIL.COM>
Co-authored-by: ktx-vaidehi <vaidehi.akhani@kiara.tech>
Co-authored-by: ktx-vaidehi <134508096+ktx-vaidehi@users.noreply.github.com>
Co-authored-by: Yashodhan Joshi <yashodhan@openobserve.ai>
|
||
|
|
ee7fc8be68 | refactor: datafusion session create and parquet table create (#7993) | ||
|
|
96fdd6b4f8 | fix: super cluster scan_stats (#7989) | ||
|
|
4b3826bbd8 |
fix: add 7d and 13d to no ingestion reporting as well (#7983)
### **User description**
As per requirements, we also want to send events for 7d and 13d no
ingestion along with 24h
___
### **PR Type**
Enhancement, Bug fix
___
### **Description**
- Add 7d and 13d no-ingestion checks
- Generalize job to parameterized durations
- Include duration field in telemetry payload
- Improve logs with duration context
___
### Diagram Walkthrough
```mermaid
flowchart LR
start["start()"]
runner["run_no_ingestion() loop hourly"]
check24["report_org_no_ingestion(24, '24hr')"]
check7d["report_org_no_ingestion(168, '7d')"]
check13d["report_org_no_ingestion(312, '13d')"]
list["organizations::list with created window"]
streams["get_streams(org)"]
segment["report_no_ingestion_to_segment(org, duration)"]
start -- "spawn" --> runner
runner --> check24
runner --> check7d
runner --> check13d
check24 --> list
check7d --> list
check13d --> list
list --> streams
streams -- "no streams" --> segment
```
<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>cloud.rs</strong><dd><code>Parameterize and extend
no-ingestion reporting intervals</code> </dd></summary>
<hr>
src/job/cloud.rs
<ul><li>Replace single 24h job with scheduler loop.<br> <li> Add
parameterized <code>report_org_no_ingestion(start_hour,
duration)</code>.<br> <li> Extend telemetry to include
<code>duration</code> and updated log messages.<br> <li> Add 7d and 13d
reporting alongside 24hr.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7983/files#diff-7fc16d008216c106d63f78f75c867fbefe7102433fcaa8893c314f0b7ea8d0e6">+44/-32</a>
</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>
|
||
|
|
0869daeb48 | perf: set cache file_list to background (#7970) | ||
|
|
674910c84c | fix: search doesn't work with comments (#7980) | ||
|
|
e74ad0c932 |
feat: use custom FlightData encoder/decoder send ScanStats (#7979)
|
||
|
|
e9f041a28e | feat: support largeutf8 (#7962) | ||
|
|
86dec0cb91 | fix: datatype mismatch #7951 (#7953) | ||
|
|
584eafcacb |
fix: local cache table for alert manager (#7956)
### **User description** pick from https://github.com/openobserve/openobserve/pull/7925/ for main Without this the alert manager panics on init ___ ### **PR Type** Bug fix ___ ### **Description** Guard local cache table creation for alert manager Prevent alert-manager init panics on startup Create global file index table as before No behavior change for non-alert nodes ___ ### Diagram Walkthrough ```mermaid flowchart LR Init["job::init()"] --> CreateGlobal["create_table_index() for infra_file_list"] Init --> Cond{"LOCAL_NODE.is_alert_manager()?"} Cond -- "No" --> CreateLocal["LOCAL_CACHE.create_table_index()"] Cond -- "Yes" --> Skip["Skip local cache table creation"] ``` <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>mod.rs</strong><dd><code>Conditionalize local cache table creation by node role</code> </dd></summary> <hr> src/job/mod.rs <ul><li>Wrap local cache table/index creation in alert-manager guard.<br> <li> Keep global <code>infra_file_list::create_table_index()</code> call unchanged.<br> <li> Prevents panic during alert manager initialization.</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/7956/files#diff-f2e4c29b8eef22189ec704a832633c4bd135a24444f054864c98064bd0963681">+3/-1</a> </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> |
||
|
|
e46f6d5b82 |
feat: custom histogram interval & aligned partitions (#7909)
- `is_ui_histogram` query param for search api, the backend will convert the sql to histogram query and respond accordingly - `search_type` for search partition query, and if search type is `ui` only then we generate partitions with mini partition that is aligned with histogram interval ### **PR Type** Enhancement, Bug fix, Tests, Documentation ___ ### **Description** - Add UI histogram query conversion and flag - Align partitions to histogram with mini - Stream empty metadata+hints consistently - Expose histogram eligibility and interval ___ ### Diagram Walkthrough ```mermaid flowchart LR FE["Web UI logs & services"] -- "is_ui_histogram, searchType" --> HTTP["HTTP search endpoints"] HTTP -- "convert to histogram SQL\n(resolve streams, eligibility)" --> SQL["Histogram SQL converter"] HTTP -- "pass search_type, flags" --> SVC["Search service"] SVC -- "is_eligible, gen interval" --> PART["PartitionGenerator"] PART -- "aligned partitions\n(+mini optional)" --> STREAM["Streaming execution"] STREAM -- "SearchResponse + metadata\n(empty hits emitted)" --> FE SVC -- "Response: histogram_interval, is_histogram_eligible, converted_query" --> FE ``` <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>16 files</summary><table> <tr> <td><strong>partition.rs</strong><dd><code>Histogram-aligned partitions with optional mini support</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-348fa23375d0cea3e5fb039cc6b381d79aa1d5121e6b9792acc048d3fd02e37c">+798/-269</a></td> </tr> <tr> <td><strong>execution.rs</strong><dd><code>Always emit responses; accumulate and metadata tweaks</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-75d432351865224f0b00d7cc819554c2ad5fa1f777e9c645d91a3fd5c1113bc0">+148/-152</a></td> </tr> <tr> <td><strong>search_stream.rs</strong><dd><code>HTTP2 stream: UI histogram conversion and interval handling</code></dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-642de43ff6b19ae41087a9f1efc02d8b0b873809e0c92cbddfac1a30ef3f1184">+149/-69</a></td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Partition API: histogram eligibility, interval, UI paths</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-c3b85ea662a885fbd39797968928b291cb59a58f53a03f7b7dfd7ba8b6a7985a">+71/-5</a> </td> </tr> <tr> <td><strong>histogram.rs</strong><dd><code>Convert original SQL to histogram-safe query</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-a5fc4cd11b3ec569b4cedf278ef0b14f540504abfbb23e29eb896d5b2a6cc2b2">+140/-0</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>HTTP search: UI histogram conversion and response enrichment</code></dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-96630a0dbb6dd7b2b0248fa325c7c7041ce31340c32826675a4a70772e9d29f6">+38/-3</a> </td> </tr> <tr> <td><strong>search.rs</strong><dd><code>Response/request fields for histogram meta and streaming chunks</code></dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-373e83a31e5bbc82fba05d7ae274b0dbd624ed748272232cf7eb8b8c3b2f3afc">+45/-0</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>New error: SearchHistogramNotAvailable</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-90c725d0e77a6e7d4bcc130cf5783848a5cf0efdb304b351cd63cacf8775fc36">+7/-0</a> </td> </tr> <tr> <td><strong>multi_streams.rs</strong><dd><code>Multi-stream partition search accepts search_type</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-c3233cdf1e68cb2455f91457719b9c2f477e735ee16546fdfe111e76768bd054">+16/-4</a> </td> </tr> <tr> <td><strong>sql.rs</strong><dd><code>Detect histogram-eligible queries and subqueries</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-a0a09c66a20d878ec7683ae222c919fbe092b8001871ade7f455b89573ce0911">+27/-0</a> </td> </tr> <tr> <td><strong>http.rs</strong><dd><code>Add query flag parser for is_ui_histogram</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-3b50a69c1ec2f63f8eebb5f9880e17826463a586768aed3e3e15242833609d6b">+8/-0</a> </td> </tr> <tr> <td><strong>Index.vue</strong><dd><code>UI: histogram streaming flow, timeouts cleanup</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+45/-12</a> </td> </tr> <tr> <td><strong>IndexList.vue</strong><dd><code>Pass searchType=ui to partition API</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-08f058f883b659e713e606991a7ea37ae1ff016b7cccef970489ab5840dc3d09">+1/-0</a> </td> </tr> <tr> <td><strong>search.ts</strong><dd><code>API: support is_ui_histogram, searchType plumbed</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-885ab872dbc6e7b20264df815e3ef4727f0abc86ce90d2fb47e4aff572814c75">+7/-2</a> </td> </tr> <tr> <td><strong>useStreamingSearch.ts</strong><dd><code>Include is_ui_histogram in streaming URL</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-8fce3e25a161cd458e734bd9b1f98aadefe3482da7b6529a5b1f4fa20ec115e2">+1/-0</a> </td> </tr> <tr> <td><strong>usePanelDataLoader.ts</strong><dd><code>Dashboard partition calls pass searchType</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-5a42e9493a7bcd722b88e61fd38883c4f61001bc9cafa399f65f8eafda3aace9">+2/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>3 files</summary><table> <tr> <td><strong>cacher.rs</strong><dd><code>Adjust tests for new response fields</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-8c387b22b2c0a282600ee41ca702b3db60f5a284d507c0feb7418608ff062c6c">+6/-0</a> </td> </tr> <tr> <td><strong>SearchResult.spec.ts</strong><dd><code>Skip flaky resetPlotChart unit test</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-8ff7d14fc3cdac80eeec5550ecd89a77f015b4ebe928da9d4a76a9585d64d788">+1/-1</a> </td> </tr> <tr> <td><strong>useLogs.spec.ts</strong><dd><code>Skip failing query partitions test</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-842307ae8db03aa51891ddde98cfdbbabc712db1e1614c9eee99a59add395f70">+1/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Error handling</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>error_utils.rs</strong><dd><code>Map histogram unavailability to 400 with code</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-d4de63bc9275a19c868f6967de0f7835bd2d7bda74ff55ce97b8fb3f9af54da9">+3/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Miscellaneous</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>mod.rs</strong><dd><code>Export histogram SQL module</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-dc0ab53d0ff551cf3cd12027c73d0da5e66680c0bf2d1830778639a33bac3464">+1/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Bug fix</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>SearchResult.vue</strong><dd><code>UI: robust empty-histogram handling and reset watcher</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-5e65533aa4754bb6d0074fda18ffc1ecacded3b9ca6bc28a161c3f6b12f20195">+17/-15</a> </td> </tr> <tr> <td><strong>SearchBar.vue</strong><dd><code>Cancel running query before applying saved view</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-81893de4edf186b0556f610acb280c87baa2ffe67d3b48a60a866094c7635baf">+2/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>query.ts</strong><dd><code>Types: histogram interval and eligibility fields</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-12dd5b3bb9741bbeaa348c0efbbd745d0a582899678738159c6927d34a35191d">+2/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Additional files</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>fga.rs</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-e7c99f37f3abbb5e0507d2760bbf67df010d9218704b38dce84c5477acecd22e">+0/-2</a> </td> </tr> <tr> <td><strong>useLogs.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/7909/files#diff-1040f61354f92711e0e77ed4e9bfa15586d45a94c7e2ab06cc37372068030e7b">+154/-168</a></td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai> |
||
|
|
41d0d4acb6 |
fix: add more logs for flower (#7944)
### **User description** - [x] Add more logs for flower - [x] Optimize parquet footer cache calculate ___ ### **PR Type** Enhancement, Bug fix ___ ### **Description** - Switch query partition strategy to enum - Improve file stats cache size accuracy - Add follower leader work-group and partition logs - Minor consistent-hash refactor for clarity ___ ### Diagram Walkthrough ```mermaid flowchart LR CFG["Config Common.feature_query_partition_strategy (enum)"] STREAM["meta/stream QueryPartitionStrategy FromStr"] FLIGHT["search/cluster/flight uses enum directly"] FOLL["super_cluster/follower adds detailed logs"] HASH["cluster get_node_from_consistent_hash minor reorder"] CACHE["file_statistics_cache counts min/max/sum sizes"] STREAM -- "provides parser" --> CFG CFG -- "typed value" --> FLIGHT FLIGHT -- "strategy choice" --> FOLL CACHE -- "more accurate memory estimate" --> FLIGHT HASH -- "clarify flow" --> FLIGHT ``` <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>6 files</summary><table> <tr> <td><strong>mod.rs</strong><dd><code>Precompute hash before node-set access</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7944/files#diff-d15434a27e2b8406811f5a707b605203b603dad4a262c0642326be860bd2b568">+1/-1</a> </td> </tr> <tr> <td><strong>config.rs</strong><dd><code>Make query partition strategy a parsed enum</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7944/files#diff-9aeee4a74c0520daa40f9b81c7016f5b6b3254375b968dd7598e745630980d62">+7/-3</a> </td> </tr> <tr> <td><strong>stream.rs</strong><dd><code>Add FromStr and default for strategy enum</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7944/files#diff-2438d04c3fe97bc5452e5b74a303163b8723d93455cda32c95f0525435ad46bd">+8/-5</a> </td> </tr> <tr> <td><strong>flight.rs</strong><dd><code>Use enum-config strategy directly</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7944/files#diff-dbffb1a03b65f6a9163b18c5bb1241ba2966735657be39bbe9f4d0e3260d8c1d">+1/-2</a> </td> </tr> <tr> <td><strong>file_statistics_cache.rs</strong><dd><code>Include min/max/sum sizes in cache estimate</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7944/files#diff-5b3f948f2ad04a6babe72c15365b95a284d0533720419fa5dc793aa379783a7d">+5/-1</a> </td> </tr> <tr> <td><strong>follower.rs</strong><dd><code>Add work-group wait and partition logs</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7944/files#diff-59e0cc386582cf8baf201977475fd9a7e479fd8ed000bbaa6746a51ecb28632f">+8/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Miscellaneous</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>lib.rs</strong><dd><code>Remove unused async_drop feature gate</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7944/files#diff-b1a35a68f14e696205874893c07fd24fdb88882b47c23cc0e0c80a30c7d53759">+0/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
a484a80d24 |
feat: cloud ingest event (#7893)
### **User description** This adds two main changes : 1. send an event to cloud_events stream whenever a new (log) stream gets created in an organization 2. send an event to segment when an org created ~24hr before has not ingested any data since. ___ ### **PR Type** Enhancement ___ ### **Description** - Extend CloudEvent struct with stream_name - Emit StreamCreated on new stream ingestion - Add periodic no-ingestion-reporting cloud job - Implement get_admin helper for OrgUser ___ ### Diagram Walkthrough ```mermaid flowchart LR A["New stream write"] -- "detect new stream" --> B["Enqueue StreamCreated event"] C["Job initialization"] -- "start cloud job" --> D["report_org_no_ingestion loop"] D -- "filter 24h no ingestion" --> E["Send segment no-ingestion event"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody></tr></tbody></table> </details> ___ --------- Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com> Co-authored-by: Yashodhan Joshi <yjdoc2@gmail.com> |
||
|
|
d8b6e14df6 |
chore: remove wal metrics to wal.rs (#7939)
### **PR Type**
Enhancement
___
### **Description**
Move parquet metrics collection to `wal.rs`
Expose `collect_wal_parquet_metrics` from ingester
Update job to call new metrics function
Minor imports and re-exports cleanup
___
### Diagram Walkthrough
```mermaid
flowchart LR
writer["writer.rs: remove collect_parquet_metrics"] -- "responsibility moved" --> wal["wal.rs: add collect_wal_parquet_metrics"]
wal -- "re-export function" --> lib["lib.rs: pub use wal::collect_wal_parquet_metrics"]
job["job/metrics.rs: update_parquet_metrics"] -- "call new API" --> lib
```
<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>lib.rs</strong><dd><code>Re-export new WAL metrics
collector</code>
</dd></summary>
<hr>
src/ingester/src/lib.rs
<ul><li>Re-export <code>collect_wal_parquet_metrics</code><br> <li>
Remove re-export of old <code>collect_parquet_metrics</code><br> <li>
Adjust writer public exports formatting</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7939/files#diff-603267e2f712eeb4bc46fdff981f1fad1f3a9d3b989a7db4b3c0984fc5b1ed43">+3/-2</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>wal.rs</strong><dd><code>Add WAL parquet metrics
collection</code>
</dd></summary>
<hr>
src/ingester/src/wal.rs
<ul><li>Import <code>get_config</code> and <code>HashMap</code><br> <li>
Add <code>collect_wal_parquet_metrics</code> function<br> <li> Count
pending WAL parquet files by labels<br> <li> Set
<code>INGEST_PARQUET_FILES</code> gauge per org/stream</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7939/files#diff-8ba57e3a90cce57ceb88ea5215024c6d54473732bebdc7bf33847462379ec03e">+47/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>writer.rs</strong><dd><code>Remove parquet metrics from
writer</code>
</dd></summary>
<hr>
src/ingester/src/writer.rs
<ul><li>Remove <code>collect_parquet_metrics</code> function<br> <li>
Keep flushing logic intact</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7939/files#diff-d1a9b1542cc2758afe4fa67abd454dd818718f4e1c7570303519af5a58d6301f">+0/-52</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>metrics.rs</strong><dd><code>Update job to call new WAL
metrics API</code>
</dd></summary>
<hr>
src/job/metrics.rs
<ul><li>Switch to <code>ingester::collect_wal_parquet_metrics</code><br>
<li> Preserve error mapping and behavior</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7939/files#diff-ca98d90d1293682c98c33a777a653cf3c1466f6297969ae94a359bb81abca4b1">+1/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
7cca606f16 |
feat: add metrics to count wal files in ingester (#7898)
### **PR Type**
Enhancement
other changes:
- change default of batch exporter to false
- update gitignore
___
### **Description**
- Add WAL file count gauge metric
- Implement and register collect_wal_metrics
- Invoke WAL metrics in job loop
- Disable batching exporter by default
___
### Diagram Walkthrough
```mermaid
flowchart LR
WRITERS["In-memory writers"]
IMMUTABLES["Rotated immutables"]
COLLECT["collect_wal_metrics()"]
METRIC["INGEST_WAL_FILES gauge"]
JOB["job::update_wal_metrics()"]
WRITERS -- "active WAL files" --> COLLECT
IMMUTABLES -- "rotated WAL files" --> COLLECT
COLLECT -- "set metric" --> METRIC
JOB -- "calls" --> COLLECT
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>config.rs</strong><dd><code>Disable pipeline batch
exporter by default</code>
</dd></summary>
<hr>
src/config/src/config.rs
- Changed `ZO_PIPELINE_BATCH_ENABLED` default to false
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7898/files#diff-9aeee4a74c0520daa40f9b81c7016f5b6b3254375b968dd7598e745630980d62">+1/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>metrics.rs</strong><dd><code>Add and register WAL files
metric</code>
</dd></summary>
<hr>
src/config/src/metrics.rs
<ul><li>Added <code>INGEST_WAL_FILES</code> gauge metric<br> <li>
Registered metric in registry</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7898/files#diff-950d37bdd77aa533539acd818a3fcdebd90ccb1f09acb5490b9c0f9b51cb2090">+15/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>immutable.rs</strong><dd><code>Expose get_key on
Immutable</code>
</dd></summary>
<hr>
src/ingester/src/immutable.rs
- Added `Immutable::get_key()` accessor
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7898/files#diff-eee941ce73df39e37edae4a98ba3ca679f2c61592ad3e5afa47eb7793c9b0410">+4/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>lib.rs</strong><dd><code>Expose collect_wal_metrics in
lib</code>
</dd></summary>
<hr>
src/ingester/src/lib.rs
- Re-exported `collect_wal_metrics` in public API
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7898/files#diff-603267e2f712eeb4bc46fdff981f1fad1f3a9d3b989a7db4b3c0984fc5b1ed43">+2/-2</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>writer.rs</strong><dd><code>Implement
collect_wal_metrics in writer</code>
</dd></summary>
<hr>
src/ingester/src/writer.rs
<ul><li>Implemented <code>collect_wal_metrics()</code> function<br> <li>
Counts active and rotated WAL files<br> <li> Updates
<code>INGEST_WAL_FILES</code> metric</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7898/files#diff-d1a9b1542cc2758afe4fa67abd454dd818718f4e1c7570303519af5a58d6301f">+38/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>metrics.rs</strong><dd><code>Integrate WAL metrics in
job loop</code>
</dd></summary>
<hr>
src/job/metrics.rs
<ul><li>Added <code>update_wal_metrics()</code> function<br> <li>
Invoked WAL metrics in job loop when ingester</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7898/files#diff-ca98d90d1293682c98c33a777a653cf3c1466f6297969ae94a359bb81abca4b1">+13/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
b6ce17d27a | feat: add ZO_ROUTE_STRATEGY env to choose between workload and random… (#7908) | ||
|
|
33eefb89f4 |
fix: result cache with func (#7934)
### **User description** fix #7919 ___ ### **PR Type** Bug fix ___ ### **Description** Avoid unwrap panic when ts column missing Return default cache response when None Preserve order_by in default response Update result cache key with timestamp ___ ### Diagram Walkthrough ```mermaid flowchart LR A["check_cache: determine result_ts_col"] -- "was None" --> B["return default MultiCachedQueryResponse"] A -- "found ts col" --> C["use result_ts_col for cache key"] C -- "set discard_interval, file_path" --> D["proceed with caching 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>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>cacher.rs</strong><dd><code>Guard missing timestamp column to avoid panic</code> </dd></summary> <hr> src/service/search/cache/cacher.rs <ul><li>Replace unwrap on <code>result_ts_col</code> with safe <code>else</code> early return.<br> <li> Return default <code>MultiCachedQueryResponse</code> while preserving <code>order_by</code>.<br> <li> Keep existing logic for wildcard and aggregate checks.<br> <li> Ensure cache key includes interval and timestamp when available.</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/7934/files#diff-8c387b22b2c0a282600ee41ca702b3db60f5a284d507c0feb7418608ff062c6c">+8/-1</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
3b9fe6f4a7 | feat: add parquet cache size in status (#7929) | ||
|
|
1bd1caa10a |
fix: limit, hist_alignment by factors of 24 hrs, order_by (#7895)
### **User description** Fixes: - `total` count when limit is reached for limit queries in http2 streaming - Search response to return an array of `order_by` ``` eg: [["x_axis", "asc"], ["y_axis", "asc"]] ``` - Check and validate the histogram interval provided either as a query payload or the histogram query, to generate partitions in aligned 24 hr manner to avoid duplicate. ___ ### **PR Type** Enhancement, Bug fix, Tests ___ ### **Description** - Add `order_by_metadata` to search responses - Validate histogram intervals as 24h factors - Fix total count after results truncation - Implement frontend sorting with metadata ___ ### Diagram Walkthrough ```mermaid flowchart LR SQL["SQL generation"] -- "validate hist interval" --> R["Response (order_by metadata)"] R -- "merge response" --> C["Cache module"] R -- "set result" --> H["HTTP handler"] H -- "streaming data" --> S["Streaming exec"] S -- "apply sort metadata" --> U["Frontend UI"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody></tr></tbody></table> </details> ___ --------- Co-authored-by: Bhargav <BJP232004@GMAIL.COM> |
||
|
|
e98a9f953e | feat: improve internal error report (#7917) | ||
|
|
7b864c65ba | fix: default ZO_INVERTED_INDEX_RESULT_CACHE_MAX_ENTRY_SIZE value (#7915) | ||
|
|
b4cdbddad0 |
fix: track_total_hits to consider multiple distinct cols (#7894)
### **User description** ## Problem Description When using `SELECT DISTINCT` queries with multiple columns in OpenObserve, the track total hits functionality was incorrectly counting only the first column instead of all columns, and the response field name was incorrect. ### Example Problem Query ```sql SELECT DISTINCT unique_id, continent FROM oly WHERE continent = 'ASI' ``` ### Issues Encountered 1. **Incorrect Count**: The track total hits was only counting distinct values of the first column (`unique_id`) instead of distinct combinations of all columns (`unique_id, continent`). 2. **DataFusion Error**: The original approach tried to use `count(DISTINCT unique_id, continent)` which caused DataFusion to throw an error: ``` "This feature is not implemented: COUNT DISTINCT with multiple arguments" ``` ## Solution ### Approach Instead of trying to use `COUNT DISTINCT` with multiple arguments (which DataFusion doesn't support), we now use a subquery approach: **Before (causing errors):** ```sql SELECT count(DISTINCT unique_id, continent) AS zo_sql_num FROM oly WHERE continent = 'ASI' ``` **After (DataFusion compatible):** ```sql SELECT count(*) AS zo_sql_num FROM (SELECT DISTINCT unique_id, continent FROM oly WHERE continent = 'ASI') ``` ## Tests <img width="1802" height="1009" alt="image" src="https://github.com/user-attachments/assets/ec302f65-9115-4584-a9de-a2a51cbad502" /> <img width="1804" height="1009" alt="image (18)" src="https://github.com/user-attachments/assets/e38d9b51-afa8-4bfe-a61a-5f6fa1683eb7" /> ## Testing 1. **Single column DISTINCT**: ```sql SELECT DISTINCT name FROM t WHERE name = 'a' ``` Expected: `SELECT count(*) AS zo_sql_num FROM (SELECT DISTINCT name FROM t WHERE name = 'a')` 2. **Multiple columns DISTINCT**: ```sql SELECT DISTINCT unique_id, continent FROM oly WHERE continent = 'ASI' ``` Expected: `SELECT count(*) AS zo_sql_num FROM (SELECT DISTINCT unique_id, continent FROM oly WHERE continent = 'ASI')` 3. **Three columns DISTINCT**: ```sql SELECT DISTINCT unique_id, continent, bronze_medals FROM oly WHERE continent = 'ASI' ``` Expected: `SELECT count(*) AS zo_sql_num FROM (SELECT DISTINCT unique_id, continent, bronze_medals FROM oly WHERE continent = 'ASI')` ___ ### **PR Type** Bug fix, Tests ___ ### **Description** - Wrap DISTINCT queries in subquery for counting - Simplify non-DISTINCT count to wildcard - Remove unsupported COUNT DISTINCT arguments - Add unit tests for DISTINCT cases ___ ### Diagram Walkthrough ```mermaid flowchart LR A["Original DISTINCT query"] B["Wrapped subquery"] C["Count(*) AS zo_sql_num"] A -- "wrap" --> B B -- "count" --> C ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>track_total_hits.rs</strong><dd><code>Support multi-column DISTINCT and tests</code> </dd></summary> <hr> src/service/search/sql/rewriter/track_total_hits.rs <ul><li>Use subquery wrapper for multi-column DISTINCT<br> <li> Simplify count logic for non-DISTINCT queries<br> <li> Remove DuplicateTreatment import<br> <li> Add unit tests for DISTINCT scenarios</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/7894/files#diff-723facaa72e99da8a0736ca449529fe2395059d1196c54943c1622c7f99f29d5">+135/-40</a></td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
646c6c681f | feat: impl tantivy result cache (#7890) | ||
|
|
551633be76 |
fix: change updated_at AI prompts table to bigint (#7905)
### **PR Type** Bug fix, Enhancement ___ ### **Description** - Change `updated_at` column to bigint - Update migration tests to expect bigint |
||
|
|
2205775144 |
fix: enrichment table rewrite should not create compact jobs (#7841)
### **User description**
Enrichment table deletion should not create compact jobs, that is
because compaction is a background job, and until that happens, the
search on enrichment table is blocked. So, instead, we can directly
delete the file_lists when enrichment tables are deleted.
___
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Directly delete enrichment file lists on rewrite
- Remove redundant compactor job creation
- Enhance logs with org_id and table name context
- Broadcast file list deletions in enterprise
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Rewrite enrichment table"] --> B["Compute time_range"]
B --> C["delete_enrichment_table(...)"]
C --> D["delete_from_file_list(...)"]
D --> E["Compact service removes file lists"]
D --> F{"Enterprise mode?"}
F -- "yes" --> G["Broadcast delete event"]
```
<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>retention.rs</strong><dd><code>Expose
delete_from_file_list in retention module</code>
</dd></summary>
<hr>
src/service/compact/retention.rs
<ul><li>Made <code>delete_from_file_list</code> public<br> <li> Exposed
file list deletion API</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7841/files#diff-6abd048f5ef4e7163cffbb51cb4bee10c07fb88b871469d5b3724f7cd04743dc">+1/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>enrichment_table.rs</strong><dd><code>Add context-rich
logging for enrichment queries</code>
</dd></summary>
<hr>
src/service/db/enrichment_table.rs
<ul><li>Upgraded debug logs to info with org/name context<br> <li>
Included org_id and name in error logs</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7841/files#diff-6ce27ddf8a0d8b4e790bda90d088ff692a5da31a8d330beea8a9dd843294572b">+12/-2</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>mod.rs</strong><dd><code>Refactor enrichment table
deletion workflow</code>
</dd></summary>
<hr>
src/service/enrichment_table/mod.rs
<ul><li>Extended <code>delete_enrichment_table</code> with
<code>time_range</code><br> <li> Replaced compaction job creation with
file list deletion<br> <li> Added <code>delete_from_file_list</code>
helper implementation<br> <li> Added enterprise broadcast in helper</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7841/files#diff-3e2b6d3b8da1f9e73aca279052a97e683184d68256c23215b18ffee885836bbf">+83/-5</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>enrichment_table.rs</strong><dd><code>Handle enrichment
file list delete queue messages</code>
</dd></summary>
<hr>
src/super_cluster_queue/enrichment_table.rs
<ul><li>Added handler <code>process_file_list_delete</code> for
enrichment deletes<br> <li> Parses queue message and invokes file list
deletion</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7841/files#diff-b1344df0b7cefa60532a15a4ef200ab95434dddd5aad98b16c48a5edf184a45d">+50/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Bug fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>stream.rs</strong><dd><code>Align stream delete with
retention jobs</code>
</dd></summary>
<hr>
src/service/stream.rs
<ul><li>Added retention job creation in <code>delete_stream</code><br>
<li> Removed duplicate job creation in
<code>stream_delete_inner</code></ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7841/files#diff-41452a7fb29b4634437174fd6aecf6a9050dbfdef41b9077a21d59af3d79e9ed">+19/-10</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>mod.rs</strong><dd><code>Register enrichment table
queue handler</code>
</dd></summary>
<hr>
src/super_cluster_queue/mod.rs
- Registered `on_enrichment_file_list_delete_msg` handler
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7841/files#diff-6ed0f1dd36b7216fffde573232a49869f247330ecb03b50f94b2ddd723742e46">+2/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
3a2378b6d8 |
fix: make insert task to query manager later (#7891)
after insert trace_id to query_manager, any error should not return until we remove this tracd_id. |
||
|
|
1ebd0679db | feat: api to delete stream by time period (#7600) | ||
|
|
b68015dd71 |
feat: prompt management (#7825)
### **PR Type** Enhancement ___ ### **Description** - Add AI prompt meta config and model - Create system_prompts table migration and entity - Implement HTTP prompt CRUD endpoints - Wire cluster-coordinator and super-cluster events |
||
|
|
abacd62b5e | feat: remove default partition key for traces (#7878) | ||
|
|
1290512fe3 |
fix: SYNC optimize remote wal [phase 2] (#7664) (#7786)
### **User description** Add separate envs for pipeline wal Improve metrics ___ ### **PR Type** Enhancement ___ ### **Description** - Add batch buffering for pipeline WAL writes - Schedule periodic buffer flush in enterprise mode - Introduce env configs and metric labels - Instrument WAL reader with timing logs ___ ### Diagram Walkthrough ```mermaid flowchart LR A["process_node"] B["group by batch_key"] C["BATCH_BUFFERS"] D["get_pipeline_wal_writer"] E["remote WAL"] F["accumulate"] G["pipeline flush task"] A -- "records" --> B B -- "add to buffer" --> C C -- "should_flush? yes" --> D D -- "write_wal" --> E C -- "should_flush? no" --> F G -- "flush_all_buffers" --> C ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody></tr></tbody></table> </details> ___ --------- Co-authored-by: Ashish Kolhe <ashish.j.kolhe@gmail.com> |
||
|
|
408237472b |
feat: add enable_distinct_fields setting to StreamSettings (#7775)
Closes #7711 --------- Co-authored-by: Yashodhan Joshi <yashodhan@openobserve.ai> |
||
|
|
5d4266b4ec |
fix: remove module key from zo_db_query_nums metrics (#7845) (#7850)
### **PR Type** Enhancement ___ ### **Description** - Remove third 'key' label dimension in DB_QUERY_NUMS - Update all with_label_values to two labels only - Remove empty-string label arguments across modules - Applies to file_list, db, scheduler, schema, and metrics config ___ <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody></tr></tbody></table> </details> ___ |
||
|
|
45bac67dec |
feat: add run ID management and panel ID for dashboard refresh (#7760)
### **PR Type** Enhancement ___ ### **Description** - Introduce DashboardInfo struct with run/panel/tab IDs - Extract dashboard_info from HTTP requests - Propagate dashboard_info in backend search & stats - Frontend: manage runId state and include IDs in requests ___ ### Diagram Walkthrough ```mermaid flowchart LR FE["Frontend components"] HTTPRequest["HTTP Request"] ExtractInfo["get_dashboard_info_from_request"] SearchService["SearchService::search"] UsageStats["report_request_usage_stats"] FE -- "include run/panel/tab IDs" --> HTTPRequest HTTPRequest -- "extract dashboard info" --> ExtractInfo ExtractInfo -- "pass DashboardInfo" --> SearchService SearchService -- "attach stats with info" --> UsageStats ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody></tr></tbody></table> </details> ___ --------- Co-authored-by: Ashish Kolhe <ashish.j.kolhe@gmail.com> |
||
|
|
682033437e | chore: refactor sql.rs (#7846) | ||
|
|
1a19d62694 | chore: set ZO_INVERTED_INDEX_SKIP_THRESHOLD default to 35 (#7839) |