fix(tiering): register spoke-namespace files; harden tier-drop rule - #688
Merged
Merged
Conversation
added 2 commits
September 1, 2026 19:26
The tiering scanner errored on every spoke-namespace file (one path level deeper than the standard layout), so hub-side spoke data was invisible to tiering. Parse partition paths by their date tail, the approach hub compaction adopted for the same reason in #619, and register spoke files under the query-visible split (database = spoke ID). Spoke files are gated out of cold migration until receipt-aware handling exists (#687): deleting a legacy spoke-synced daily file's hot copy would make confirmPresent forget its receipt and re-accept a duplicate. A verified-empty tier is now dropped from a multi-tier query only when another tier produced a positive pruning result, so spoke-shaped queries (whose generated paths sit one level shallow and filter to empty) keep their full globs instead of losing a tier to a listing error on the other one. Refs #686
Review findings: the segment-content gate was defeated by 4-digit numeric spoke measurement names, and both it and a metadata-based path reconstruction misclassified legacy or synthetic rows (hour-level daily files, PartitionTime not derived from the path). The tail parser that registers files now also classifies them (SpokeNamespaced on filePathInfo); unparseable paths skip migration conservatively. Year floor aligned with compaction's isHourLevelFile (>= 1970). Refs #687
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
FROM \"rocket-01\".telemetryresolves to, so registered metadata can never diverge from query-time tier assemblyProcess
Same pipeline as #681/#684/#686: adversarial plan review (which overturned both original load-bearing assumptions: the registration split and unconditional migration), independent implementation review (which caught the numeric-measurement gate bypass), licensed e2e before merge.
Verification
FROM \"rocket-01\".telemetryon the tiered hub returns correct rows, and the migrated plain daily file reads back from coldRefs #686. Spoke cold migration ships separately via #687.