Hein Meling
Hein Meling
This PR introduces a significant architectural shift for Gorums, moving towards a more flexible, interceptor-based design and adopting modern Go iterator patterns. These changes simplify the codebase, improve type safety,...
We currently use a `sync.RWMutex` in our [channel implementation](https://github.com/relab/gorums/blob/691cd1b9b6c2787091919db485f6389dd443106b/channel.go#L49). However, it is not clear that this is beneficial, given the extra overhead vs the regular mutex. We should benchmark with...
Mostly edits on top of multiparty-update branch. - **refactor: update signature handling to use getter methods** - **refactor: update message metadata handling to use getter methods** - **refactor: update metadata...
Would it make sense to rename `ManagerOption` to `ClientOption` and similarly for other `Manager` related stuff... I am unsure, but connecting it with the "client" side of things would make...
See issue #212. This code snippet from `server.go:NodeStream`: ```go for { req := newMessage(requestType) err := srv.RecvMsg(req) if err != nil { return err } ``` May return this error:...
Three days of debugging (and rewriting) leads me to write this. We should create a troubleshooting guide with some common (and uncommon) pitfalls when dealing with Gorums, protobuf, and gRPC....
This is part of generated code: ```go // ConfigurationFromRaw returns a new Configuration from the given raw configuration and QuorumSpec. // // This function may for example be used to...
The current version of NewConfiguration takes only a single variadic whose type is an empty interface. This makes the code fragile and it can break at runtime if passed an...
We currently don't do any graceful shutdown for our quorum calls and other call types. We should support [graceful shutdown](https://grpc.io/docs/guides/server-graceful-stop/).
This does not work as expected because `QuorumCallError` does not implement the `Is` and `As` methods. ```go // Assume err is a gorums.QuorumCallError if errors.Is(err, context.DeadlineExceeded) { // handle deadline...