Conversation
CUBESTORE_MAX_CONCURRENT_QUERY_PLANS and CUBESTORE_MAX_QUEUED_QUERY_PLANS (#11924) gate how many query logical plans Cube Store builds and queues concurrently, but were missing from the environment variables reference. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GAQae3M3w5yukEDWT2ikUQ
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Automations to automatically generate PRs for you. |
|
Claude finished @keydunov's task in 1m 46s —— View job Docs are accurate against the Rust source — 1 medium, 2 low, all inline.Review details
Verified against the source
Findings
Nothing security- or performance-relevant; the change is docs-only, so no tests apply. No build or lint was run — a Review threadsNo prior threads — the listing returned 0 of mine (single page, empty |
| The maximum number of query logical plans Cube Store builds at the same time. | ||
| Planning runs before the result cache and is CPU-intensive, so a burst of | ||
| queries can oversubscribe the available cores; this limit gates how many | ||
| plans are built concurrently. `auto` (the default) sizes the limit to |
There was a problem hiding this comment.
The description leaves out the one behaviour an operator actually hits: a query that can't get a planning slot is rejected after CUBESTORE_QUERY_TIMEOUT seconds, not queued indefinitely.
rust/cubestore/cubestore/src/queryplanner/mod.rs:296 passes config.query_timeout() as the throttle's max_wait, and planning_throttle.rs:85-90 turns the expiry into a user error:
Waited longer than 120 s (CUBESTORE_QUERY_TIMEOUT) for a query planning slot.
Raise CUBESTORE_MAX_CONCURRENT_QUERY_PLANS to plan more queries at once.
Someone reading only this page sees that error and has no way to connect it to this variable. Worth one sentence:
| The maximum number of query logical plans Cube Store builds at the same time. | |
| Planning runs before the result cache and is CPU-intensive, so a burst of | |
| queries can oversubscribe the available cores; this limit gates how many | |
| plans are built concurrently. `auto` (the default) sizes the limit to | |
| The maximum number of query logical plans Cube Store builds at the same time. | |
| Planning runs before the result cache and is CPU-intensive, so a burst of | |
| queries can oversubscribe the available cores; this limit gates how many | |
| plans are built concurrently. A query that waits longer than | |
| [`CUBESTORE_QUERY_TIMEOUT`](#cubestore_query_timeout) for a planning slot is | |
| rejected with an error. `auto` (the default) sizes the limit to |
| | ------------------- | ---------------------- | --------------------- | | ||
| | A number in seconds | `120` | `120` | | ||
|
|
||
| ## `CUBESTORE_MAX_CONCURRENT_QUERY_PLANS` |
There was a problem hiding this comment.
Both entries land out of alphabetical order. The Cube Store section runs AWS_* → BIND_ADDR → CACHE_* → … → LOG_LEVEL → MAX_WS_CONNECTIONS_PER_USER → META_* → MINIO_* → NO_UPLOAD → PORT → QUERY_TIMEOUT, so MAX_CONCURRENT_QUERY_PLANS and MAX_QUEUED_QUERY_PLANS belong immediately before CUBESTORE_MAX_WS_CONNECTIONS_PER_USER (line 2109), not after CUBESTORE_QUERY_TIMEOUT. Readers scanning the page for MAX_* will stop at 2109 and conclude these don't exist.
|
|
||
| | Possible Values | Default in Development | Default in Production | | ||
| | ------------------------- | ---------------------- | --------------------- | |
There was a problem hiding this comment.
Separator row is one cell-width off from the header (27 dashes under a 26-char cell), the only table on the page where they don't line up. Rendering is unaffected; it's the diff that looks wrong.
| | Possible Values | Default in Development | Default in Production | | |
| | ------------------------- | ---------------------- | --------------------- | | |
| | Possible Values | Default in Development | Default in Production | | |
| | ------------------------ | ---------------------- | --------------------- | | |
| | `auto`, `0`, or a number | `auto` | `auto` | |
Also 2 x cores on line 2233 reads as a typo for 2 * cores — the source is std::cmp::max(4, 2 * cores) at rust/cubestore/cubestore/src/config/mod.rs:1406.
…ror detail - Add `chassis` as a third `runtime` value: it's a live option in both the code-first agents/config.yml schema and the (deprecated) agent settings UI, but was missing from the runtime table and property description. - List the Fireworks-hosted `kimi_k3` and `glm_5_3` predefined models under the LLM section, alongside the existing Anthropic/OpenAI lists. - Note that a CSPS-on-GCS Test Connection failure past the WIF token exchange (e.g. a bucket permission error) now reports the underlying GCS error instead of a generic internal error (cubejs-enterprise#15187). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GAQae3M3w5yukEDWT2ikUQ
|
Claude finished @keydunov's task in 2m 58s —— View job Docs-only; env-var behaviour verified against the CubeStore source and accurate. 0 high, 0 medium, 3 low posted inline; 2 prior threads re-affirmed. Review details
Verified against source
The Findings posted
Not posted (re-affirmed prior threads)Two findings were duplicates of still-open threads from an earlier round, so no new comment:
Review threadsThe listing returned 3 of my own threads. 0 resolved — all three concerns are still live in the working tree. 2 re-affirmed as duplicates of findings this round (above); the third ( No tests or lint were run — the change is three |
| The maximum number of queries that may wait for a planning slot once | ||
| [`CUBESTORE_MAX_CONCURRENT_QUERY_PLANS`](#cubestore_max_concurrent_query_plans) | ||
| is reached. Once the queue is full, a new query is rejected rather than | ||
| queued. `0` disables the limit. | ||
|
|
||
| | Possible Values | Default in Development | Default in Production | |
There was a problem hiding this comment.
The queue limit is presented as independent of the concurrency limit, but CUBESTORE_MAX_CONCURRENT_QUERY_PLANS=0 makes it entirely inert. PlanningThrottle::new stores permits: None when max_concurrent == 0 (rust/cubestore/cubestore/src/queryplanner/planning_throttle.rs:35-43), and acquire then returns Ok(None) before any queue accounting happens (planning_throttle.rs:52-55) — max_queued is never consulted.
So someone who sets CUBESTORE_MAX_CONCURRENT_QUERY_PLANS=0 and leaves CUBESTORE_MAX_QUEUED_QUERY_PLANS=5000 gets no queue cap at all, not a 5000-deep queue. Worth one clause: "Has no effect when CUBESTORE_MAX_CONCURRENT_QUERY_PLANS is 0, since queries are never queued."
| **Fireworks:** | ||
| - `kimi_k3` | ||
| - `glm_5_3` |
There was a problem hiding this comment.
These two ids can't be verified from this repo — grep -rni chassis and a search for Fireworks/kimi/glm across the whole tree hit only this file, so the predefined-model registry lives in the enterprise repo. kimi_k3 and glm_5_3 are one character away from plausible neighbours (kimi_k2, glm_4_x), and a wrong id here fails at config-validation time for the user with no way to discover the right one from the docs.
Please confirm both strings against the enterprise model registry before merge (same for the chassis value of runtime at line 119). Quoting the registry constant in the PR description would make this checkable on the next round.
| For CSPS on GCS, a failure past the token exchange — for example, the | ||
| impersonated service account lacking write access to the bucket — reports | ||
| the underlying GCS error (HTTP status, gRPC code, and the service's message | ||
| naming the missing permission or principal) instead of a generic internal | ||
| error. |
There was a problem hiding this comment.
Phrased as a diff from previous behaviour ("reports the underlying GCS error ... instead of a generic internal error") rather than as guidance. A reader arriving at this page today has no memory of the generic error, so the contrast carries no information, and in six months the sentence is just stale narration.
The actionable content is one clause — that the CSPS-on-GCS test surfaces the raw GCS status, gRPC code and message, so a permission or principal error can be read straight off the failure. That also fits the If the test fails: table right below as an extra row rather than a standalone paragraph above it.
CUBESTORE_MAX_CONCURRENT_QUERY_PLANSandCUBESTORE_MAX_QUEUED_QUERY_PLANSenvironment variables (feat(cubestore): Limit how many logical plans are built at once #11924), whichthrottle how many query logical plans Cube Store builds and queues at
once. Both were missing from the environment variables reference.
chassisas a third documentedruntimevalue (it'sa live option in both
agents/config.ymland the agent settings UI) andlist the Fireworks-hosted
kimi_k3/glm_5_3predefined models underthe LLM section.
token exchange now reports the underlying GCS error instead of a
generic internal one (cubejs-enterprise#15187).
Part of the recurring undocumented-features sweep across
cube-js/cubeandcubedevinc/cubejs-enterprise.🤖 Generated with Claude Code
https://claude.ai/code/session_01GAQae3M3w5yukEDWT2ikUQ