Fix recursive tree OID read fanout and release v17.0.1#93
Conversation
|
Warning Rate limit exceeded
You’ve run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (14)
📝 WalkthroughWalkthroughThis PR optimizes recursive Git tree OID reads by introducing a dedicated ChangesRecursive tree OID optimization via single git ls-tree call
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@codex Self-review complete against
Reviewed diff: No mitigation prompts are required because there are no unresolved self-review findings. |
Release Preflight
If you tag this commit as |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/infrastructure/adapters/GitRecursiveTreeOidReaderAdapter.ts`:
- Around line 56-64: The oids accumulator in parseRecursiveTreeOidOutput is
created as a plain object (oids = {}) and can be poisoned by git paths like
"__proto__" or "constructor"; change oids to a null-prototype map (e.g., const
oids = Object.create(null)) or use a Map to safely store oids[entry.path] for
non-tree entries; update references in the same function (where you assign
oids[entry.path] = entry.oid and later read from oids) and keep
parseRecursiveTreeEntry and TREE_OBJECT_TYPE logic unchanged.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 1f2921e1-cee1-4828-94ca-b5e68fa818f4
⛔ Files ignored due to path filters (1)
package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (12)
CHANGELOG.mddocs/ROADMAP.mddocs/method/backlog/v17.0.0/INFRA_git-cas-adapter-parity.mdjsr.jsonpackage.jsonsrc/infrastructure/adapters/GitCasGraphReaderAdapter.tssrc/infrastructure/adapters/GitGraphAdapter.tssrc/infrastructure/adapters/GitRecursiveTreeOidReaderAdapter.tstest/unit/infrastructure/adapters/GitGraphAdapter.coverage.test.tstest/unit/infrastructure/adapters/GitGraphAdapter.gitCasPersistence.test.tstest/unit/scripts/release-policy-shape.test.tstest/unit/scripts/uniform-git-cas-closeout.test.ts
Feedback Resolution Summary
Verification: targeted adapter tests, |
Release Preflight
If you tag this commit as |
|
@coderabbitai Follow-up on the pre-merge warnings in the summary comment:
|
|
Tip For best results, initiate chat on the files or code changes.
Everything looks clean for merge. 🐇✨ |
Release Preflight
If you tag this commit as |
Summary
git ls-tree -rzreader for recursive tree OID maps.readBlobStream()while preserving git-warp's path-to-OID contract.v17.0.1release metadata and align the release policy ratchet/roadmap.Profiling Evidence
codex-think --remember --brief --limit=1 --json --verbosewas ~69s, with recursive checkpoint tree reads doing ~1,200+ nestedls-treestream setups per open/materialize pass.ls-tree -rzcalls totaling ~87ms.listRecentStoredEntries(limit: 2000).Test plan
npm run lintnpm run typechecknpm run test:localnpm run test:coverage:cinpm run release:preflightADR checks