Skip to main content

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 ObjectRollupArchiveSnapshot
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

CkArchiveStatus

RtWellKnownName

public string RtWellKnownName { get; set; }

Property Value

String

SourceArchiveRtId

public OctoObjectId SourceArchiveRtId { get; set; }

Property Value

OctoObjectId

BucketSize

public TimeSpan BucketSize { get; set; }

Property Value

TimeSpan

WatermarkLag

public TimeSpan WatermarkLag { get; set; }

Property Value

TimeSpan

LastAggregatedBucketEnd

public Nullable<DateTime> LastAggregatedBucketEnd { get; set; }

Property Value

Nullable<DateTime>

Aggregations

public IReadOnlyList<CkRollupAggregationSpec> Aggregations { get; set; }

Property Value

IReadOnlyList<CkRollupAggregationSpec>

FrozenUntil

public Nullable<DateTime> FrozenUntil { get; set; }

Property Value

Nullable<DateTime>

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

BucketAlignment

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

String

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

Nullable<TimeSpan>

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

Boolean

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

Boolean

LastRecomputeStartedAt

Start timestamp of the most recent recompute run; null before the first run.

public Nullable<DateTime> LastRecomputeStartedAt { get; set; }

Property Value

Nullable<DateTime>

LastRecomputeSuccessAt

Finish timestamp of the most recent successfully committed recompute run; null before the first success.

public Nullable<DateTime> LastRecomputeSuccessAt { get; set; }

Property Value

Nullable<DateTime>

LastRecomputeFailureAt

Timestamp of the most recent failed recompute run; null if the last run succeeded.

public Nullable<DateTime> LastRecomputeFailureAt { get; set; }

Property Value

Nullable<DateTime>

LastRecomputeFailureReason

Human-readable reason for the most recent recompute failure; null if the last run succeeded.

public string LastRecomputeFailureReason { get; set; }

Property Value

String

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

Int32

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

Int32

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.