refactor(ingest): per-table batching + pipelined flushes - #192
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughThis PR refactors ingestion dispatch to parse messages once, route them by table into lazily-created per-table channels, and run independent per-table batching state machines with configurable size and timeout. It also replaces shared E2E fixtures with generated per-suite ClickHouse tables and updates tests, setup, docs, and changelog. ChangesPer-Table Batching Pipeline
E2E: Per-Suite Table Isolation & Setup
🎯 4 (Complex) | ⏱️ ~45 minutes Note 🎁 Summarized by CodeRabbit FreeYour organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login. Comment |
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request refactors the ingestion worker to move from a global batching strategy to a per-table batching architecture. By isolating batches per table, the system ensures that high-volume traffic is not delayed by the batching or timing constraints of low-volume tables. This change also introduces pipelined flushes to maximize throughput by allowing concurrent batch accumulation and ingestion. Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request refactors the ingest worker to use per-table batching and pipelined flushing, resolving an issue where low-volume tables could delay high-volume tables. A new test is added to verify this behavior. However, a critical issue was identified in tableLoop where exiting immediately on ctx.Done() bypasses draining buffered messages in the table channel, which can lead to message loss or unnecessary redeliveries on shutdown.\n\nVerdict: Iterate
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ❌ Deployment failed View logs |
wavehouse-docs | c27550a | Jun 03 2026, 03:17 PM |
Resolves the CHANGELOG.md [Unreleased] conflict: keeps this branch's "Lint/format coverage" + docs-deploy-from-CI-job entries alongside main's new per-table-batching (#192) and health-endpoints (#213) entries, and reconciles the stale "Project policies CardGrid" wording (that homepage element was replaced by the closer call-to-action band on this branch). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Summary
Per-table batching
Related Issues
Closes #191