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

Added raft option validity checks #4

Merged
merged 1 commit into from
Jul 15, 2023
Merged

Added raft option validity checks #4

merged 1 commit into from
Jul 15, 2023

Conversation

jmsadair
Copy link
Owner

This adds checks to ensure that provided raft options are reasonable and valid. Namely,

  • 100 ms <= election timeout <= 2000 ms
  • 25 ms <= heartbeat interval <= 300 ms
  • 50 <= max log entries per RPC <= 500
  • logger is not nil

@jmsadair jmsadair merged commit dc2af3d into dev Jul 15, 2023
@jmsadair jmsadair deleted the options_update branch July 15, 2023 16:13
jmsadair added a commit that referenced this pull request Jul 22, 2023
* Create format.yml

* Committing clang-format changes'

* Added .clang-format file

* Added .clang-format file

* Committing clang-format changes'

* Fixed typo in format.yml

* Fixing format.yml error

* Fixed typo in format.yml

* Fixing format.yml error

* Update README.md

* Refactored raft log

* Refactored Peer struct

* Refactored log tests

* Added sendAppendEntries and leaderLoop functions

* Refactored log tests

* Updated raft.proto file

* Committing clang-format changes

* Adder server struct

* Rafactored log.go

* Refactored logger package and added options.go file

* Added interface, implementation, and tests for stable storage

* Added options.go file

* Refactored log

* Added state.go file

* Removed unnecessary field in volatile log

* Refactored raft

* Added pkg folder, refactored raft, added server tests

* Fixed bug in peer

* Added functions for replication

* Added additional tests for server

* Fixed bug in raft

* Fixed bug in raft

* Added request/response and rpc for installing snapshot

* Committing clang-format changes

* Added compact function to log

* Added install snapshot RPC skeleton functions

* Added install snapshot RPC skeleton functions

* Added state machine interface and mock with tests

* Added snapshot stroage interface and mock with tests

* Refactored pkg files

* Fixed bug in raft

* Fixed bug in raft and updated test cases

* Updated test cases

* Updated test cases

* Refactored raft

* Added checks for go routine leaks

* Refactored raft and implemented snapshotting

* Refactored log

* Added initial snapshot tests

* Added rpc.go file

* Updated state machine tests

* Added state.go file

* Updated test timeout in workflow

* Fixed bug in raft and added documentation

* Refactored server tests and added additional tests

* Added additional server tests

* Fixed TestSingleSnapshot test case

* Added nil checks to server

* Fixed internal package error

* Refactored tests and fixed bug in peer

* Fixed timing error in tests

* Fixed timing error in tests

* Update go.yml

* Refactored raft

* Refactored raft

* Refactored log and updated log tests

* Fixed bugs in raft and refactored server

* Refactored server tests

* Removed rpc.go and state.go

* Refactored raft

* Updated util random timeout function

* Refactored server tests

* Updated log documentation

* Bug fixing

* Added persistence tests

* Bug fixing

* Added documentation for server tests

* Fixing start and shutdown bugs

* Added additional persistence tests

* Fixed bug in request vote RPC

* Increased default election timeout

* Added partition test

* Added additional partition tests

* Added storage state message to raft.proto

* Committing clang-format changes

* Implemented storage and log encoding interfaces

* Added tests for encoder implementations

* Implemented persistent log

* Added tests for persistent log

* Created peer interface

* Updated storage interface

* Added tests for persistent storage

* Refactored server and server tests

* Refactored raft

* Added encoding documentation

* Updated peer documentation

* Debugging raft livelock

* Refactored encoders

* Fixed bug in log

* Refactored storage

* Fixing raft bugs

* Fixing bug in test cluster

* Updated server test timeouts and documentation

* Rafactoring code and documentation

* Fixed incorrect leader check timeout

* Fixed typos

* Fixed typos

* Updated raft documentation

* Creates separate file for request types and conversion functions

* Refactored test cluster

* Added RaftServer interface and wrote documentation

* Updated documentation

* Updated documentation

* Made simulated failures less frequent. Tests fail on some machines due to no progress being made.

* Updated documentation

* Implemented fast log back up optimization

* Committing clang-format changes

* Fixed bug in peer

* Fixed typo

* Updated protobuf with snapshotting messages

* Added InstallSnapshot requests

* Added InstallSnapshot RPC

* Updated snapshot storage

* Added snapshot encoder and decoder

* Implemented log discard function

* Updated snapshotting options

* Updated mock state machine

* Updated tests to handle snapshots

* Added test for snapshot encoder and decoder

* Updated snapshot options

* Updated server documentation

* Updated server tests with snapshot options

* Refactored raft

* Added Makefile

* Updated workflows

* Committing clang-format changes

* Updated snapshot storage documentation

* Added go fmt to workflow

* Refactored peer

* Updated raft documentation

* Updated snapshot store documentation

* Added additional server test

* Added replay function to log

* Refactored log

* Refactored peer

* Updated log error messages

* Refactored snapshot store and added replay function

* Refactored storage

* Refactored raft

* Refactored peer

* Refactored server tests

* Refactored raft

* Refactored server tests and added additional documentation

* Added linting and dependency verification to go workflow

* Added additional tests and refactored tests

* Updated documentation again

* Added FSM loop to raft and updated snapshotting process

* Updated log entry struct

* Refactored state machine

* Updated server tests to handle new snapshotting process

* Updated Makefile to handle protobuf compilation

* Created testing.go for test utilities

* Decoupled raft state from peer and refactored raft

* Updated log documentation

* Updated storage documentation

* Updated snapshot storage documentation

* Removed state_machine_test.go

* Renamed server

* Moved test cluster to testing.go

* Removed pkg directory

* Fixed server documentation

* Refactored encoders and decoders

* Made peer implementation unexported

* Made log implementation unexported

* Made snapshot storage unexported

* Made storage implementation unexported

* Implemented functions for manual snapshotting

* Added manual snapshot tests

* Updated raft documentation

* Fixed storage and snapshot storage documentation

* Updated README.md

* Updated error documentation and minor refactoring

* Updated snapshot storage documentation

* Updated snapshot storage documentation

* Minor refactoring and documentation updates

* Minor refactoring and documentation updates

* Updated README.md with example

* Updated example code

* Updated README.md

* Updated README.md

* Update README.md

* Update README.md

* Update README.md

* Added doc.go file

* Fixed typos

* Refactored raft

* Added tests for single server cluster

* Made RPC functions exported

* Changed server to accept string addresses

* Updated temporary file names

* Updated temporary file names

* Changed server to accept string addresses

* Updated doc.go

* Update README.md

* Fixed bug with temporary files and updated file permissions

* Fixed snapshotting bug

* Rename go.yml to build.yml

* Update build.yml

* Update README.md

* Updated documentation

* Refactored encoding and decoding functions

* Refactored encoding and decoding functions

* Fixed typos

* Update README.md

* Refactored snapshots

* Updated doc.go

* Added max entries per RPC option

* Updated Makefile

* Fixed snapshot testing bug and documentation

* General refactoring

* Added additional test for log

* Added .idea to .gitignore

* Refactored error handling

* Updated README.md

* Fixed typo in documentation

* Refactored test suite

* Updated build.yml with new make rules

* Refactored test suite

* Refactored test suite

* Fixed documentation typos

* Updated README.md

* Create LICENSE

* Added raft options validity checks (#4)

* Snapshot test fix (#5)

* Fixed testing in build workflow

* Fixed failing snapshot storage test

* Committing go fmt changes
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.

1 participant