Repository navigation
[Rust] Test persistent streams - #764
Merged
Merged
Conversation
This was referenced Aug 20, 2026
elenagaljak-db
force-pushed
the
stack/eos-public-api
branch
from
August 20, 2026 09:27
3f681ec to
793df75
Compare
elenagaljak-db
force-pushed
the
stack/eos-tests
branch
from
August 20, 2026 09:27
677caad to
0587365
Compare
elenagaljak-db
force-pushed
the
stack/eos-public-api
branch
from
August 20, 2026 10:47
793df75 to
ae4347c
Compare
elenagaljak-db
force-pushed
the
stack/eos-tests
branch
from
August 20, 2026 10:47
0587365 to
3848613
Compare
elenagaljak-db
force-pushed
the
stack/eos-public-api
branch
from
August 20, 2026 13:09
ae4347c to
e7effcb
Compare
elenagaljak-db
force-pushed
the
stack/eos-tests
branch
2 times, most recently
from
August 20, 2026 14:43
15972c6 to
8fb5685
Compare
elenagaljak-db
force-pushed
the
stack/eos-public-api
branch
from
August 25, 2026 12:36
e7effcb to
ef1b17e
Compare
elenagaljak-db
force-pushed
the
stack/eos-tests
branch
from
August 25, 2026 12:36
8fb5685 to
652480d
Compare
elenagaljak-db
force-pushed
the
stack/eos-public-api
branch
from
August 25, 2026 13:48
ef1b17e to
d96a85d
Compare
elenagaljak-db
force-pushed
the
stack/eos-tests
branch
2 times, most recently
from
August 26, 2026 15:56
f59fa66 to
b1e0fec
Compare
elenagaljak-db
force-pushed
the
stack/eos-public-api
branch
2 times, most recently
from
August 28, 2026 16:41
0ecfe35 to
c202abf
Compare
elenagaljak-db
force-pushed
the
stack/eos-tests
branch
2 times, most recently
from
August 28, 2026 17:27
1b7a882 to
d34bcf2
Compare
elenagaljak-db
force-pushed
the
stack/eos-public-api
branch
from
August 28, 2026 17:27
c202abf to
450ef0f
Compare
elenagaljak-db
force-pushed
the
stack/eos-public-api
branch
from
September 24, 2026 12:42
450ef0f to
8a1eda0
Compare
elenagaljak-db
force-pushed
the
stack/eos-tests
branch
from
September 24, 2026 12:42
d34bcf2 to
982f4d5
Compare
elenagaljak-db
force-pushed
the
stack/eos-public-api
branch
from
September 25, 2026 14:03
8a1eda0 to
c722ab2
Compare
elenagaljak-db
force-pushed
the
stack/eos-tests
branch
from
September 25, 2026 14:03
982f4d5 to
58c0bad
Compare
elenagaljak-db
force-pushed
the
stack/eos-public-api
branch
from
September 25, 2026 14:50
c722ab2 to
c9e7b71
Compare
elenagaljak-db
force-pushed
the
stack/eos-tests
branch
from
September 25, 2026 14:50
58c0bad to
cd2efcd
Compare
elenagaljak-db
force-pushed
the
stack/eos-public-api
branch
from
September 25, 2026 16:06
c9e7b71 to
f6e23ab
Compare
elenagaljak-db
force-pushed
the
stack/eos-tests
branch
from
September 25, 2026 16:07
cd2efcd to
91059e9
Compare
elenagaljak-db
force-pushed
the
stack/eos-public-api
branch
from
October 2, 2026 10:23
f6e23ab to
f4ee1e6
Compare
elenagaljak-db
force-pushed
the
stack/eos-tests
branch
from
October 2, 2026 10:23
91059e9 to
059e40d
Compare
elenagaljak-db
force-pushed
the
stack/eos-public-api
branch
from
October 2, 2026 14:16
f4ee1e6 to
17f6734
Compare
elenagaljak-db
force-pushed
the
stack/eos-tests
branch
from
October 2, 2026 14:16
059e40d to
ae10fee
Compare
elenagaljak-db
force-pushed
the
stack/eos-public-api
branch
from
October 2, 2026 15:53
17f6734 to
ef342eb
Compare
elenagaljak-db
force-pushed
the
stack/eos-tests
branch
from
October 2, 2026 15:53
ae10fee to
dd7988b
Compare
elenagaljak-db
force-pushed
the
stack/eos-tests
branch
from
October 6, 2026 10:08
dd7988b to
f003332
Compare
danilonajkov-db
previously approved these changes
Oct 8, 2026
| } = self.prepare_grpc().await?; | ||
| let stream = | ||
| ZerobusStream::new_stream(channel, table_properties, headers_provider, config).await?; | ||
| crate::client_warnings::record_stream_creation(stream.table_properties.table_name.as_str()); |
Member
There was a problem hiding this comment.
can we import this at the top
| //! shared setters. The ephemeral terminals live in their own files: | ||
| //! `ephemeral.rs` holds `build()`, and `multiplexed.rs` holds `multiplexed()` | ||
| //! and `multiplexed_ack_callback()`. Persistent streams do not support | ||
| //! multiplexing or Arrow Flight. The Arrow Flight setters and `build_arrow()` |
Member
There was a problem hiding this comment.
Persistent streams do not support multiplexing or Arrow Flight.
is it a plan to add them?
Collaborator
Author
There was a problem hiding this comment.
Yes, there is plan for arrow. And for multiplexing I'm not sure how it would work since client does want to have some control probably over which data it's sending to which stream, also client needs to be aware of stream ids. There is probably some way to go about designing this but lets leave it for a follow up, after Private Preview
Signed-off-by: elenagaljak-db <elena.galjak@databricks.com>
Replace the tuple that prepare_grpc returns with a crate-private GrpcStreamParts struct, and import ZerobusClient and Channel instead of using fully qualified paths. Addresses review nits on #763. Co-authored-by: Isaac <no-reply@databricks.com> Signed-off-by: elenagaljak-db <elena.galjak@databricks.com>
Move StreamBuilder::build into stream_builder/ephemeral.rs, and move multiplexed() and multiplexed_ack_callback() into multiplexed.rs, so mod.rs keeps the builder state and the setters that the persistent builder also uses. No public API or behavior change. The Arrow Flight setters and build_arrow() stay in mod.rs until the Arrow mux work in Co-authored-by: Isaac <no-reply@databricks.com> Signed-off-by: elenagaljak-db <elena.galjak@databricks.com>
Import record_stream_creation and warn_payload_limit_ignored_for_arrow at the top of the builder files instead of calling them through the crate::client_warnings path. Addresses a review comment on #764. Co-authored-by: Isaac <no-reply@databricks.com> Signed-off-by: elenagaljak-db <elena.galjak@databricks.com>
elenagaljak-db
force-pushed
the
stack/eos-tests
branch
from
October 16, 2026 10:49
f003332 to
ddb476d
Compare
teodordelibasic-db
approved these changes
Oct 16, 2026
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.
What changes are proposed in this pull request?
This PR adds stateful mock-server support and integration coverage for persistent streams.
Test coverage
The mock keeps durable state across connections:
stream_id.stream_idafter a disconnect.NOT_FOUND.persistent_stream_tests.rshas 10 tests. They cover create, ingest, flush and resume with continuous offsets; resume with no committed records; batches that use one offset; offsets that stay separate perstream_id; unknown stream IDs; a create response without astream_id; an unexpected open response; lost-ack reconciliation from the resume watermark, with and without recovery; and a resume with a mismatched record type.Review follow-ups from #763
[Rust] Name shared gRPC stream parts:prepare_grpc()returns a crate-privateGrpcStreamPartsstruct instead of a four-element tuple, andZerobusClientandChannelare imported at the top of the file.[Rust] Move ephemeral builder entry points:build()moves tostream_builder/ephemeral.rs, andmultiplexed()andmultiplexed_ack_callback()move tomultiplexed.rs.mod.rskeeps the builder state and the setters thatPersistentStreamBuilderalso uses. The Arrow Flight parts stay inmod.rsuntil the Arrow mux work in [Rust] Add Arrow mux API #866 lands.Both commits are moves and renames only. They change no public API and no behavior. The builder has the same 59 methods with the same visibility before and after.
The test infrastructure is recorded in
rust/NEXT_CHANGELOG.md.Stack
How is this tested?
cargo test -p tests --test persistent_stream_tests— 2 tests passedcargo test -p databricks-zerobus-ingest-sdk --features eos --lib— 156 tests passedcargo fmt --all -- --checkgit diff --check