Releases: relab/gorums
Almost complete rewrite
What's Changed
- register benchmark server for standalone servers by @abjeni in #229
- Add support for server-side interceptors by @JosteinLindhom in #234
- Redesigned channel with improved reliability and maintainability by @meling in #236
- chore: migrate tests to protobuf Opaque API by @Copilot in #238
- Gorums release v0.10.0 by @meling in #239
- Move tests to internal package by @meling in #241
- Simplify testing gorums internals without depending on protobuf or gorums generated code by @meling in #242
- Flexible and simplified mock proto solution via TestMain by @meling in #243
- Major Refactoring: Interceptor Architecture & Iterator-based Responses by @meling in #245
- Gorums release v0.11.0 by @meling in #247
New Contributors
- @JosteinLindhom made their first contribution in #234
- @Copilot made their first contribution in #238
Credits
- The iterator-based responses API was partially inspired by @abjeni's previous PR #230.
Full Changelog: v0.9.0...v0.11.0
Gorums v0.10.0
Gorums release v0.10.0 (#239)
The main changes are outlined below. Although these are public APIs, they should not impact actual code in the wild, as they modify methods and functions marked for use by generated code.
-
github.com/relab/gorums
incompatible changes
Message.Message: removed
Message.Metadata: removed
SendMessage: removed
Server: old is comparable, new is not
WrapMessage: removed
requestHandler: changed from func(ServerCtx, *Message, chan<- *Message) to func(ServerCtx, *Message) (*Message, error)
compatible changes
(*Message).GetMessageID: added
(*Message).GetMetadata: added
(*Message).GetMethod: added
(*Message).GetProtoMessage: added
(*Message).GetStatus: added
(*ServerCtx).SendMessage: added
AsProto: added
Handler: added
Interceptor: added
NewResponseMessage: added
WithInterceptors: added
github.com/relab/gorums/benchmark
incompatible changes
github.com/relab/gorums.(*Server).RegisterHandler: changed from func(string, github.com/relab/gorums.requestHandler) to func(string, github.com/relab/gorums.Handler)
Adds support for passing per-message metadata
Adds support for protobuf editions (include latest fixes as well)
github.com/relab/gorums
incompatible changes
ConfigCreationError: removed
Error: removed
QuorumCallError.Errors: removed
QuorumCallError.Reason: removed
QuorumCallError.ReplyCount: removed
WithDialTimeout: removed
compatible changes
Incomplete: added
QuorumCallError.Is: added
WithConnectCallback: added
github.com/relab/gorums/benchmark
incompatible changes
(*Echo).Descriptor: removed
(*MemoryStat).Descriptor: removed
(*MemoryStatList).Descriptor: removed
(*Result).Descriptor: removed
(*StartRequest).Descriptor: removed
(*StartResponse).Descriptor: removed
(*StopRequest).Descriptor: removed
(*TimedMsg).Descriptor: removed
Benchmark: removed
ConfigurationFromRaw: changed from func(github.com/relab/gorums.RawConfiguration, QuorumSpec) *Configuration to func(github.com/relab/gorums.RawConfiguration, QuorumSpec) (*Configuration, error)
Echo.Payload: removed
MemoryStat.Allocs: removed
MemoryStat.Memory: removed
MemoryStatList.MemoryStats: removed
Result.AllocsPerOp: removed
Result.LatencyAvg: removed
Result.LatencyVar: removed
Result.MemPerOp: removed
Result.Name: removed
Result.ServerStats: removed
Result.Throughput: removed
Result.TotalOps: removed
Result.TotalTime: removed
TimedMsg.Payload: removed
TimedMsg.SendTime: removed
compatible changes
(*Echo).SetPayload: added
(*MemoryStat).SetAllocs: added
(*MemoryStat).SetMemory: added
(*MemoryStatList).SetMemoryStats: added
(*Result).SetAllocsPerOp: added
(*Result).SetLatencyAvg: added
(*Result).SetLatencyVar: added
(*Result).SetMemPerOp: added
(*Result).SetName: added
(*Result).SetServerStats: added
(*Result).SetThroughput: added
(*Result).SetTotalOps: added
(*Result).SetTotalTime: added
(*TimedMsg).SetPayload: added
(*TimedMsg).SetSendTime: added
BenchmarkClient: added
BenchmarkServer: added
Echo_builder: added
MemoryStatList_builder: added
MemoryStat_builder: added
Result_builder: added
StartRequest_builder: added
StartResponse_builder: added
StopRequest_builder: added
TimedMsg_builder: added
github.com/relab/gorums/cmd/protoc-gen-gorums/dev
incompatible changes
(*MyResponse).Descriptor: removed
(*Request).Descriptor: removed
(*Response).Descriptor: removed
ConfigurationFromRaw: changed from func(github.com/relab/gorums.RawConfiguration, QuorumSpec) *Configuration to func(github.com/relab/gorums.RawConfiguration, QuorumSpec) (*Configuration, error)
MyResponse.Value: removed
Request.Value: removed
Response.Result: removed
ZorumsService: removed
compatible changes
(*MyResponse).SetValue: added
(*Request).SetValue: added
(*Response).SetResult: added
MyResponse_builder: added
Request_builder: added
Response_builder: added
ZorumsServiceClient: added
ZorumsServiceNodeClient: added
ZorumsServiceServer: added
github.com/relab/gorums/ordering
incompatible changes
(*Metadata).Descriptor: removed
GorumsClient.NodeStream: changed from func(context.Context, ...google.golang.org/grpc.CallOption) (Gorums_NodeStreamClient, error) to func(context.Context, ...google.golang.org/grpc.CallOption) (google.golang.org/grpc.BidiStreamingClient[Metadata, Metadata], error)
GorumsServer.NodeStream: changed from func(Gorums_NodeStreamServer) error to func(google.golang.org/grpc.BidiStreamingServer[Metadata, Metadata]) error
Gorums_NodeStreamClient: changed from Gorums_NodeStreamClient to google.golang.org/grpc.BidiStreamingClient[Metadata, Metadata]
Gorums_NodeStreamServer: changed from Gorums_NodeStreamServer to google.golang.org/grpc.BidiStreamingServer[Metadata, Metadata]
Metadata.MessageID: removed
Metadata.Method: removed
Metadata.Status: removed
UnimplementedGorumsServer.NodeStream: changed from func(Gorums_NodeStreamServer) error to func(google.golang.org/grpc.BidiStreamingServer[Metadata, Metadata]) error
compatible changes
(*Metadata).ClearStatus: added
(*Metadata).HasStatus: added
(*Metadata).SetMessageID: added
(*Metadata).SetMethod: added
(*Metadata).SetStatus: added
Gorums_NodeStream_FullMethodName: added
Metadata_builder: added
github.com/relab/gorums/tests/config
incompatible changes
ConfigTest: removed
ConfigurationFromRaw: changed from func(github.com/relab/gorums.RawConfiguration, QuorumSpec) *Configuration to func(github.com/relab/gorums.RawConfiguration, QuorumSpec) (*Configuration, error)
compatible changes
ConfigTestClient: added
ConfigTestServer: added
github.com/relab/gorums/tests/correctable
incompatible changes
ConfigurationFromRaw: changed from func(github.com/relab/gorums.RawConfiguration, QuorumSpec) *Configuration to func(github.com/relab/gorums.RawConfiguration, QuorumSpec) (*Configuration, error)
CorrectableTest: removed
compatible changes
CorrectableTestClient: added
CorrectableTestServer: added
github.com/relab/gorums/tests/dummy
incompatible changes
ConfigurationFromRaw: changed from func(github.com/relab/gorums.RawConfiguration, QuorumSpec) *Configuration to func(github.com/relab/gorums.RawConfiguration, QuorumSpec) (*Configuration, error)
Dummy: removed
compatible changes
DummyNodeClient: added
DummyServer: added
github.com/relab/gorums/tests/metadata
incompatible changes
ConfigurationFromRaw: changed from func(github.com/relab/gorums.RawConfiguration, QuorumSpec) *Configuration to func(github.com/relab/gorums.RawConfiguration, QuorumSpec) (*Configuration, error)
MetadataTest: removed
compatible changes
MetadataTestNodeClient: added
MetadataTestServer: added
github.com/relab/gorums/tests/mock
compatible changes
package added
github.com/relab/gorums/tests/oneway
incompatible changes
ConfigurationFromRaw: changed from func(github.com/relab/gorums.RawConfiguration, QuorumSpec) *Configuration to func(github.com/relab/gorums.RawConfiguration, QuorumSpec) (*Configuration, error)
OnewayTest: removed
compatible changes
OnewayTestClient: added
OnewayTestNodeClient: added
OnewayTestServer: added
github.com/relab/gorums/tests/ordering
incompatible changes
ConfigurationFromRaw: changed from func(github.com/relab/gorums.RawConfiguration, QuorumSpec) *Configuration to func(github.com/relab/gorums.RawConfiguration, QuorumSpec) (*Configuration, error)
GorumsTest: removed
compatible changes
GorumsTestClient: added
GorumsTestNodeClient: added
GorumsTestServer: added
github.com/relab/gorums/tests/qf
incompatible changes
ConfigurationFromRaw: changed from func(github.com/relab/gorums.RawConfiguration, QuorumSpec) *Configuration to func(github.com/relab/gorums.RawConfiguration, QuorumSpec) (*Configuration, error)
QuorumFunction: removed
compatible changes
QuorumFunctionClient: added
QuorumFunctionServer: added
github.com/relab/gorums/tests/tls
incompatible changes
ConfigurationFromRaw: changed from func(github.com/relab/gorums.RawConfiguration, QuorumSpec) *Configuration to func(github.com/relab/gorums.RawConfiguration, QuorumSpec) (*Configuration, error)
TLS: removed
compatible changes
TLSNodeClient: added
TLSServer: added
github.com/relab/gorums/tests/unresponsive
incompatible changes
ConfigurationFromRaw: changed from func(github.com/relab/gorums.RawConfiguration, QuorumSpec) *Configuration to func(github.com/relab/gorums.RawConfiguration, QuorumSpec) (*Configuration, error)
Unresponsive: removed
compatible changes
UnresponsiveNodeClient: added
UnresponsiveServer: added
summary
Inferred base version: v0.7.0
Suggested version: v0.8.0
Adds support for protobuf editions
github.com/relab/gorums
incompatible changes
ConfigCreationError: removed
Error: removed
QuorumCallError.Errors: removed
QuorumCallError.Reason: removed
QuorumCallError.ReplyCount: removed
WithDialTimeout: removed
compatible changes
Incomplete: added
QuorumCallError.Is: added
WithConnectCallback: added
github.com/relab/gorums/benchmark
incompatible changes
(*Echo).Descriptor: removed
(*MemoryStat).Descriptor: removed
(*MemoryStatList).Descriptor: removed
(*Result).Descriptor: removed
(*StartRequest).Descriptor: removed
(*StartResponse).Descriptor: removed
(*StopRequest).Descriptor: removed
(*TimedMsg).Descriptor: removed
Benchmark: removed
ConfigurationFromRaw: changed from func(github.com/relab/gorums.RawConfiguration, QuorumSpec) *Configuration to func(github.com/relab/gorums.RawConfiguration, QuorumSpec) (*Configuration, error)
Echo.Payload: removed
MemoryStat.Allocs: removed
MemoryStat.Memory: removed
MemoryStatList.MemoryStats: removed
Result.AllocsPerOp: removed
Result.LatencyAvg: removed
Result.LatencyVar: removed
Result.MemPerOp: removed
Result.Name: removed
Result.ServerStats: removed
Result.Throughput: removed
Result.TotalOps: removed
Result.TotalTime: removed
TimedMsg.Payload: removed
TimedMsg.SendTime: removed
compatible changes
(*Echo).SetPayload: added
(*MemoryStat).SetAllocs: added
(*MemoryStat).SetMemory: added
(*MemoryStatList).SetMemoryStats: added
(*Result).SetAllocsPerOp: added
(*Result).SetLatencyAvg: added
(*Result).SetLatencyVar: added
(*Result).SetMemPerOp: added
(*Result).SetName: added
(*Result).SetServerStats: added
(*Result).SetThroughput: added
(*Result).SetTotalOps: added
(*Result).SetTotalTime: added
(*TimedMsg).SetPayload: added
(*TimedMsg).SetSendTime: added
BenchmarkClient: added
BenchmarkServer: added
Echo_builder: added
MemoryStatList_builder: added
MemoryStat_builder: added
Result_builder: added
StartRequest_builder: added
StartResponse_builder: added
StopRequest_builder: added
TimedMsg_builder: added
github.com/relab/gorums/cmd/protoc-gen-gorums/dev
incompatible changes
(*MyResponse).Descriptor: removed
(*Request).Descriptor: removed
(*Response).Descriptor: removed
ConfigurationFromRaw: changed from func(github.com/relab/gorums.RawConfiguration, QuorumSpec) *Configuration to func(github.com/relab/gorums.RawConfiguration, QuorumSpec) (*Configuration, error)
MyResponse.Value: removed
Request.Value: removed
Response.Result: removed
ZorumsService: removed
compatible changes
(*MyResponse).SetValue: added
(*Request).SetValue: added
(*Response).SetResult: added
MyResponse_builder: added
Request_builder: added
Response_builder: added
ZorumsServiceClient: added
ZorumsServiceNodeClient: added
ZorumsServiceServer: added
github.com/relab/gorums/ordering
incompatible changes
(*Metadata).Descriptor: removed
GorumsClient.NodeStream: changed from func(context.Context, ...google.golang.org/grpc.CallOption) (Gorums_NodeStreamClient, error) to func(context.Context, ...google.golang.org/grpc.CallOption) (google.golang.org/grpc.BidiStreamingClient[Metadata, Metadata], error)
GorumsServer.NodeStream: changed from func(Gorums_NodeStreamServer) error to func(google.golang.org/grpc.BidiStreamingServer[Metadata, Metadata]) error
Gorums_NodeStreamClient: changed from Gorums_NodeStreamClient to google.golang.org/grpc.BidiStreamingClient[Metadata, Metadata]
Gorums_NodeStreamServer: changed from Gorums_NodeStreamServer to google.golang.org/grpc.BidiStreamingServer[Metadata, Metadata]
Metadata.MessageID: removed
Metadata.Method: removed
Metadata.Status: removed
UnimplementedGorumsServer.NodeStream: changed from func(Gorums_NodeStreamServer) error to func(google.golang.org/grpc.BidiStreamingServer[Metadata, Metadata]) error
compatible changes
(*Metadata).ClearStatus: added
(*Metadata).HasStatus: added
(*Metadata).SetMessageID: added
(*Metadata).SetMethod: added
(*Metadata).SetStatus: added
Gorums_NodeStream_FullMethodName: added
Metadata_builder: added
github.com/relab/gorums/tests/config
incompatible changes
ConfigTest: removed
ConfigurationFromRaw: changed from func(github.com/relab/gorums.RawConfiguration, QuorumSpec) *Configuration to func(github.com/relab/gorums.RawConfiguration, QuorumSpec) (*Configuration, error)
compatible changes
ConfigTestClient: added
ConfigTestServer: added
github.com/relab/gorums/tests/correctable
incompatible changes
ConfigurationFromRaw: changed from func(github.com/relab/gorums.RawConfiguration, QuorumSpec) *Configuration to func(github.com/relab/gorums.RawConfiguration, QuorumSpec) (*Configuration, error)
CorrectableTest: removed
compatible changes
CorrectableTestClient: added
CorrectableTestServer: added
github.com/relab/gorums/tests/dummy
incompatible changes
ConfigurationFromRaw: changed from func(github.com/relab/gorums.RawConfiguration, QuorumSpec) *Configuration to func(github.com/relab/gorums.RawConfiguration, QuorumSpec) (*Configuration, error)
Dummy: removed
compatible changes
DummyNodeClient: added
DummyServer: added
github.com/relab/gorums/tests/metadata
incompatible changes
ConfigurationFromRaw: changed from func(github.com/relab/gorums.RawConfiguration, QuorumSpec) *Configuration to func(github.com/relab/gorums.RawConfiguration, QuorumSpec) (*Configuration, error)
MetadataTest: removed
compatible changes
MetadataTestNodeClient: added
MetadataTestServer: added
github.com/relab/gorums/tests/mock
compatible changes
package added
github.com/relab/gorums/tests/oneway
incompatible changes
ConfigurationFromRaw: changed from func(github.com/relab/gorums.RawConfiguration, QuorumSpec) *Configuration to func(github.com/relab/gorums.RawConfiguration, QuorumSpec) (*Configuration, error)
OnewayTest: removed
compatible changes
OnewayTestClient: added
OnewayTestNodeClient: added
OnewayTestServer: added
github.com/relab/gorums/tests/ordering
incompatible changes
ConfigurationFromRaw: changed from func(github.com/relab/gorums.RawConfiguration, QuorumSpec) *Configuration to func(github.com/relab/gorums.RawConfiguration, QuorumSpec) (*Configuration, error)
GorumsTest: removed
compatible changes
GorumsTestClient: added
GorumsTestNodeClient: added
GorumsTestServer: added
github.com/relab/gorums/tests/qf
incompatible changes
ConfigurationFromRaw: changed from func(github.com/relab/gorums.RawConfiguration, QuorumSpec) *Configuration to func(github.com/relab/gorums.RawConfiguration, QuorumSpec) (*Configuration, error)
QuorumFunction: removed
compatible changes
QuorumFunctionClient: added
QuorumFunctionServer: added
github.com/relab/gorums/tests/tls
incompatible changes
ConfigurationFromRaw: changed from func(github.com/relab/gorums.RawConfiguration, QuorumSpec) *Configuration to func(github.com/relab/gorums.RawConfiguration, QuorumSpec) (*Configuration, error)
TLS: removed
compatible changes
TLSNodeClient: added
TLSServer: added
github.com/relab/gorums/tests/unresponsive
incompatible changes
ConfigurationFromRaw: changed from func(github.com/relab/gorums.RawConfiguration, QuorumSpec) *Configuration to func(github.com/relab/gorums.RawConfiguration, QuorumSpec) (*Configuration, error)
Unresponsive: removed
compatible changes
UnresponsiveNodeClient: added
UnresponsiveServer: added
summary
Inferred base version: v0.7.0
Suggested version: v0.8.0
Rename non-generated Manager, Node and Configuration structs
This release changes the names of the non-generated Manager, Node and Configuration structs to RawManager, RawNode, and RawConfiguration in order to better differentiate them from the generated versions.
This release also adds a generated ConfigurationFromRaw function that can be used to create a configuration from an existing RawConfiguration.
Fixes minor issues found by Go Report Card
This release mainly fixes some lint issues found by Go Report Card.
- Issues were mainly missing comments for public variables and functions
- In addition, this also reduces some complexity in the different call types and the benchmarking tool
Add custom ServerCtx with Release() method
Simplifies the server API by moving the release() function into a special context object ServerCtx.
Avoid reusing mutex for multiple streams.
Fixed Correctable streams.
incompatible changes
requestHandler: changed from func(context.Context, *Message, chan<- *Message) to func(ServerCtx, *Message, chan<- *Message)
compatible changes
(*Node).Host: added
SendMessage: added
ServerCtx: added
Refactor Node and other simplifications
This release is mainly refactoring and renaming some types.
Node now uses a new channel abstraction in place of the orderedNodeStream, and does away with receiveQueue and makes other simplifications.
Also Node decouples better from channel, making it easier to test both individually.
The channel abstraction may be expanded in the future to allow multiple channels per node.
Revised NewConfiguration API and more
This release includes a revised API for creating new configurations via Manager.NewConfiguration() that allows QuorumSpec and NodeListOption types be added in any order. The release also allows to create a configuration with additional nodes via Configuration.WithNewNodes and excluded via Configuration.Without, and there is also Configuration.And and Configuration.Except that operates on Configuration objects.
Other changes:
- Replaced deprecated
golang.org/x/tools/go/loaderwithgolang.org/x/tools/go/packagesingorums_bundle.gofor a significant speed boost. - Fixed bug in dependency handling due to missing generated files.
- Improved version handling.
- Upgraded all dependencies to the most recent version and tested.
- Documentation and user guides have been updated