Skip to content

Commit 0b689e5

Browse files
thinkbeforecodingthefringeninja
authored andcommitted
Revision should be the one of the last event when folding at end of stream
1 parent 7c5e886 commit 0b689e5

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

src/EventStore.Client.Streams/EventStoreClient.Read.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -149,25 +149,27 @@ public async ValueTask<FoldResult<T>> FoldStreamAsync<T,E>(
149149
Stream = ReadReq.Types.Options.Types.StreamOptions.FromStreamNameAndRevision(streamName, revision),
150150
Count = long.MaxValue
151151
}
152-
153152
};
154153
if (readReq.Options.Filter == null) {
155154
readReq.Options.NoFilter = new Empty();
156155
}
157156

158157
readReq.Options.UuidOption = new ReadReq.Types.Options.Types.UUIDOption { Structured = new Empty() };
159158

160-
var call =
159+
var call =
161160
_client.Read(readReq,
162161
EventStoreCallOptions.Create(Settings, operationOptions, userCredentials, cancellationToken))
163162
.ResponseStream.ReadAllAsync().GetAsyncEnumerator();
164163

164+
165165
var hasNext = await call.MoveNextAsync(cancellationToken).ConfigureAwait(false);
166166

167167
var rev =
168168
hasNext && call.Current.ContentCase == ReadResp.ContentOneofCase.StreamNotFound
169169
? StreamRevision.None
170-
: StreamRevision.FromStreamPosition(revision);
170+
: hasNext
171+
? StreamRevision.FromStreamPosition(revision)
172+
: StreamRevision.FromStreamPosition(revision-1);
171173

172174
while(hasNext) {
173175
if (call.Current.ContentCase == ReadResp.ContentOneofCase.Event) {

test/EventStore.Client.Streams.Tests/fold_stream.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ await _fixture.Client.AppendToStreamAsync(streamName, StreamState.NoStream,
126126
new List<StreamPosition>());
127127

128128

129-
var expected = StreamRevision.FromInt64(pos);
129+
var expected = StreamRevision.FromInt64(pos-1);
130130
Assert.Equal(expected, result.Revision);
131131
}
132132

0 commit comments

Comments
 (0)