Skip to content

break(framework): Delete FFS and use LinkState instead#6810

Merged
danieljanes merged 38 commits intomainfrom
rm-ffs-2-rm-ffs
Apr 8, 2026
Merged

break(framework): Delete FFS and use LinkState instead#6810
danieljanes merged 38 commits intomainfrom
rm-ffs-2-rm-ffs

Conversation

@danieljanes
Copy link
Copy Markdown
Member

Merge after #6809

This PR:

  • Replaces all FFS usage with LinkState store_fab and get_fab
  • Removes all FFS usage
  • Deletes FFS (inc. all implementations)

@github-actions github-actions Bot added the Maintainer Used to determine what PRs (mainly) come from Flower maintainers. label Mar 22, 2026
Comment thread framework/docs/source/how-to-run-flower-locally.rst Outdated
@jafermarq jafermarq changed the title refactor(framework): Delete FFS and use LinkState instead break(framework): Delete FFS and use LinkState instead Apr 7, 2026
Base automatically changed from rm-ffs-1-add-state-methods to main April 7, 2026 16:53
@danieljanes danieljanes marked this pull request as ready for review April 7, 2026 16:54
Copilot AI review requested due to automatic review settings April 7, 2026 16:54
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR completes the migration away from the legacy Flower File Storage (FFS) by moving FAB persistence/retrieval fully onto LinkState/NodeState via store_fab/get_fab, and removes the FFS implementation and related CLI/configuration surface.

Changes:

  • Replace FFS-based FAB storage/retrieval with state.store_fab(...) / state.get_fab(...) across SuperLink/SuperNode APIs.
  • Remove FFS plumbing (factories, CLI flags, runtime wiring) and delete the flwr.supercore.ffs package.
  • Update tests and documentation to reflect the breaking storage change (FABs stored in state rather than local ffs/).

Reviewed changes

Copilot reviewed 26 out of 26 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
framework/py/flwr/supernode/start_client_internal.py Stop initializing/using FFS; store FABs via NodeState.store_fab.
framework/py/flwr/supernode/start_client_internal_test.py Update unit tests to remove FFS mocks and assert store_fab calls.
framework/py/flwr/supernode/servicer/clientappio/clientappio_servicer.py Replace FAB reads from FFS with NodeState.get_fab.
framework/py/flwr/supernode/servicer/clientappio/clientappio_servicer_test.py Update servicer construction after removing ffs_factory dependency.
framework/py/flwr/superlink/servicer/control/control_servicer.py Store FABs via LinkState.store_fab during StartRun.
framework/py/flwr/superlink/servicer/control/control_servicer_test.py Remove tempfile/FFS setup; rely on state-backed FAB storage.
framework/py/flwr/superlink/servicer/control/control_grpc.py Remove ffs_factory from Control API server wiring.
framework/py/flwr/supercore/ffs/ffs.py Deleted: FFS abstract interface removed.
framework/py/flwr/supercore/ffs/ffs_test.py Deleted: FFS conformance tests removed.
framework/py/flwr/supercore/ffs/ffs_factory.py Deleted: FFS factory removed.
framework/py/flwr/supercore/ffs/ffs_factory_test.py Deleted: FFS factory tests removed.
framework/py/flwr/supercore/ffs/disk_ffs.py Deleted: disk-based FFS implementation removed.
framework/py/flwr/supercore/ffs/init.py Deleted: FFS package exports removed.
framework/py/flwr/server/superlink/serverappio/serverappio_servicer.py Replace FFS usage with LinkState.get_fab for ServerApp inputs.
framework/py/flwr/server/superlink/serverappio/serverappio_servicer_test.py Update tests to store FABs via state.store_fab (hash-validated).
framework/py/flwr/server/superlink/serverappio/serverappio_grpc.py Remove ffs_factory parameter from ServerAppIo gRPC server wiring.
framework/py/flwr/server/superlink/fleet/rest_rere/rest_api.py Drop FFS dependency and route FAB retrieval through state/message handler.
framework/py/flwr/server/superlink/fleet/message_handler/message_handler.py Update get_fab handler to read from state and validate hash matches run.
framework/py/flwr/server/superlink/fleet/grpc_rere/node_auth_server_interceptor_test.py Update FAB setup to use state.store_fab and run FAB hash.
framework/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py Remove ffs_factory dependency; call updated message_handler.get_fab.
framework/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer_test.py Update tests to use state-backed FAB storage; add hash-mismatch rejection case.
framework/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer_test.py Update adapter servicer construction after FleetServicer signature change.
framework/py/flwr/server/app.py Remove --storage-dir flag and all FFS initialization/wiring from SuperLink runtime.
framework/py/flwr/cli/local_superlink.py Stop creating/passing an ffs/ directory to the managed local SuperLink process.
framework/py/flwr/cli/local_superlink_test.py Adjust CLI spawn assertions to ensure --storage-dir is no longer used.
framework/docs/source/how-to-run-flower-locally.rst Document breaking change: FABs stored in state, legacy ffs/ data not migrated.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread framework/py/flwr/server/superlink/fleet/rest_rere/rest_api.py Outdated
Comment thread framework/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer_test.py Outdated
jafermarq and others added 4 commits April 7, 2026 18:12
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…cer_test.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fdc0ba1762

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread framework/py/flwr/server/superlink/serverappio/serverappio_grpc.py
@danieljanes danieljanes enabled auto-merge (squash) April 8, 2026 09:57
@danieljanes danieljanes merged commit 320a4b7 into main Apr 8, 2026
69 of 70 checks passed
@danieljanes danieljanes deleted the rm-ffs-2-rm-ffs branch April 8, 2026 10:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Maintainer Used to determine what PRs (mainly) come from Flower maintainers.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants