[BREAKING] Offline: Add recent batch info from DuplicateBatchDetector to summary
Description
Fixes AB#13963
We've added a new data structure for tracking "recent" (based on MSN) batchIds which are at risk for seeing a duplicate sequence batchID come in. This data structure is consulted and modified on each incoming batch.
Whenever we summarize, we need to include this state as of the given sequence number, and when we load from a snapshot we need to repopulate it as well.
Why? Because summaries can happen at any time, and a future container loading from that point will need to know the recent batch IDs that may possibly be followed by a sequenced duplicate.
Breaking Changes
This changes the signature of ContainerRuntime's constructor, which is an Alpha-API-breaking change, which is currently prohibited. So this PR will remain in draft state until such a breaking change is allowed.
Reviewer Guidance
See note about needing to wait to make the breaking change
⯅ @fluid-example/bundle-size-tests: +2.02 KB
| Metric Name | Baseline Size | Compare Size | Size Diff |
|---|---|---|---|
| aqueduct.js | 465.94 KB | 466.42 KB | ⯅ +492 Bytes |
| azureClient.js | 562.76 KB | 563.25 KB | ⯅ +506 Bytes |
| connectionState.js | 724 Bytes | 724 Bytes | ■ No change |
| containerRuntime.js | 262.1 KB | 262.56 KB | ⯅ +468 Bytes |
| fluidFramework.js | 427.12 KB | 427.13 KB | ⯅ +14 Bytes |
| loader.js | 134.18 KB | 134.19 KB | ⯅ +14 Bytes |
| map.js | 42.71 KB | 42.71 KB | ⯅ +7 Bytes |
| matrix.js | 150.15 KB | 150.16 KB | ⯅ +7 Bytes |
| odspClient.js | 528.59 KB | 529.09 KB | ⯅ +506 Bytes |
| odspDriver.js | 97.88 KB | 97.9 KB | ⯅ +21 Bytes |
| odspPrefetchSnapshot.js | 42.81 KB | 42.83 KB | ⯅ +14 Bytes |
| sharedString.js | 166.23 KB | 166.24 KB | ⯅ +7 Bytes |
| sharedTree.js | 417.58 KB | 417.58 KB | ⯅ +7 Bytes |
| Total Size | 3.37 MB | 3.37 MB | ⯅ +2.02 KB |
Baseline commit: ac5883c8b713420cfa746a625db86a833fbb73bd
Generated by :no_entry_sign: dangerJS against 076fe47b2f60c06ff43719952fc9ebcf9f744e4e
@kian-thompson can you please take a look? This can't be merged until we're allowed to make breaking changes (it updates the constructor signature of ContainerRuntime). But I'd like to have it ready to go.
🔗 No broken links found! ✅
Your attention to detail is admirable.
linkcheck output
> [email protected] ci:check-links /home/runner/work/FluidFramework/FluidFramework/docs
> start-server-and-test "npm run serve -- --no-open" 3000 check-links
1: starting server using command "npm run serve -- --no-open"
and when url "[ 'http://127.0.0.1:3000' ]" is responding with HTTP status code 200
running tests using command "npm run check-links"
> [email protected] serve
> docusaurus serve --no-open
[SUCCESS] Serving "build" directory at: http://localhost:3000/
> [email protected] check-links
> linkcheck http://localhost:3000 --skip-file skipped-urls.txt
Crawling...
Stats:
171745 links
1640 destination URLs
1840 URLs ignored
0 warnings
0 errors