Skip to content

feat: v5 vs v7 benchmark - #112

Open
woutervanranst wants to merge 25 commits into
masterfrom
bench-v5-v7
Open

feat: v5 vs v7 benchmark#112
woutervanranst wants to merge 25 commits into
masterfrom
bench-v5-v7

Conversation

@woutervanranst

Copy link
Copy Markdown
Owner

No description provided.

woutervanranst and others added 24 commits June 16, 2026 07:10
Azure blob name prefixes for chunk-index shards are not segment-aligned
(chunk-index/aa must match aa, aa0, aa3f). The existing ListAsync appends
a trailing slash, so add ListAsync(directory, namePrefix) with a default
client-side-filter implementation, a native Azure override, a recording
override on the in-memory fake, and a ChunkIndexLists counter on the
counting decorator.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Shards start at the 2-char prefix layout and split 16-way by the next hex
char when they exceed MaxShardEntryCount (10k) at flush time, recursively
and unevenly per subtree. Only non-empty shards are written; the layout is
self-describing from blob existence.

- Routing: parent-wins walk — the shallowest existing shard on a hash's
  prefix path is authoritative; a crashed split leaves the parent intact
  and unpublished children shadowed, so reads stay correct at every crash
  point and a flush retry re-splits and converges.
- Lookup: per-root coverage claims in loaded_prefixes (validated at the
  latest snapshot, zero remote calls when warm); cold path = one subtree
  listing per root deciding empty-vs-descend, etag revalidation from the
  listed etag (no download).
- Flush: per-root gates; split uploads all non-empty leaves before
  deleting the parent and stale blobs in its range.
- Repair: recomputes a balanced layout from staged entries (splits and
  coarsens); stale-shard deletion unchanged.
- Local store schema v2: entries keyed by content_hash BLOB ranges (no
  routed prefix column), recreate-on-version-mismatch, non-overlapping
  coverage claims.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…lance

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…load

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ShardSerializer.Deserialize and SerializeAsync now require an
ICompressionService argument (added by the zstd branch). ChunkIndexService
and SnapshotService constructors also gained a compression parameter.
Tests added by the dynamic-shard-prefix branch were written against the
pre-zstd signatures; this commit threads TestCompression.Instance through
all the affected call sites.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

@woutervanranst, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 7 minutes and 13 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 21456b6a-ee49-4fbe-ac0a-f15647659631

📥 Commits

Reviewing files that changed from the base of the PR and between b4009f7 and 7f7cf6b.

📒 Files selected for processing (48)
  • AGENTS.md
  • README.md
  • docs/cache.md
  • src/Arius.AzureBlob/AzureBlobContainerService.cs
  • src/Arius.Core.Tests/Fakes/FakeMetadataOnlyBlobContainerService.cs
  • src/Arius.Core.Tests/Fakes/FakeRecordingBlobContainerService.cs
  • src/Arius.Core.Tests/Fakes/FakeSeededBlobContainerService.cs
  • src/Arius.Core.Tests/Fakes/FaultingChunkIndexUploadBlobContainerService.cs
  • src/Arius.Core.Tests/Fakes/ThrowOnCreateBlobContainerService.cs
  • src/Arius.Core.Tests/Features/ArchiveCommand/ArchiveRecoveryTests.cs
  • src/Arius.Core.Tests/Features/RestoreCommand/RestoreCommandHandlerTests.cs
  • src/Arius.Core.Tests/Shared/ChunkIndex/ChunkIndexLocalStoreTests.cs
  • src/Arius.Core.Tests/Shared/ChunkIndex/ChunkIndexRouterTests.cs
  • src/Arius.Core.Tests/Shared/ChunkIndex/ChunkIndexServiceArchiveScenarioTests.cs
  • src/Arius.Core.Tests/Shared/ChunkIndex/ChunkIndexServiceFlushTests.cs
  • src/Arius.Core.Tests/Shared/ChunkIndex/ChunkIndexServiceLookupTests.cs
  • src/Arius.Core.Tests/Shared/ChunkIndex/ChunkIndexServiceRepairTests.cs
  • src/Arius.Core.Tests/Shared/ChunkIndex/ShardTests.cs
  • src/Arius.Core.Tests/Shared/ChunkStorage/Fakes/BlobAlreadyExistsOnSetMetadataOnceBlobContainerService.cs
  • src/Arius.Core.Tests/Shared/ChunkStorage/Fakes/BlockingDeleteBlobContainerService.cs
  • src/Arius.Core.Tests/Shared/ChunkStorage/Fakes/ContentTypeCapturingBlobContainerService.cs
  • src/Arius.Core.Tests/Shared/FileTree/Fakes/BlockingFileTreeUploadBlobContainerService.cs
  • src/Arius.Core.Tests/Shared/FileTree/Fakes/FaultingAndBlockingFileTreeUploadBlobContainerService.cs
  • src/Arius.Core.Tests/Shared/FileTree/Fakes/SlowDownloadBlobContainerService.cs
  • src/Arius.Core.Tests/Shared/FileTree/Fakes/ThrowingDownloadBlobContainerService.cs
  • src/Arius.Core.Tests/Shared/FileTree/Fakes/UnsortedSnapshotBlobContainerService.cs
  • src/Arius.Core.Tests/Shared/Storage/FakeInMemoryBlobContainerServiceTests.cs
  • src/Arius.Core/Features/ArchiveCommand/ArchiveCommandHandler.cs
  • src/Arius.Core/Features/ListQuery/ListQueryHandler.cs
  • src/Arius.Core/Shared/ChunkIndex/ChunkIndexLocalStore.cs
  • src/Arius.Core/Shared/ChunkIndex/ChunkIndexRouter.cs
  • src/Arius.Core/Shared/ChunkIndex/ChunkIndexService.cs
  • src/Arius.Core/Shared/ChunkIndex/Shard.cs
  • src/Arius.Core/Shared/Storage/IBlobContainerService.cs
  • src/Arius.CrossVersionBenchmark/Arius.CrossVersionBenchmark.csproj
  • src/Arius.CrossVersionBenchmark/BenchmarkColumns.cs
  • src/Arius.CrossVersionBenchmark/BenchmarkSettings.cs
  • src/Arius.CrossVersionBenchmark/CrossVersionArchiveBenchmark.cs
  • src/Arius.CrossVersionBenchmark/Program.cs
  • src/Arius.CrossVersionBenchmark/README.md
  • src/Arius.Explorer/Infrastructure/RepositorySession.cs
  • src/Arius.Integration.Tests/ChunkIndex/ChunkIndexServiceArchiveScenarioTests.cs
  • src/Arius.Integration.Tests/ChunkIndex/Fakes/CountingBlobContainerService.cs
  • src/Arius.Integration.Tests/Pipeline/Fakes/FaultingBlobService.cs
  • src/Arius.Integration.Tests/Pipeline/Fakes/RehydrationSimulatingBlobService.cs
  • src/Arius.Tests.Shared/Hashes/HashTestData.cs
  • src/Arius.Tests.Shared/Storage/FakeInMemoryBlobContainerService.cs
  • src/Arius.slnx
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch bench-v5-v7

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@codecov

codecov Bot commented Jun 16, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 91.42857% with 24 lines in your changes missing coverage. Please review.
✅ Project coverage is 81.00%. Comparing base (b4009f7) to head (7f7cf6b).

Files with missing lines Patch % Lines
.../Arius.Core/Shared/ChunkIndex/ChunkIndexService.cs 92.25% 9 Missing and 2 partials ⚠️
...ius.Core/Shared/ChunkIndex/ChunkIndexLocalStore.cs 91.83% 7 Missing and 1 partial ⚠️
src/Arius.AzureBlob/AzureBlobContainerService.cs 71.42% 1 Missing and 1 partial ⚠️
...e/Features/ArchiveCommand/ArchiveCommandHandler.cs 0.00% 1 Missing ⚠️
.../Arius.Core/Features/ListQuery/ListQueryHandler.cs 75.00% 0 Missing and 1 partial ⚠️
...Arius.Explorer/Infrastructure/RepositorySession.cs 0.00% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #112      +/-   ##
==========================================
+ Coverage   80.77%   81.00%   +0.23%     
==========================================
  Files          99       99              
  Lines        6340     6534     +194     
  Branches      852      887      +35     
==========================================
+ Hits         5121     5293     +172     
- Misses        986     1003      +17     
- Partials      233      238       +5     
Flag Coverage Δ
linux 83.77% <91.75%> (+0.16%) ⬆️
windows 79.96% <91.42%> (+0.23%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant