Conversation
f99d34b to
a425f5f
Compare
b52f341 to
d2478f9
Compare
d2478f9 to
51c576f
Compare
9391117 to
566ba42
Compare
566ba42 to
a6ac920
Compare
cac8da4 to
336d8d1
Compare
55f983d to
6973d1d
Compare
6973d1d to
4e6abb5
Compare
…t into w1am/dev-747-old-net-client-implement-multi-append-with-no-schema
There was a problem hiding this comment.
Pull Request Overview
This pull request implements multi-stream append functionality in the client library, matching the server support introduced in version 25.1. The implementation adds support for appending events to multiple streams atomically within a single transaction, with optimistic concurrency control for each stream.
Key changes:
- Added
MultiStreamAppendAsyncmethod and supporting infrastructure for atomic multi-stream appends - Introduced new protocol buffer definitions for v2 streams API and error handling
- Refactored test infrastructure with improved configuration management and simplified Docker container setup
- Updated dependency versions and reorganized protobuf file structure
Reviewed Changes
Copilot reviewed 97 out of 99 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
src/KurrentDB.Client/Streams/KurrentDBClient.MultiAppend.cs |
Core implementation of multi-stream append functionality |
src/KurrentDB.Client/Streams/Streams/Model/StreamsClientModel.cs |
New model types for multi-stream append requests and responses |
src/KurrentDB.Client/Streams/Streams/Model/Metadata/MetadataDecoder.cs |
Metadata decoding utility for JSON-based event metadata |
src/KurrentDB.Client/Core/proto/kurrentdb/protocol/v2/streams/streams.proto |
Protocol buffer definitions for v2 streams service |
test/KurrentDB.Client.Tests/Streams/MultiStreamAppendTests.cs |
Comprehensive tests for multi-stream append functionality |
test/KurrentDB.Client.Tests.Common/Fixtures/KurrentDBTemporaryTestNode.cs |
Refactored test node setup with improved container management |
.github/workflows/test.yml |
New unified test workflow replacing multiple legacy workflows |
src/KurrentDB.Client/Core/Exceptions/AppendTransactionMaxSizeExceededException.cs |
New exception type for transaction size limit violations |
Comments suppressed due to low confidence (1)
src/KurrentDB.Client/Streams/Streams/Model/Metadata/MetadataDecoder.cs:1
- The assertion on line 100 will always fail because
metadata[\"NullTimeSpanValue\"]is null (as verified by line 90), and callingGetType()on null will throw aNullReferenceException. The test should either not callGetType()on null values or should skip this assertion when the value is null.
// ReSharper disable InconsistentNaming
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
There was a problem hiding this comment.
Pull Request Overview
Copilot reviewed 97 out of 99 changed files in this pull request and generated 3 comments.
Comments suppressed due to low confidence (1)
src/KurrentDB.Client/Core/proto/kurrent/rpc/rpc.proto:1
- Corrected spelling of 'propreties' to 'properties'.
// ******************************************************************************************
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
Add support for multi-stream append on the client, matching the server support introduced in version 25.1.
The current limitation is that event data must be valid JSON that can be deserialized into a
Dictionary<string, object?>. This is because the new log record properties format is a dictionary. This limitation will be lifted in the next major release of the client, which contains a bunch of developer experience improvements, and allow users to provide their own metadata decoder in the client settings.This operation takes a list of requests that accept events, along with the expected stream state and stream name. The operation can either fail or succeed, but not both. If it fails, the result will contain a list of failures with additional information, if available.