Skip to content

Release v15.30.1

Choose a tag to compare

@github-actions github-actions released this 21 May 06:59
b0a57fa

Optional fields (EventSourceType, EventStreamType, EventStreamId) on EventSequence gRPC APIs were being defaulted on the client before sending, meaning the Kernel never saw null. Default value ownership now lives exclusively in the Kernel.

Changed

  • EventSourceType, EventStreamType, and EventStreamId are now string? (nullable) across all EventSequence gRPC contract types; clients send null when unspecified instead of pre-applying defaults (#3259)
  • Required fields (EventStore, Namespace, EventSequenceId, EventSourceId, EventType, Content, etc.) are now annotated with IsRequired = true on their ProtoMember across all EventSequence request/payload contracts (#3259)
  • Kernel service layer (EventSequences.cs) and EventToAppendConverters apply EventSourceType.Default / EventStreamType.All / EventStreamId.Default when null arrives, consistent with the existing GetTailSequenceNumber null-passthrough pattern (#3259)
  • DotNET client resolves defaults locally only for concurrency scope resolution and local event-context notification; the wire values are sent as null when the caller does not specify them (#3259)
  • Cratis.Fundamentals and Cratis.Metrics.Roslyn upgraded to 7.9.19; the updated generator correctly filters non-global aliased assembly contracts, removing the need for the InMemoryKernelEventTypes nested-class workaround

Fixed

  • Storage.MongoDB build errors (CS0266) caused by DirectConnection changing from bool to bool? after Cratis.Arc.MongoDB upgrade; comparisons updated to == true
  • Testing.Specs runtime assembly load failure; added Cratis.Arc and Cratis.Arc.Core package references so generator-emitted Arc service bindings resolve at runtime
  • Aspire.csproj build error (ASPIREPROBES001) from generator-emitted IResourceWithProbes contract mapping against an evaluation-only Aspire API; suppressed via NoWarn
  • Server.csproj build error (CS0436) from generator-emitted Program self-binding conflicting with the imported Cratis.Chronicle.Api.Program; suppressed via NoWarn
  • Server startup InvalidOperationException caused by Arc 20.24.10+ auto-registering [Singleton]-annotated Storage.Sql classes from all loaded assemblies, overriding the MongoDB IDatabase registration; removed [Singleton] from SQL-specific classes and added explicit registrations to SqlChronicleBuilderExtensions.WithSql
  • Server startup InvalidOperationException in MongoDB mode caused by AddBindingsByConvention() also registering SQL storage implementations (e.g. EventSequenceMigrator) which require ITableMigrator<> — only available in SQL mode; added symmetric removal of Cratis.Chronicle.Storage.Sql.* service registrations in MongoDB mode in Program.cs
  • Integration test timeouts in WaitTillReachesEventSequenceNumber (ProjectionWaitExtensions, ReducerWaitExtensions, ReactorWaitExtensions) caused by exact equality (==) check that never satisfied when events are batch-processed past the target sequence number; changed to >= eventSequenceNumber.Value
  • NullReferenceException in Sinks when IInstancesOf<ISinkFactory> yields null entries for SQL sink factories that cannot be instantiated in MongoDB mode (no SQL IDatabase registered); null elements are now filtered before building the sink dictionary
  • Storage.Vault.Specs failure in GitHub Actions caused by Vault container requiring IPC_LOCK capability when running as a non-root user; added IPC_LOCK capability to the Vault Testcontainer via WithCreateParameterModifier