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
Catalog-loaded table TTL: eviction-only tables never arm a scan, negative eviction accepted on create #3935
Loose ends in how a catalog-loaded table arms and validates its TTL, found while reviewing #3924 and harper-pro#1233. Each matches the existing fresh-load behavior; none blocks those PRs.
Eviction-only tables never arm a cleanup scan on a thread that loads them.makeTable calls setTTLExpiration only when expirationMs is non-zero, and _adoptCatalogExpiration mirrors it. A node that received the table from a peer, or restarted, keeps expired rows on disk until a read or an expiresAt write arms the scan.
A table created from a peer's definition scans daily on its creating thread, like every catalog load (#2831 point 2), instead of (expiration + eviction) / 4.
A negative eviction is accepted on the create path (only expiration is checked in setTTLExpiration), while a re-declaration now rejects it.
setTTLExpiration assigns expirationMs/evictionMs/recordScanInterval before its negative check throws, leaving the rejected value live (application path only).
catalogExpiration reads the named primary row first while catalogCreatedTime reads the bare row first; on a pre-5.x catalog with both rows, peers could get the two values from different rows.
catalogExpiration has no production consumer inside core (its consumer is harper-pro replication).
Activity