You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 5649efb
Browse filesBrowse the repository at this point in the historyBrowse files
message: `lifecycle.archive.after ('${lc.archive.after}') must equal retention.maxAge ('${lc.retention.maxAge}') — the hot window ends where the archive begins`,
941
941
});
942
942
}
943
+
// [#10527] The retention + ttl + archive triple — the alignment above, one
944
+
// policy wider. Since [#10347] the Archiver selects the rows it moves by the
945
+
// ttl cutoff (`ttl.field` older than `ttl.expireAfter`) whenever `ttl` is
946
+
// declared, and by `created_at`/`archive.after` only when it is not — so on
947
+
// this triple the age bound (`retention.maxAge`, pinned equal to
948
+
// `archive.after` above) no longer separately bounds the hot store: a row
949
+
// whose `ttl.field` sits in the future stays hot past `retention.maxAge`,
950
+
// silently. One declared bound nothing enforces is exactly the class this
951
+
// block refuses loudly (ADR-0049 declared ≠ enforced), so the triple parses
952
+
// only when the ttl restates the age bound — same clock (`created_at`), same
953
+
// window — and any divergence is refused here, at authoring time, rather
954
+
// than resolved by whichever column the sweep happens to read.
message: `lifecycle.ttl ('${lc.ttl.expireAfter}' after '${lc.ttl.field}') must restate retention.maxAge ('${lc.retention.maxAge}' after created_at) when retention, ttl and archive are all declared — the Archiver moves rows by the ttl cutoff when ttl is declared, so a diverging age bound no longer bounds the hot store; align ttl to { field: 'created_at', expireAfter: '${lc.retention.maxAge}' } or drop retention or ttl`,
0 commit comments