DOC-6503 Add missing trans/pipe and error-handling pages (Lettuce, redis-rb, Predis)#3654
Merged
Conversation
…b, Predis Adds the pipelines/transactions pages for Lettuce (sync, async, and reactive) and redis-rb, plus the error-handling pages for Lettuce, redis-rb, and Predis, closing the gaps against the other clients. The transpipe examples are new TCE sources in local_examples/, verified end to end against a live Redis via the example-test-harness (which gained lettuce-sync support). Two non-obvious things drove the code. Lettuce's synchronous API cannot pipeline (each sync call blocks on its reply), so the "sync" pipeline example deliberately drops to the async API and RedisFutures. And the reactive MULTI/EXEC example nests subscribe() calls inside multi().flatMap(...) — that reads like fire-and-forget but is load-bearing, because the queued commands only land between MULTI and EXEC by being dispatched in subscription order on the single shared connection. Learned: Lettuce sync can't pipeline (must use async); reactive txn ordering relies on subscribe order Constraint: Lettuce sync pipelining must use the async API + RedisFuture — sync commands block per reply and cannot be batched Directive: do not "simplify" the reactive multi()/exec() nested subscribe() calls — command-to-transaction ordering depends on single-connection subscription order Ticket: DOC-6503
…xamples Applies four fixes from a Codex review of the previous commit. The reactive pipeline used Flux.concat for the reads, which subscribes to each GET only after the previous one completes — serialized round-trips, not the batch the prose claimed; switched to flatMapSequential, which subscribes eagerly (so the reads pipeline) while preserving result order. The redis-rb WATCH example now captures the block result and branches on the nil abort that the page describes, instead of only showing the happy path. The Predis exception hierarchy gains an ellipsis for its omitted types, matching the Lettuce and redis-rb pages. And the Lettuce retry snippet now restores interrupt status on InterruptedException, matching the jedis sibling. Re-verified lettuce-reactive and redis-rb against a live Redis via the example-test-harness. Directive: reactive pipeline reads use flatMapSequential (eager + ordered) — do not revert to Flux.concat, which serializes the round-trips and defeats the pipelining it demonstrates Ticket: DOC-6503
Contributor
Contributor
dwdougherty
reviewed
Jul 17, 2026
dwdougherty
left a comment
Collaborator
There was a problem hiding this comment.
I reviewed the prose, but I didn't scrutinize the code. Approved.
Contributor
Author
|
Thanks @dwdougherty ! |
Contributor
Author
Great! Please can you also click the Approve button, though :-) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
DOC-6503 — Add missing trans/pipe and error-handling client pages
Fills the gaps flagged in the ticket: pipelines/transactions and error-handling pages were missing for some of the less-popular clients.
Pages added
Examples are runnable and verified
The transpipe pages use real TCE examples (new sources under
local_examples/client-specific/{lettuce-sync,lettuce-async,lettuce-reactive,ruby}/), each verified end-to-end against a live Redis 8.8 via theexample-test-harness(extended here withlettuce-syncsupport). Error-handling code blocks are illustrative, matching the existing jedis page.Notes for review
RedisFuture(Lettuce's sync commands block per reply and can't be batched), and the reactive pipeline usesflatMapSequential(eager + ordered) rather thanFlux.concat(which would serialize the round-trips).🤖 Generated with Claude Code
Note
Low Risk
Documentation and example-test-harness changes only; no production application or runtime behavior changes.
Overview
Adds pipelines/transactions docs for Lettuce (sync, async, reactive) and redis-rb, and error-handling docs for Lettuce, redis-rb, and Predis, wired from the shared error handling overview.
Transpipe pages pull from a new
pipe_trans_tutorialexample set: runnable LettuceTransPipeExamplesources (sync/async/reactive) and Rubytranspipe.rb, covering pipelines,MULTI/EXEC, andWATCH. The example-test-harness gainslettuce-sync(new POM +run_lettuce_sync) andrun.shmappings so those examples can be executed in CI-style runs.Client error-handling pages mirror the existing Jedis-style layout: exception hierarchies, key exception tables, the four overview patterns in client syntax, plus Lettuce async/reactive notes, Predis transaction retries, and redis-rb’s
nilfrom aborted watched transactions.Reviewed by Cursor Bugbot for commit d2db6f7. Bugbot is set up for automated code reviews on this repo. Configure here.