Pin JasperFx 1.35.0 cache fix to the TeleHealth scenario (#4329)#4340
Merged
jeremydmiller merged 1 commit intomasterfrom May 7, 2026
Merged
Pin JasperFx 1.35.0 cache fix to the TeleHealth scenario (#4329)#4340jeremydmiller merged 1 commit intomasterfrom
jeremydmiller merged 1 commit intomasterfrom
Conversation
…nosis multi_stage_projections.cs already covers the composite projection happy path under default cache sizes. Add a focused regression test that boots the same TeleHealth setup but forces AppointmentProjection.CacheLimitPerTenant = 1 — the exact reproduction Jeremy diagnosed in his first followup comment on GH-4329, where AppointmentByExternalIdentifierProjection's EnrichWith<Appointment>().AddReferences() lookups would silently fall through to a SQL load that couldn't see in-flight upstream writes and produce zero downstream documents. JasperFx.Events 1.35.0 (PR #206) keeps the upstream cache at full size for the duration of the composite batch, fixing this. The new downstream_lookups_survive_tiny_upstream_cache test pins that fix at the TeleHealth scenario so a future change that re-introduces mid-composite compaction would fail loudly here, not just on the smaller fan-out test. Refs #4329. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced May 7, 2026
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.
Summary
Followup coverage for #4329.
multi_stage_projections.end_to_endalready covers the composite projection happy path under default cache sizes. This PR adds a focused regression test against the exact reproduction Jeremy diagnosed in the issue:JasperFx.Events 1.35.0 (jasperfx#206) keeps the upstream cache at full size for the duration of the composite batch, which fixes this. Marten #4338 added a small synthetic
Bug_4329_fan_out_and_cache_limittest for the cache fix; this PR adds the matching regression at the original real-world scenario, so a future change that re-introduces mid-composite compaction would fail loudly here, not just on the smaller synthetic test.What changes
[Fact] downstream_lookups_survive_tiny_upstream_cacheinmulti_stage_projections.cs.end_to_end, but registersAppointmentProjectionas an instance withOptions.CacheLimitPerTenant = 1instead of the type-onlyAdd<AppointmentProjection>().AppointmentandAppointmentByExternalIdentifierhave rows after the daemon catches up — the latter being the canary that previously hit zero under the cache eviction bug.Test plan
downstream_lookups_survive_tiny_upstream_cachepasses on net10.0 (3s).DaemonTests/Composites/*tests pass on net10.0 with the new test added (the existing 8 plus the new regression).🤖 Generated with Claude Code