This repository was archived by the owner on Apr 4, 2026. It is now read-only.
feat(casts): add root_parent tracking for thread identification#72
Merged
Conversation
Add root_parent_hash, root_parent_fid, root_parent_url columns to enable O(1) thread identification instead of O(n) recursive traversal. - Add migration 006 with columns and indexes - Update add_cast() to resolve root parent via DB lookup or Hub traversal - Update CastInsert and bulk_insert_casts() for batch operations - Leave root_parent NULL when chain is broken (never assume non-root is root) - Add unit tests for extract_parent_from_proto()
Add backfill module to populate root_parent columns for existing casts: - RootParentBackfill worker traverses parent chains via Hub - Configurable batch size, max depth, and delay - backfill_url_parents() for simple URL parent casts - Leaves root_parent NULL when chain is broken (same behavior as insert)
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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
root_parent_hash,root_parent_fid,root_parent_urlcolumns to casts table for O(1) thread identificationroot_parentNULL when chain is broken (never incorrectly assume non-root is root)Changes
Migration (
006_add_root_parent_columns.sql)root_parent_fid,root_parent_hash,root_parent_urlCast Processing (
src/processor/database.rs)resolve_root_parent(): Checks DB for parent's root, falls back to Hub traversalresolve_root_from_hub(): Traverses parent chain via gRPC to find true rootadd_cast()to populate root_parent columnsBatch Operations (
src/database/batch.rs)parent_fid,root_parent_*fields toCastInsertbulk_insert_casts()for new columnsBackfill (
src/backfill/root_parent.rs)RootParentBackfillworker for existing castsbackfill_url_parents()for simple URL parent castsSemantics
root_parent_*valueNULLroot_parent_urlsetNULLTest plan
extract_parent_from_proto()