Skip to content

Releases: relab/gorums

Adds support for protobuf editions (include latest fixes as well)

05 Mar 17:00
Compare
Choose a tag to compare

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

05 Mar 16:55
4c3bde2
Compare
Choose a tag to compare
Pre-release

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

06 Jan 12:06
Compare
Choose a tag to compare

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

18 Dec 15:52
Compare
Choose a tag to compare

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

13 Dec 08:46
Compare
Choose a tag to compare

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

10 May 18:29
Compare
Choose a tag to compare
Pre-release

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

28 Mar 08:35
Compare
Choose a tag to compare
Pre-release

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/loader with golang.org/x/tools/go/packages in gorums_bundle.go for 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

Major overhaul of Manager vs Configuration API and much more

03 Mar 19:44
384a2b7
Compare
Choose a tag to compare

This pre-release is a major overhaul the Manager vs Configuration API; the WithNodeList, WithNodeMap and WithNodeIDs have been moved out of Manager and now is passed to Configuration at creation time. Further, what needs to be generated has been reduced even further, moving more logic to the top-level gorums package. Also, less info needs to be passed to the various call types (Call Data). Further, the documentation has been updated. The unused gorums.ordered option has been removed. Fixes an with PerNodeArgFunc and adds proper tests for this. And much more. See the commit messages and PR descriptions for additional details.

Pre-merge rewrite of generator architecture

07 Jan 20:29
Compare
Choose a tag to compare

This pre-release is just to put a stick in the ground for the current state of the codebase pre merging the new generator architecture that has significantly less generated code (and thus should have smaller binaries).

Bug fixes and more

20 Jul 12:04
Compare
Choose a tag to compare
Bug fixes and more Pre-release
Pre-release

See the commit logs for details...