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

[specs][doc] FizzBee spec for the Venice's LeaderFollower protocol #958

Merged
merged 4 commits into from
Jun 5, 2024

Conversation

jayaprabhakar
Copy link
Contributor

@jayaprabhakar jayaprabhakar commented Apr 23, 2024

Summary, imperative, start upper case, don't end with a period

FizzBee spec for the Venice's LeaderFollower protocol, a one-to-one translation from the TLA+ syntax to the FizzBee syntax.

How was this PR tested?

Manually run it with the fizz model checker.

fizz specs/fizzbee/LeaderFollower/VeniceLeaderFollower.fizz 

Does this PR introduce any user-facing changes?

  • No. You can skip the rest of this section.
  • Yes. Make sure to explain your proposed changes and call out the behavior change.

This is a literal transilation of TLA+ syntax to FizzBee syntax.
@ZacAttack
Copy link
Contributor

Looks great! Could I also trouble you to include a readme file with the PR for how to run the spec/install fizz?

@jayaprabhakar
Copy link
Contributor Author

Sure. Added the README file pointing to the instructions at. https://github.com/fizzbee-io/fizzbee

At present, there is no precompiled binary, I have the full instructions to compile from source that I have tested in MacBook and Ubuntu on EC2.

Copy link
Contributor

@FelixGV FelixGV left a comment

Choose a reason for hiding this comment

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

Thanks for sharing this! It is my first time reading FizzBee (and I am not that familiar with TLA+ either, so please bear with me...). I left a few comments, some of which may be for Zac, others which may be about how to model a given situation in FizzBee itself... I'd be interested to hear your thoughts on these. Thanks again!

specs/fizzbee/LeaderFollower/VeniceLeaderFollower.fizz Outdated Show resolved Hide resolved
specs/fizzbee/LeaderFollower/VeniceLeaderFollower.fizz Outdated Show resolved Hide resolved
specs/fizzbee/LeaderFollower/VeniceLeaderFollower.fizz Outdated Show resolved Hide resolved
1. Maintain a bool variable newly_promoted to indicate a new leader
   who has not caught up on previous version topics.
2. Continue to update vtOffset and rtOffset for each node irrespective
   of whether the node is a leader or follower.
3. Make the leader and follower consumption serial instead of atomic
   - The leader will first post to version_topic, then, update the local datastore, then update the offsets
   - Similarly, the follower will first update its local datastore and then update the offsets.
   The system can crash at either of these points, and the design is verified to work even if the system crashes in between
@jayaprabhakar
Copy link
Contributor Author

@FelixGV @ZacAttack I have made the changes you asked for in this commit: c721c5e


Please take a look and let me know.

Copy link
Contributor

@FelixGV FelixGV left a comment

Choose a reason for hiding this comment

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

Sorry for the wait! I'm just now getting back to this... I left one more question. Thanks for sharing your work with us!

specs/fizzbee/LeaderFollower/VeniceLeaderFollower.fizz Outdated Show resolved Hide resolved
Copy link
Contributor

@FelixGV FelixGV left a comment

Choose a reason for hiding this comment

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

I think this is good to go! Thanks a lot for contributing this spec and for teaching us about FizzBee!

@FelixGV FelixGV merged commit 6327449 into linkedin:main Jun 5, 2024
32 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants