Skip to content

DDS Fuzz: Add Rollback #24930

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 109 commits into
base: main
Choose a base branch
from

Conversation

anthony-murphy
Copy link
Contributor

This pull request introduces a new "rollback" operation to the DDS fuzz testing framework, along with supporting changes to the mock runtime utilities. The most notable updates include the addition of the Rollback interface, modifications to the operation generation logic, and enhancements to the mock container runtime to support manual flush mode for rollback operations.

Changes to DDS Fuzz Testing Framework:

  • Added a new Rollback operation type, including its interface (Rollback) and integration into the HarnessOperation union type. This allows the framework to simulate rollback scenarios during fuzz testing. [1] [2]
  • Introduced a rollbackProbability option in DDSFuzzSuiteOptions and set a default value of 0.01 in defaultDDSFuzzSuiteOptions. This determines the likelihood of triggering a rollback during fuzz testing. [1] [2]
  • Added a mixinRollback function to extend the fuzz testing model with rollback functionality. This includes logic for generating rollback operations and applying them during state transitions.
  • Updated the getFullModel function to include the rollback mixin in the composition of the fuzz testing model.

Changes to Mock Runtime Utilities:

  • Enhanced the MockContainerRuntime class by adding a runWithManualFlush method. This enables manual control over flush mode, allowing operations like rollback to be executed in a controlled environment.
  • Modified the submit method in MockContainerRuntime to respect manual flush mode when active, ensuring rollback operations are handled correctly.

anthony-murphy added a commit that referenced this pull request Jul 3, 2025
This change implements local rollback in shared tree and adds some basic
unit test for the scenario. This is modeled after the existing code for
aborting a transaction, which behaves similarly.

This is a precursor change to expanded fuzz coverage for rollback for
all dds via the dds fuzz and incorporating tree into local server
stress. There is a prototype of that here:
#24930
MarioJGMsoft pushed a commit to MarioJGMsoft/FluidFramework that referenced this pull request Jul 8, 2025
This change implements local rollback in shared tree and adds some basic
unit test for the scenario. This is modeled after the existing code for
aborting a transaction, which behaves similarly.

This is a precursor change to expanded fuzz coverage for rollback for
all dds via the dds fuzz and incorporating tree into local server
stress. There is a prototype of that here:
microsoft#24930
@github-actions github-actions bot added area: tests Tests to add, test infrastructure improvements, etc and removed area: tests Tests to add, test infrastructure improvements, etc labels Jul 9, 2025
@github-actions github-actions bot removed the area: tests Tests to add, test infrastructure improvements, etc label Jul 21, 2025
Copy link
Contributor

🔗 No broken links found! ✅

Your attention to detail is admirable.

linkcheck output


> fluid-framework-docs-site@0.0.0 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"


> fluid-framework-docs-site@0.0.0 serve
> docusaurus serve --no-open

[SUCCESS] Serving "build" directory at: http://localhost:3000/

> fluid-framework-docs-site@0.0.0 check-links
> linkcheck http://localhost:3000 --skip-file skipped-urls.txt

Crawling...

Stats:
  213391 links
    1455 destination URLs
    1686 URLs ignored
       0 warnings
       0 errors


sonalideshpandemsft added a commit that referenced this pull request Jul 29, 2025
Original PR: #24930

This PR is an initial checkin to add `rollbackProbability` flag. This
disables the failing tests/seed from the original PR by setting
rollbackProbability to 0, and corrects the Biome formatting issues.
[Work
items](https://dev.azure.com/fluidframework/internal/_workitems/edit/43924)
have been opened to track and reenable the skipped tests.


[ADO#43937](https://dev.azure.com/fluidframework/internal/_workitems/edit/43937)

---------

Co-authored-by: Tony Murphy <anthony.murphy@microsoft.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: dds: sharedstring area: dds: tree area: dds Issues related to distributed data structures area: runtime Runtime related issues base: main PRs targeted against main branch public api change Changes to a public API
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant