Skip to content

docs(rust): add cloudfetch pipeline redesign spec and sprint plan#300

Merged
eric-wang-1990 merged 4 commits intomainfrom
stack/task-0-cloudfetch-design
Mar 17, 2026
Merged

docs(rust): add cloudfetch pipeline redesign spec and sprint plan#300
eric-wang-1990 merged 4 commits intomainfrom
stack/task-0-cloudfetch-design

Conversation

@eric-wang-1990
Copy link
Collaborator

Summary

  • Add CloudFetch pipeline redesign spec with channel-based architecture design
  • Add sprint plan with task breakdown and DoD checklist
  • Update spec with channel design details (bounded result channel, unbounded download channel)

This is a design-only PR with no code changes.

Stacked PRs

🤖 Generated with Claude Code

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| Error type | Sleep before retry | Counts against `max_retries` | Counts against `max_refresh_retries` |
|---|---|---|---|
| Network / 5xx | Yes — `retry_delay * (attempt + 1)` | Yes | No |
| 401 / 403 / 404 | No | Yes | Yes |
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why 401/403/404 counts against max_retries? It should only counts to max_refresh_retries? What is CSharp ADBC behavior?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Fixed — updated the retry table so 401/403/404 counts only against max_refresh_retries, not max_retries.

C# behavior for reference: In the C# driver, 401/403 inadvertently increments the max_retries loop counter because the continue statement advances the for (int retry = 0; retry < _maxRetries; retry++) variable — but the explicit guard is RefreshAttempts >= _maxUrlRefreshAttempts. 404 is not specially handled in C# and falls through to EnsureSuccessStatusCode(), which throws and gets caught with a sleep delay.

For the Rust redesign we cleanly separate the two counters: 401/403/404 exhausting max_refresh_retries is a distinct failure mode from transient network errors exhausting max_retries. Added a note in the spec documenting the C# divergence.


This comment was generated with GitHub MCP.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Also updated the design spec (cloudfetch-pipeline-redesign.md) retry table — 401/403/404 now shows No for max_retries column, matching the sprint plan fix.


This comment was generated with GitHub MCP.

Copy link
Collaborator

@jadewang-db jadewang-db left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the new bazel command does not need a planning parameter anymore in fact it read the design doc for the list of PRs and commits

Copy link
Collaborator

@vikrantpuppala vikrantpuppala left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

my biggest concern is wrt to the change in defaults for parallel downloads, max_chunks_in_memory, etc. these were configured inline with oss jdbc which has generally been the benchmark in terms of performance. to make sure these new defaults do not cause regressions in latencies, we should also perform benchmarking - go/oss-odbc-perf

@eric-wang-1990
Copy link
Collaborator Author

@vikrantpuppala Good call — updated both spec files to keep the original defaults aligned with OSS JDBC:

  • max_retries: stays 5 (was going to change to 3)
  • retry_delay: stays 1500ms (was going to change to 500ms)
  • max_chunks_in_memory: stays 16 (was going to change to 10)

C# equivalents are noted for reference only. This avoids any perf regression risk. We can tune later with benchmarking data from the dashboard you linked.


This comment was generated with GitHub MCP.

@eric-wang-1990
Copy link
Collaborator Author

@jadewang-db Noted — thanks for the heads up on the bazel command change.


This comment was generated with GitHub MCP.

@eric-wang-1990 eric-wang-1990 force-pushed the stack/task-0-cloudfetch-design branch from 5a888fe to c277090 Compare March 17, 2026 16:49
…ign details

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@eric-wang-1990 eric-wang-1990 force-pushed the stack/task-0-cloudfetch-design branch from c277090 to f36c42d Compare March 17, 2026 16:54
@eric-wang-1990 eric-wang-1990 added this pull request to the merge queue Mar 17, 2026
Merged via the queue into main with commit d4083ce Mar 17, 2026
23 checks passed
@eric-wang-1990 eric-wang-1990 deleted the stack/task-0-cloudfetch-design branch March 17, 2026 18:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants