Skip to content

JasperFx 2.88.0

Choose a tag to compare

@jeremydmiller jeremydmiller released this 14 Oct 19:49

What's new

  • IProjectionDaemon.StartAgentInRebuildModeAsync(ShardName, CancellationToken): start a projection shard in Rebuild mode that follows the store and resumes from its own progress. (#1015, for JasperFx/wolverine#4569)
    • The shard runs in ShardExecutionMode.Rebuild, so no side effects are published, and it keeps following the store past the high-water mark instead of stopping there.
    • It starts from the shard's own persisted progress and never rewinds it. Before this, every position strategy answered Rebuild with a floor (CatchUp: 0) and a rewind of the progression row, so a restarted Rebuild-mode shard replayed its history over the documents it had already built.
    • A failed Rebuild-mode run can therefore be stopped, fixed and restarted, and it finishes from the progress it committed. This is proven in Marten with extended progression tracking and no other schema change.
    • Starting the shard again with StartAgentAsync continues in Continuous mode from the same progress.
    • It's a default interface member that throws NotSupportedException, so other IProjectionDaemon implementations keep compiling.
  • ProjectionSideEffectCompliance has three new facts covering the above: Rebuild mode follows the store without side effects, a restart resumes from its progress, and a Continuous restart continues from it. Stores pick them up with this package: JasperFx/marten#5668, JasperFx/polecat#768, JasperFx/fisher#441.