Release v15.30.1
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, andEventStreamIdare nowstring?(nullable) across all EventSequence gRPC contract types; clients sendnullwhen unspecified instead of pre-applying defaults (#3259)- Required fields (
EventStore,Namespace,EventSequenceId,EventSourceId,EventType,Content, etc.) are now annotated withIsRequired = trueon theirProtoMemberacross all EventSequence request/payload contracts (#3259) - Kernel service layer (
EventSequences.cs) andEventToAppendConvertersapplyEventSourceType.Default/EventStreamType.All/EventStreamId.Defaultwhen null arrives, consistent with the existingGetTailSequenceNumbernull-passthrough pattern (#3259) - DotNET client resolves defaults locally only for concurrency scope resolution and local event-context notification; the wire values are sent as
nullwhen the caller does not specify them (#3259) Cratis.FundamentalsandCratis.Metrics.Roslynupgraded to 7.9.19; the updated generator correctly filters non-global aliased assembly contracts, removing the need for theInMemoryKernelEventTypesnested-class workaround
Fixed
Storage.MongoDBbuild errors (CS0266) caused byDirectConnectionchanging frombooltobool?afterCratis.Arc.MongoDBupgrade; comparisons updated to== trueTesting.Specsruntime assembly load failure; addedCratis.ArcandCratis.Arc.Corepackage references so generator-emitted Arc service bindings resolve at runtimeAspire.csprojbuild error (ASPIREPROBES001) from generator-emittedIResourceWithProbescontract mapping against an evaluation-only Aspire API; suppressed viaNoWarnServer.csprojbuild error (CS0436) from generator-emittedProgramself-binding conflicting with the importedCratis.Chronicle.Api.Program; suppressed viaNoWarn- Server startup
InvalidOperationExceptioncaused by Arc 20.24.10+ auto-registering[Singleton]-annotatedStorage.Sqlclasses from all loaded assemblies, overriding the MongoDBIDatabaseregistration; removed[Singleton]from SQL-specific classes and added explicit registrations toSqlChronicleBuilderExtensions.WithSql - Server startup
InvalidOperationExceptionin MongoDB mode caused byAddBindingsByConvention()also registering SQL storage implementations (e.g.EventSequenceMigrator) which requireITableMigrator<>— only available in SQL mode; added symmetric removal ofCratis.Chronicle.Storage.Sql.*service registrations in MongoDB mode inProgram.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 NullReferenceExceptioninSinkswhenIInstancesOf<ISinkFactory>yields null entries for SQL sink factories that cannot be instantiated in MongoDB mode (no SQLIDatabaseregistered); null elements are now filtered before building the sink dictionaryStorage.Vault.Specsfailure in GitHub Actions caused by Vault container requiringIPC_LOCKcapability when running as a non-root user; addedIPC_LOCKcapability to the Vault Testcontainer viaWithCreateParameterModifier