Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(streams): Use Cursor #160

Merged
merged 7 commits into from
Sep 9, 2024
Merged

feat(streams): Use Cursor #160

merged 7 commits into from
Sep 9, 2024

Conversation

cynicaljoy
Copy link
Contributor

Description

Provide support for the new per-event stream cursor.

Motivation and context

There's an edge case where resuming a stream from a txn time with lots of documents written could result in event loss. This approach fixes that edge case.

How was the change tested?

Updated integration test

Screenshots (if appropriate):

Change types

    • Bug fix (non-breaking change that fixes an issue)
    • New feature (non-breaking change that adds functionality)
    • Breaking change (backwards-incompatible fix or feature)

Checklist:

    • My code follows the code style of this project.
    • My change requires a change to Fauna documentation.
    • My change requires a change to the README, and I have updated it accordingly.

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Fauna/Types/Stream.cs Show resolved Hide resolved
Copy link
Contributor

@pnwpedro pnwpedro left a comment

Choose a reason for hiding this comment

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

Progress! Let me know if you want to chat about any of these.

Fauna/Core/StreamOptions.cs Show resolved Hide resolved
Fauna/IClient.cs Outdated Show resolved Hide resolved
Fauna/IClient.cs Outdated Show resolved Hide resolved
Fauna/Types/Event.cs Outdated Show resolved Hide resolved
Fauna/Types/Event.cs Outdated Show resolved Hide resolved
Fauna/Core/Connection.cs Outdated Show resolved Hide resolved
@cynicaljoy cynicaljoy requested a review from pnwpedro September 4, 2024 12:00
Copy link

github-actions bot commented Sep 9, 2024

Summary

Summary
Generated on: 09/09/2024 - 13:40:40
Parser: OpenCover
Assemblies: 1
Classes: 107
Files: 75
Line coverage: 81.5% (3059 of 3750)
Covered lines: 3059
Uncovered lines: 691
Coverable lines: 3750
Total lines: 8280
Branch coverage: 71.8% (1039 of 1446)
Covered branches: 1039
Total branches: 1446
Method coverage: Feature is only available for sponsors
Tag: e8f2b22

Coverage

Fauna - 81.5%
Name Line Branch
Fauna 81.5% 71.8%
Fauna.BaseClient 80% 58.3%
Fauna.Client 74% 52.9%
Fauna.Configuration 100% 100%
Fauna.Core.Connection 89.4% 58.3%
Fauna.Core.Endpoints 100%
Fauna.Core.ErrorInfo 100%
Fauna.Core.QueryFailure 100% 66.6%
Fauna.Core.QueryOptions 82.1% 81.8%
Fauna.Core.QueryResponse 70% 77.2%
Fauna.Core.QueryStats 57.1%
Fauna.Core.QuerySuccess`1 69.2% 50%
Fauna.Core.RetryConfiguration 100% 50%
Fauna.Core.Stats 100%
Fauna.Core.StatsCollector 86.2% 100%
Fauna.Core.StreamEnumerable`1 100% 66.6%
Fauna.Exceptions.AbortException 100% 83.3%
Fauna.Exceptions.BadGatewayException 0%
Fauna.Exceptions.ContendedTransactionException 100%
Fauna.Exceptions.ExceptionFactory 62.5% 84.8%
Fauna.Exceptions.FaunaException 25%
Fauna.Exceptions.ForbiddenException 100%
Fauna.Exceptions.InvalidRequestException 100%
Fauna.Exceptions.NetworkException 100%
Fauna.Exceptions.NullDocumentException 100%
Fauna.Exceptions.ProtocolException 0%
Fauna.Exceptions.QueryCheckException 100%
Fauna.Exceptions.QueryRuntimeException 100%
Fauna.Exceptions.QueryTimeoutException 100%
Fauna.Exceptions.SerializationException 100%
Fauna.Exceptions.ServiceException 80.9%
Fauna.Exceptions.ThrottlingException 42.8%
Fauna.Exceptions.TimeoutException 100%
Fauna.Exceptions.UnauthorizedException 100%
Fauna.IQueryFragmentExtensions 0%
Fauna.Linq.DataContext 84.1% 87.5%
Fauna.Linq.DataContextBuilder`1 92.1% 86.6%
Fauna.Linq.IntermediateQueryHelpers 80% 83.3%
Fauna.Linq.IPipelineExecutor 55.2% 28.2%
Fauna.Linq.IQuerySource 0% 0%
Fauna.Linq.LookupTable 40% 16.6%
Fauna.Linq.MappedDeserializer`2 75%
Fauna.Linq.Pipeline 100% 100%
Fauna.Linq.ProjectionAnalysisVisitor 92.3% 50%
Fauna.Linq.ProjectionDeserializer 80.9% 58.3%
Fauna.Linq.ProjectionRewriteVisitor 96.9% 90%
Fauna.Linq.QuerySource 100%
Fauna.Linq.QuerySource`1 93.1% 88.8%
Fauna.Linq.QuerySourceExtensions 25% 50%
Fauna.Linq.SubQuerySwitch 56.7% 19.4%
Fauna.Mapping.FieldAttribute 100%
Fauna.Mapping.FieldInfo 100% 91.6%
Fauna.Mapping.FieldName 100% 100%
Fauna.Mapping.MappingContext 100% 100%
Fauna.Mapping.MappingInfo 100% 100%
Fauna.Query 100%
Fauna.QueryArr`1 0% 0%
Fauna.QueryExpr 80% 50%
Fauna.QueryLiteral 86.1% 62.5%
Fauna.QueryStringHandler 100% 100%
Fauna.QueryVal 79.5% 50%
Fauna.Serialization.BaseSerializer`1 60%
Fauna.Serialization.BooleanSerializer 92.3% 83.3%
Fauna.Serialization.ByteSerializer 92.3% 83.3%
Fauna.Serialization.CheckedSerializer`1 77.7% 33.3%
Fauna.Serialization.ClassSerializer`1 84.6% 86.3%
Fauna.Serialization.DateOnlySerializer 92.3% 83.3%
Fauna.Serialization.DateTimeOffsetSerializer 92.3% 83.3%
Fauna.Serialization.DateTimeSerializer 92.3% 83.3%
Fauna.Serialization.DictionarySerializer`1 82.6% 62.5%
Fauna.Serialization.DocumentSerializer`1 85.2% 80%
Fauna.Serialization.DoubleSerializer 92.3% 83.3%
Fauna.Serialization.DynamicSerializer 79.3% 77.3%
Fauna.Serialization.FloatSerializer 92.3% 83.3%
Fauna.Serialization.IntSerializer 92.3% 83.3%
Fauna.Serialization.ListSerializer`1 85% 66.6%
Fauna.Serialization.LongSerializer 92.3% 83.3%
Fauna.Serialization.ModuleSerializer 87.5% 50%
Fauna.Serialization.NullableDocumentSerializer`1 92.3% 87.5%
Fauna.Serialization.NullableSerializer`1 100% 100%
Fauna.Serialization.NullableStructSerializer`1 100% 100%
Fauna.Serialization.PageSerializer`1 89.7% 87.5%
Fauna.Serialization.SByteSerializer 92.3% 83.3%
Fauna.Serialization.Serializer 94.2% 87.2%
Fauna.Serialization.ShortSerializer 92.3% 83.3%
Fauna.Serialization.StreamSerializer 57.1% 50%
Fauna.Serialization.StringSerializer 92.8% 87.5%
Fauna.Serialization.UIntSerializer 92.3% 83.3%
Fauna.Serialization.UShortSerializer 92.3% 83.3%
Fauna.Serialization.Utf8FaunaReader 72.6% 77.8%
Fauna.Serialization.Utf8FaunaWriter 90.1%
Fauna.Types.BaseDocument 53.3%
Fauna.Types.Document 100%
Fauna.Types.Event`1 87% 68.1%
Fauna.Types.Module 52.6% 20%
Fauna.Types.NamedDocument 100%
Fauna.Types.NamedRef 100%
Fauna.Types.NonNullDocument`1 100%
Fauna.Types.NullableDocument`1 100%
Fauna.Types.NullDocument`1 100%
Fauna.Types.Page`1 100%
Fauna.Types.Ref 100%
Fauna.Types.Stream 61.2% 25%
Fauna.Util.DefaultExpressionSwitch`1 0%
Fauna.Util.Expressions 100% 100%
Fauna.Util.ExpressionSwitch`1 84.8% 75.5%
Fauna.Util.Extensions.PaginationExtensions 100% 100%
Fauna.Util.Extensions.TypeExtensions 93.3% 81.2%

Delta Summary

Generated on: 09/09/2024 - 13:40
Description Previous Current Delta
Coverage date: 09/09/2024 - 13:40 09/09/2024 - 13:40
Tag: main e8f2b22
Line coverage: 81.5% 81.5% 0.0%
Covered lines: 3059 3059 0
Coverable lines: 3750 3750 0
Total lines: 17170 17231 61
Branch coverage: 71.8% 71.8% 0.0%
Covered branches: 1039 1039 0
Total branches: 1446 1446 0
Method coverage: Feature is only available for sponsors

Copy link
Contributor

@adambollen adambollen left a comment

Choose a reason for hiding this comment

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

<img src="sheep_emoji.png" />

@cynicaljoy cynicaljoy merged commit b0c855b into main Sep 9, 2024
5 checks passed
@cynicaljoy cynicaljoy deleted the stream-cursor branch September 9, 2024 15:09
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