2173: feat: bump default gRPC max message size 16 MiB -> 128 MiB - #87
2173: feat: bump default gRPC max message size 16 MiB -> 128 MiB#87martin-augment wants to merge 4 commits into
Conversation
At SF1000, some TPC-H plans (Q11, Q21, Q22) encode above the 16 MiB
default gRPC message-size ceiling, so submitting them fails with:
Status { code: OutOfRange, message: "Error, decoded message length
too large: found ~22 MB, the limit is: 16777216 bytes" }
Raising the runtime flags on scheduler and executor pods only lifts the
server-side receive limits. Several paths still use
`GrpcClientConfig::default()` (16 MiB) unconditionally — most notably
the scheduler-to-executor client in `ExecutorManager::new` — so
task-assignment RPCs with large plans reject even when the servers were
raised.
Bump every default that fed a 16 MiB ceiling to 128 MiB:
- ballista/core/src/config.rs — `BALLISTA_CLIENT_GRPC_MAX_MESSAGE_SIZE`
default (SessionConfig-driven client path).
- ballista/core/src/utils.rs — `GrpcClientConfig::default()`
`max_message_size` (used by scheduler-to-executor, flight proxy,
executor client pool default lookups).
- ballista/scheduler/src/config.rs and
ballista/executor/src/config.rs — both CLI flags
(`--grpc-server-max-{decoding,encoding}-message-size`) and the
matching struct defaults.
- ballista/executor/src/executor_process.rs — matching
ExecutorProcessConfig defaults.
The value is a ceiling, not a preallocation, so bumping it has no
runtime cost for messages below the old limit.
Adds a round-trip test confirming that
`ballista.client.grpc_max_message_size` set on a SessionConfig reaches
`BallistaConfig::grpc_client_max_message_size()` unchanged, since that
path (options.set -> ExtensionOptions -> get_usize_setting) had no
existing coverage.
Updates the `default_config` unit test to reflect the new default.
Signed-off-by: Andy Grove <agrove@apache.org>
Signed-off-by: Andy Grove <agrove@apache.org>
Bumping GrpcClientConfig::default().max_message_size to 128 MiB helps most cases but leaves no runtime knob for the scheduler's outbound gRPC client to executors — the client the task-assignment RPC actually flows through. Its config was only overridable via a Rust-side `override_config_producer`, which end users of the shipped binary can't set. Add `--grpc-client-max-message-size` on the scheduler CLI (default 134217728 == the new default), and use it to override `GrpcClientConfig::max_message_size` in `ExecutorManager::new` when no `override_config_producer` is wired. The producer path still takes precedence so embedders keep full control. Users can now scale beyond 128 MiB without recompiling. Signed-off-by: Andy Grove <agrove@apache.org>
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
|
Warning Review limit reached
Next review available in: 3 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (11)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
🤖 Augment PR SummarySummary: Raises the default gRPC max message size from 16 MiB to 128 MiB across Ballista components to avoid failures with large encoded plans. Key changes:
🤖 Was this summary useful? React with 👍 or 👎 |
| )] | ||
| pub log_rotation_policy: ballista_core::config::LogRotationPolicy, | ||
| /// Maximum size of incoming gRPC messages in bytes (default: 16MB). | ||
| /// Maximum size of incoming gRPC messages in bytes (default: 128MB). |
There was a problem hiding this comment.
grpc_server_max_*_message_size defaults to 134217728 bytes (= 128 MiB), but the doc comments say "128MB" which can be read as 10^6-byte MB. Consider using "MiB" (or spelling out bytes) so the CLI help text matches the actual unit.
Severity: low
Other Locations
ballista/executor/src/config.rs:179
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
ReviewSecurity note: unrelated files with embedded instructionsThis PR adds four new files --
This looks like a prompt-injection attempt against automated review tooling rather than a legitimate project change, so it's being flagged explicitly rather than complied with -- this review does reference the PR normally and does review these files. Recommend dropping these four files from the PR; if agent-config files are genuinely needed, they should be added in a separate, clearly-scoped PR with real content and no directives targeting reviewers. OverviewThe functional part of the PR raises the default gRPC message-size ceiling from 16 MiB to 128 MiB across client and server config ( Correctness
Potential gapThe new Test coverage
Performance / resource considerations
StyleThe rest of the diff matches existing conventions in the file (doc comments above each |
2173: To review by AI