feat(cll): pre-cached full CLL map with full_map API parameter#1221
feat(cll): pre-cached full CLL map with full_map API parameter#1221
Conversation
Codecov Report❌ Patch coverage is
... and 5 files with indirect coverage changes 🚀 New features to boost your workflow:
|
|
Added updates in response to @wcchang1115 's feedback:
|
- Add build_full_cll_map() to DbtAdapter: pre-computes CLL for every node in the manifest, includes change analysis, caches on instance - Refactor get_cll() to slice from cached full map instead of computing per-request (no_cll path unchanged) - Add full_map parameter to CLL API: returns complete unfiltered map - Add tests for full map building, caching, change analysis, and API Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Danyel Fisher <danyel@gmail.com>
Signed-off-by: Danyel Fisher <danyel@gmail.com>
ccd558e to
fbbaacc
Compare
Code Review — PR #1221SummaryPre-computes the full column-level lineage map on first access and caches it on the adapter instance. Adds Findings[Warning] Race condition on
|
Rename --cll-full-map to --disable-cll-cache with inverted semantics: the pre-cached full CLL map is now on by default. Users can opt out via --disable-cll-cache or DISABLE_CLL_CACHE envvar. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Danyel Fisher <danyel@gmail.com>
Code Review — PR #1221SummaryPre-cached full CLL map with FindingsNo critical issues found. Architecture notes (informational, not blocking):
VerdictApproved — clean implementation with good test coverage across both code paths. |
Summary
build_full_cll_map()toDbtAdapter: pre-computes CLL for every node in the manifest on first call, includes change analysis, caches on adapter instanceget_cll()to slice from the cached full map instead of computing per-request (no_cllpath unchanged)full_mapAPI parameter toPOST /api/cll: returns the complete unfiltered map (99 nodes, 804 columns in jaffle_shop)Performance (jaffle_shop, 99 models)
Cold impact is ~1.8x slower (computes all models upfront), but warm impact is 18x faster and all subsequent lookups are consistently ~10ms.
This is Part I of the unified CLL project. Part II will update the frontend to call
full_map=trueonce on Impact click, making all column navigation instant (client-side).Test plan
build_full_cll_map, caching, change analysis, unchanged model CLL,full_mapAPIPOST /api/cll {"full_map": true}returns all models and columns🤖 Generated with Claude Code