Skip to content
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

feat: Implement log storage polymorphism #82

Merged
merged 19 commits into from
Sep 30, 2024
Merged

Conversation

jopemachine
Copy link
Member

@jopemachine jopemachine commented Apr 20, 2024

Prerequisites of #124.
Resolves #85, #133.

  • Implement MemStorage for testing
  • Implement log storage polymorphism
    • Now we can build it so that only the necessary crates for each storage are included in the binaries.
  • Separate raftify_cli into a standalone crate
    • The raftify_cli crate is separated into its own crate because it needs to include all storage dependencies.
  • Change the WAL bootstrap method.
    • Now WAL log is used automatically if available, and only receive from the config whether to bootstrap from a snapshot or not.

Note: While it is possible to define a PyStorage type in Python to allow for custom storage, it would not perform well, and since no useful examples of its application have been found, we will not proceed with this approach. Instead, let's move the storage object creation logic into the Raft.bootstrap() method, and configure the raftify-py package to build a separate whl file for each storage type during the build process.

@jopemachine jopemachine marked this pull request as ready for review April 20, 2024 09:18
@jopemachine jopemachine added log-storage Log store (Stable storage) feature New feature or request labels Apr 20, 2024
@jopemachine jopemachine linked an issue Apr 29, 2024 that may be closed by this pull request
@jopemachine jopemachine marked this pull request as draft September 23, 2024 08:30
@jopemachine jopemachine added the refactoring Rewrite something in better way while keeping the same functionality label Sep 27, 2024
@jopemachine jopemachine changed the title feat: Implement MemStorage feat: Implement log storage polymorphism Sep 27, 2024
@jopemachine
Copy link
Member Author

Remaining tasks: Python bindings and documentation update.

@jopemachine jopemachine marked this pull request as ready for review September 30, 2024 02:53
@jopemachine jopemachine merged commit dc89235 into main Sep 30, 2024
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
epic feature New feature or request log-storage Log store (Stable storage) refactoring Rewrite something in better way while keeping the same functionality
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Implement Inmemory storage
1 participant