Conversation
- CommunityToolkit.HighPerformance 8.4.0 -> 8.4.2 - Cronus.DomainModeling 11.0.0 -> 11.0.2 - Machine.Specifications 1.1.2 -> 1.1.3
- Rewrites ~25 framework doc pages to match Cronus 11.x (handlers, messages, extensibility, event store, projections, configuration, workflows, quick-start) - Refines per audit: rewrites stale snapshots.md as honest stub, fixes ports.md DI sample, corrects workflows.md logging-scope key constants, dash-form anchors, ~70 cross-tree links rewritten as GitHub URLs - Cleans up orphan trees (docs/message-handlers/), folds duplicate signals.md into messages/signals.md, redirects stale events.md, adds async-IPublisher caveat to fault-handling.md, fixes TaskId ctor in versioning.md
…ing, multi-process topology, projection markers, integrity validation) - atomic-actions.md: documents IAggregateRootAtomicAction + ILock, Redis/Consul/Missing implementations, configuration anchors and failure modes. - aspire-cronus-wiring.md: documents the AppHost/worker wiring contract, env-var-to-config mapping and cross-links to multi-process topology. - multi-process-topology.md: documents the Cronus:*Enabled toggle pattern and four common topologies (all-in-one, API+worker, read-only, migration). - projections/projection-markers.md: documents INonVersionableProjection and INonRebuildableProjection, including their interaction with MarkupInterfaceProjectionVersioningPolicy and ProjectionHasher. - integrity-validation-and-dangerzone.md: documents IIntegrityPolicy and the EventStreamIntegrityPolicy default rules; explicitly notes that no DangerZone bypass is shipped. - SUMMARY.md: adds entries for all five new pages. - versioning.md: adds a "see also" cross-link to projection-markers.md (existing INonVersionableProjection mention preserved).
- Collapses the dotnet 8 + dotnet 9 test stages into a single net10 test stage - Bumps the UseDotNet task to version 10.x (with includePreviewVersions=false) - Updates dotnet test --framework to net10.0 - Updates DeployStage UseDotNet to 10.x and dependsOn to RunTestsDotnet10
…e and TryExecuteAsync
…ersion Fixes a bootstrap-ordering race that left non-system projections stuck in JobExecutionStatus.Running indefinitely. Chain: - RebuildProjection_Job returns Running while ProjectionVersionHelper.ShouldBeRetriedAsync is true. - ShouldBeRetriedAsync returns true while EventStoreIndexStatus reads come back NotPresent. - EventStoreIndexStatus state is updated through ProjectionRepository.SaveAsync(Type, IEvent) via ProjectionIndex.IndexAsync, which goes through GetProjectionVersionsAsync. - During bootstrap the ProjectionVersionsHandler stream for a projection is empty, so RestoreFromHistoryAsync returns default(T) and the read collapses to NotFound. The save loop then iterates zero versions and silently no-ops, so EventStoreIndexStatus is never populated and IndexStatus.IsNotPresent() stays true forever. Fix: when GetProjectionVersionsAsync sees a NotFound (no error, no data), synthesize a discovery-time version (Status=New, Revision=1, hash from ProjectionHasher) so the write path in SaveAsync(Type, IEvent) has a writable version to persist into. The synthesized version matches what ProjectionVersionManager produces at first registration, so once the canonical lifecycle eventually transitions the version to Live, reads find the events at the same (name, revision) coordinates the writes used. Status flip alone does not change the storage key in either the Cassandra or Postgres adapters. Considered alternatives: 1. Bootstrap ordering (await ProjectionVersionsHandler rebuild before publishing RegisterProjection for everything else): architecturally cleaner but adds startup latency and still does not handle late-arriving projections. 2. Saga retry tuning: masks the symptom without fixing the lost write. Adds ProjectionRepositoryBootstrapRaceTests covering the regression.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Title
Related Issue
Description
Test Methods