RollupArchiveSnapshot
Namespace: Meshmakers.Octo.Runtime.Contracts.StreamData
Read-only snapshot of the parts of a CkRollupArchive entity the orchestrator and the
lifecycle service need. Extends the data carried by ArchiveSnapshot with rollup-
specific fields. Backend-specific stores translate from their concrete representation to this
record.
public record RollupArchiveSnapshot : IEquatable<RollupArchiveSnapshot>
Inheritance Object → RollupArchiveSnapshot
Implements IEquatable<RollupArchiveSnapshot>
Remarks:
Concept §3 / §5. RollupArchiveSnapshot.LastAggregatedBucketEnd is null before the first orchestrator
run; it is advanced exclusively by the orchestrator (per bucket commit) and by the
rewindRollupWatermark mutation. RollupArchiveSnapshot.FrozenUntil is null when the rollup is not
frozen; once set it is monotonic.
Properties
RtId
public OctoObjectId RtId { get; set; }
Property Value
OctoObjectId
TargetCkTypeId
public RtCkId<CkTypeId> TargetCkTypeId { get; set; }
Property Value
RtCkId<CkTypeId>
Status
public CkArchiveStatus Status { get; set; }
Property Value
RtWellKnownName
public string RtWellKnownName { get; set; }
Property Value
SourceArchiveRtId
public OctoObjectId SourceArchiveRtId { get; set; }
Property Value
OctoObjectId
BucketSize
public TimeSpan BucketSize { get; set; }
Property Value
WatermarkLag
public TimeSpan WatermarkLag { get; set; }
Property Value
LastAggregatedBucketEnd
public Nullable<DateTime> LastAggregatedBucketEnd { get; set; }
Property Value
Aggregations
public IReadOnlyList<CkRollupAggregationSpec> Aggregations { get; set; }
Property Value
IReadOnlyList<CkRollupAggregationSpec>
FrozenUntil
public Nullable<DateTime> FrozenUntil { get; set; }
Property Value
BucketAlignment
Bucket-boundary alignment. BucketAlignment.FixedSize (the default for
entities created before System.StreamData 1.4.0) preserves the legacy
LastAggregatedBucketEnd + BucketSize arithmetic. Calendar / ISO-week variants
derive bucket boundaries from the wall clock so monthly / weekly / yearly rollups become
expressible. Concept-time-range §7.
public BucketAlignment BucketAlignment { get; set; }
Property Value
ReferenceTimeZone
IANA reference time-zone id (e.g. Europe/Vienna) used to align calendar bucket
boundaries (day / week / month / year) to local wall-clock time so they are DST-correct
across countries. null ⇒ UTC calendar boundaries (the pre-AB#4290 behaviour). Only
meaningful for calendar RollupArchiveSnapshot.BucketAlignment variants; ignored for
BucketAlignment.FixedSize. System.StreamData 1.6.4 / decision O6.
public string ReferenceTimeZone { get; set; }
Property Value
CarryLookback
How far before a bucket's start the CkRollupFunction.TimeWeightedAvg
carry-in scan (LOCF opening state) looks for the latest source observation. Bounds the
per-bucket source scan. null ⇒ the engine default of 35 days. Only consulted by
TimeWeightedAvg aggregations; ignored otherwise. System.StreamData 1.6.5 / AB#4336
decision D1.
public Nullable<TimeSpan> CarryLookback { get; set; }
Property Value
HasPersistedColumns
True when the entity carries at least one persisted (ingested, non-computed) column on its
inherited Archive.Columns slot — i.e. the dehydrated
RollupColumnGenerator cache exists. false flags the defect state
produced by ImportRt-seeded records, which arrive with RollupArchiveSnapshot.Aggregations but no
Columns attribute — breaking the non-null columns GraphQL field for the whole
archives list (AB#4771/AB#4772); computed columns alone don't count. When false, callers
holding a write path (orchestrator tick, lifecycle activation) heal via
IRollupArchiveRuntimeStore.TryPersistDerivedColumnsAsync(OctoObjectId).
public bool HasPersistedColumns { get; set; }
Property Value
Remarks:
The rollup read path re-derives the columns from RollupArchiveSnapshot.Aggregations and is therefore
unaffected, but consumers that read the source archive's persisted Columns list — above all
chained-rollup activation, which resolves an aggregation's SourcePath against it —
see nothing. Defaults to true so callers constructing a snapshot without persistence
context (tests, in-memory stores) are not treated as defective.
RecomputeInProgress
True while a recompute job for this rollup is running or swapping. Mirrors
Archive.RecomputeInProgress.
public bool RecomputeInProgress { get; set; }
Property Value
LastRecomputeStartedAt
Start timestamp of the most recent recompute run; null before the first run.
public Nullable<DateTime> LastRecomputeStartedAt { get; set; }
Property Value
LastRecomputeSuccessAt
Finish timestamp of the most recent successfully committed recompute run; null before the first success.
public Nullable<DateTime> LastRecomputeSuccessAt { get; set; }
Property Value
LastRecomputeFailureAt
Timestamp of the most recent failed recompute run; null if the last run succeeded.
public Nullable<DateTime> LastRecomputeFailureAt { get; set; }
Property Value
LastRecomputeFailureReason
Human-readable reason for the most recent recompute failure; null if the last run succeeded.
public string LastRecomputeFailureReason { get; set; }
Property Value
DirtyWindowsPending
Number of dirty windows currently recorded on this archive (Information A — retroactive changes not yet propagated). 0 in the steady state.
public int DirtyWindowsPending { get; set; }
Property Value
PendingRecomputeRanges
Number of pending recompute ranges currently queued on this archive (Information B — the recompute work list the orchestrator still has to drain). 0 in the steady state.
public int PendingRecomputeRanges { get; set; }
Property Value
Constructors
RollupArchiveSnapshot(OctoObjectId, RtCkId<CkTypeId>, CkArchiveStatus, String, OctoObjectId, TimeSpan, TimeSpan, Nullable<DateTime>, IReadOnlyList<CkRollupAggregationSpec>, Nullable<DateTime>)
Read-only snapshot of the parts of a CkRollupArchive entity the orchestrator and the
lifecycle service need. Extends the data carried by ArchiveSnapshot with rollup-
specific fields. Backend-specific stores translate from their concrete representation to this
record.
public RollupArchiveSnapshot(OctoObjectId RtId, RtCkId<CkTypeId> TargetCkTypeId, CkArchiveStatus Status, string RtWellKnownName, OctoObjectId SourceArchiveRtId, TimeSpan BucketSize, TimeSpan WatermarkLag, Nullable<DateTime> LastAggregatedBucketEnd, IReadOnlyList<CkRollupAggregationSpec> Aggregations, Nullable<DateTime> FrozenUntil)
Parameters
RtId OctoObjectId
TargetCkTypeId RtCkId<CkTypeId>
Status CkArchiveStatus
RtWellKnownName String
SourceArchiveRtId OctoObjectId
BucketSize TimeSpan
WatermarkLag TimeSpan
LastAggregatedBucketEnd Nullable<DateTime>
Aggregations IReadOnlyList<CkRollupAggregationSpec>
FrozenUntil Nullable<DateTime>
Remarks:
Concept §3 / §5. RollupArchiveSnapshot.LastAggregatedBucketEnd is null before the first orchestrator
run; it is advanced exclusively by the orchestrator (per bucket commit) and by the
rewindRollupWatermark mutation. RollupArchiveSnapshot.FrozenUntil is null when the rollup is not
frozen; once set it is monotonic.