Skip to content

fix(container-loader): capture websocket ops in full container state - #28009

Draft
Abram Sanderson (Abe27342) wants to merge 2 commits into
microsoft:mainfrom
Abe27342:user/absander/fix-capture-full-container-state
Draft

fix(container-loader): capture websocket ops in full container state#28009
Abram Sanderson (Abe27342) wants to merge 2 commits into
microsoft:mainfrom
Abe27342:user/absander/fix-capture-full-container-state

Conversation

@Abe27342

Copy link
Copy Markdown
Contributor

How contribute to this repo.

Guidelines for Pull Requests.

Description

captureFullContainerState previously retrieved operations only from delta storage. On services such as ODSP, recently sequenced operations may still be available through the delta stream but not yet persisted to storage, causing the captured state to omit recent changes.

This change reuses the container load path's DeltaManager and ConnectionManager construction to merge operations from storage and the live delta stream. Capture waits through the latest sequence known by the connection, then disposes the delta manager to freeze the operation set before serializing the artifact.

The added coverage includes a deterministic socket-only operation test and a real-service frozen offline round-trip test. Against ODSP, the new test passes with this change and fails against the previous implementation because the captured artifact contains no post-snapshot operations.

Reviewer Guidance

The review process is outlined in the pull request guidelines.

Please focus on the synchronization and cutoff semantics in captureFullContainerState, particularly whether disposing the delta manager immediately after catch-up provides the intended stable capture boundary.

Abram Sanderson (He/Him) added 2 commits August 18, 2026 13:53
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 91ea7114-ec37-4f23-9d93-23cca2a2dd50
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 91ea7114-ec37-4f23-9d93-23cca2a2dd50
@github-actions github-actions Bot added area: tools area: loader Loader related issues area: repo Repo related work area: website area: tests Tests to add, test infrastructure improvements, etc changeset-present base: main PRs targeted against main branch labels Aug 18, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Hi! Thank you for opening this PR. Want me to review it?

Based on the diff (364 lines, 6 files), I've queued these reviewers:

  • Correctness — logic errors, race conditions, lifecycle issues
  • Security — vulnerabilities, secret exposure, injection
  • API Compatibility — breaking changes, release tags, type design
  • Performance — algorithmic regressions, memory leaks
  • Testing — coverage gaps, hollow tests

How this works

  • Adjust the reviewer set by ticking/unticking boxes above. Reviewer toggles alone don't trigger anything.

  • Tick Start review below to dispatch the review fleet.

  • After review finishes, tick Start review again to request another run — it auto-resets after each dispatch.

  • This comment updates as new commits land; your reviewer selections are preserved.

  • Start review

@github-actions

Copy link
Copy Markdown
Contributor

Bundle size comparison

Base commit: 76f3ceb30a0ef29e6ee5ee47c0d9eb9c2d204e01
Head commit: 1767b89b0704581e5abf11398f1b77dc52e55cf4

Notable changes

No bundles changed by ≥ 500 bytes parsed.

Per-bundle deltas

@fluid-example/bundle-size-tests

  • fluidFrameworkAllAlpha.js: parsed 784509 → 784551 (+42), gzip 215049 → 215081 (+32)
  • azureClient.js: parsed 624847 → 625092 (+245), gzip 166640 → 166870 (+230)
  • odspClient.js: parsed 597135 → 597376 (+241), gzip 159785 → 160012 (+227)
  • aqueduct.js: parsed 531223 → 531258 (+35), gzip 142114 → 142143 (+29)
  • fluidFramework.js: parsed 403809 → 403830 (+21), gzip 114489 → 114506 (+17)
  • sharedTree.js: parsed 393213 → 393227 (+14), gzip 111931 → 111940 (+9)
  • containerRuntime.js: parsed 309144 → 309158 (+14), gzip 84569 → 84576 (+7)
  • sharedString.js: parsed 176510 → 176517 (+7), gzip 49798 → 49805 (+7)
  • experimentalSharedTree.js: parsed 160665 → 160665 (0), gzip 46265 → 46265 (0)
  • matrix.js: parsed 160341 → 160348 (+7), gzip 45798 → 45805 (+7)
  • loader.js: parsed 145704 → 145949 (+245), gzip 39286 → 39425 (+139)
  • odspDriver.js: parsed 103906 → 103927 (+21), gzip 32404 → 32411 (+7)
  • directory.js: parsed 67110 → 67117 (+7), gzip 18859 → 18866 (+7)
  • 578.js: parsed 58686 → 58686 (0), gzip 17657 → 17657 (0)
  • map.js: parsed 47205 → 47212 (+7), gzip 14455 → 14462 (+7)
  • odspPrefetchSnapshot.js: parsed 45635 → 45649 (+14), gzip 15242 → 15250 (+8)
  • 252.js: parsed 44362 → 44362 (0), gzip 13735 → 13735 (0)
  • summarizerDelayLoadedModule.js: parsed 30717 → 30717 (0), gzip 7716 → 7716 (0)
  • socketModule.js: parsed 26469 → 26476 (+7), gzip 7896 → 7903 (+7)
  • createNewModule.js: parsed 12454 → 12454 (0), gzip 4797 → 4797 (0)
  • summaryModule.js: parsed 3789 → 3789 (0), gzip 1857 → 1857 (0)
  • connectionState.js: parsed 909 → 909 (0), gzip 500 → 500 (0)
  • sharedTreeAttributes.js: parsed 847 → 854 (+7), gzip 499 → 508 (+9)
  • debugAssert.js: parsed 429 → 429 (0), gzip 299 → 299 (0)
  • FluidFramework-HashFallback.js: parsed 419 → 419 (0), gzip 313 → 313 (0)

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

Labels

area: loader Loader related issues area: repo Repo related work area: tests Tests to add, test infrastructure improvements, etc area: tools area: website base: main PRs targeted against main branch changeset-present deep-review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant