From 0b0c357b08bbf98eaa7f8b10f210f18673a52ea8 Mon Sep 17 00:00:00 2001 From: YACOVM Date: Tue, 7 Feb 2017 13:04:31 +0200 Subject: [PATCH] Decouple gossip.LeadershipMsg and networkMember The proto message that is used for leader election contains Member, which contains endpoint, metadata and pkiID. There is no use of endpoint in the leader election module, and also- the use of metadata is abuse since its a []byte, but all we do is to put there a bool. I replaced the use of Member by pkiID and a bool value that was previously in the metadata. Change-Id: Id31395c5978f6b8e1791bad35d28a8a66e6cf664 Signed-off-by: Yacov Manevich --- gossip/election/adapter.go | 18 +-- gossip/gossip/gossip_test.go | 11 +- protos/gossip/extensions.go | 2 +- protos/gossip/message.pb.go | 227 +++++++++++++++++------------------ protos/gossip/message.proto | 3 +- 5 files changed, 121 insertions(+), 140 deletions(-) diff --git a/gossip/election/adapter.go b/gossip/election/adapter.go index 586b8eed23a..7f563ea2362 100644 --- a/gossip/election/adapter.go +++ b/gossip/election/adapter.go @@ -18,7 +18,6 @@ package election import ( "bytes" - "strconv" "sync" "time" @@ -35,7 +34,7 @@ type msgImpl struct { } func (mi *msgImpl) SenderID() string { - return string(mi.msg.GetLeadershipMsg().GetMembership().PkiID) + return string(mi.msg.GetLeadershipMsg().PkiID) } func (mi *msgImpl) IsProposal() bool { @@ -43,8 +42,7 @@ func (mi *msgImpl) IsProposal() bool { } func (mi *msgImpl) IsDeclaration() bool { - isDeclaration, _ := strconv.ParseBool(string(mi.msg.GetLeadershipMsg().GetMembership().Metadata)) - return isDeclaration + return mi.msg.GetLeadershipMsg().IsDeclaration } type peerImpl struct { @@ -136,7 +134,7 @@ func (ai *adapterImpl) Accept() <-chan Msg { verifier := func(identity []byte, signature, message []byte) error { return ai.mcs.Verify(identity, signature, message) } - identity, err := ai.mcs.Get(leadershipMsg.GetMembership().PkiID) + identity, err := ai.mcs.Get(leadershipMsg.PkiID) if err != nil { ai.logger.Error("Failed verify, can't get identity", leadershipMsg, ":", err) return false @@ -174,15 +172,9 @@ func (ai *adapterImpl) CreateMessage(isDeclaration bool) Msg { ai.seqNum++ seqNum := ai.seqNum - metadata := []byte{} - metadata = strconv.AppendBool(metadata, isDeclaration) - leadershipMsg := &proto.LeadershipMessage{ - Membership: &proto.Member{ - PkiID: ai.self.PKIid, - Endpoint: ai.self.Endpoint, - Metadata: metadata, - }, + PkiID: ai.self.PKIid, + IsDeclaration: isDeclaration, Timestamp: &proto.PeerTime{ IncNumber: ai.incTime, SeqNum: seqNum, diff --git a/gossip/gossip/gossip_test.go b/gossip/gossip/gossip_test.go index fbbc75002cc..00745b8d903 100644 --- a/gossip/gossip/gossip_test.go +++ b/gossip/gossip/gossip_test.go @@ -909,16 +909,9 @@ func createDataMsg(seqnum uint64, data []byte, hash string, channel common.Chain } func createLeadershipMsg(isDeclaration bool, channel common.ChainID, incTime uint64, seqNum uint64, endpoint string, pkiid []byte) *proto.GossipMessage { - - metadata := []byte{} - metadata = strconv.AppendBool(metadata, isDeclaration) - leadershipMsg := &proto.LeadershipMessage{ - Membership: &proto.Member{ - PkiID: pkiid, - Endpoint: endpoint, - Metadata: metadata, - }, + IsDeclaration: isDeclaration, + PkiID: pkiid, Timestamp: &proto.PeerTime{ IncNumber: incTime, SeqNum: seqNum, diff --git a/protos/gossip/extensions.go b/protos/gossip/extensions.go index 8902828f338..de10523ddb9 100644 --- a/protos/gossip/extensions.go +++ b/protos/gossip/extensions.go @@ -110,7 +110,7 @@ func aliveInvalidationPolicy(thisMsg *AliveMessage, thatMsg *AliveMessage) commo } func leaderInvalidationPolicy(thisMsg *LeadershipMessage, thatMsg *LeadershipMessage) common.InvalidationResult { - if !bytes.Equal(thisMsg.Membership.PkiID, thatMsg.Membership.PkiID) { + if !bytes.Equal(thisMsg.PkiID, thatMsg.PkiID) { return common.MessageNoAction } diff --git a/protos/gossip/message.pb.go b/protos/gossip/message.pb.go index 33915bf7953..13f4f37889b 100644 --- a/protos/gossip/message.pb.go +++ b/protos/gossip/message.pb.go @@ -121,7 +121,7 @@ type GossipMessage struct { Channel []byte `protobuf:"bytes,2,opt,name=channel,proto3" json:"channel,omitempty"` // determines to which peers it is allowed // to forward the message - Tag GossipMessage_Tag `protobuf:"varint,3,opt,name=tag,enum=proto.GossipMessage_Tag" json:"tag,omitempty"` + Tag GossipMessage_Tag `protobuf:"varint,3,opt,name=tag,enum=gossip.GossipMessage_Tag" json:"tag,omitempty"` Signature []byte `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty"` // Types that are valid to be assigned to Content: // *GossipMessage_AliveMsg @@ -788,7 +788,7 @@ func (*PeerIdentity) Descriptor() ([]byte, []int) { return fileDescriptor0, []in type DataRequest struct { Nonce uint64 `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"` Digests []string `protobuf:"bytes,2,rep,name=digests" json:"digests,omitempty"` - MsgType PullMsgType `protobuf:"varint,3,opt,name=msgType,enum=proto.PullMsgType" json:"msgType,omitempty"` + MsgType PullMsgType `protobuf:"varint,3,opt,name=msgType,enum=gossip.PullMsgType" json:"msgType,omitempty"` } func (m *DataRequest) Reset() { *m = DataRequest{} } @@ -801,7 +801,7 @@ func (*DataRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int type GossipHello struct { Nonce uint64 `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"` Metadata []byte `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` - MsgType PullMsgType `protobuf:"varint,3,opt,name=msgType,enum=proto.PullMsgType" json:"msgType,omitempty"` + MsgType PullMsgType `protobuf:"varint,3,opt,name=msgType,enum=gossip.PullMsgType" json:"msgType,omitempty"` } func (m *GossipHello) Reset() { *m = GossipHello{} } @@ -814,7 +814,7 @@ func (*GossipHello) Descriptor() ([]byte, []int) { return fileDescriptor0, []int type DataUpdate struct { Nonce uint64 `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"` Data []*GossipMessage `protobuf:"bytes,2,rep,name=data" json:"data,omitempty"` - MsgType PullMsgType `protobuf:"varint,3,opt,name=msgType,enum=proto.PullMsgType" json:"msgType,omitempty"` + MsgType PullMsgType `protobuf:"varint,3,opt,name=msgType,enum=gossip.PullMsgType" json:"msgType,omitempty"` } func (m *DataUpdate) Reset() { *m = DataUpdate{} } @@ -834,7 +834,7 @@ func (m *DataUpdate) GetData() []*GossipMessage { type DataDigest struct { Nonce uint64 `protobuf:"varint,1,opt,name=nonce" json:"nonce,omitempty"` Digests []string `protobuf:"bytes,2,rep,name=digests" json:"digests,omitempty"` - MsgType PullMsgType `protobuf:"varint,3,opt,name=msgType,enum=proto.PullMsgType" json:"msgType,omitempty"` + MsgType PullMsgType `protobuf:"varint,3,opt,name=msgType,enum=gossip.PullMsgType" json:"msgType,omitempty"` } func (m *DataDigest) Reset() { *m = DataDigest{} } @@ -901,8 +901,9 @@ func (m *AliveMessage) GetTimestamp() *PeerTime { // Leadership Message is sent during leader election to inform // remote peers about intent of peer to proclaim itself as leader type LeadershipMessage struct { - Membership *Member `protobuf:"bytes,1,opt,name=membership" json:"membership,omitempty"` - Timestamp *PeerTime `protobuf:"bytes,2,opt,name=timestamp" json:"timestamp,omitempty"` + PkiID []byte `protobuf:"bytes,1,opt,name=pkiID,proto3" json:"pkiID,omitempty"` + Timestamp *PeerTime `protobuf:"bytes,2,opt,name=timestamp" json:"timestamp,omitempty"` + IsDeclaration bool `protobuf:"varint,3,opt,name=isDeclaration" json:"isDeclaration,omitempty"` } func (m *LeadershipMessage) Reset() { *m = LeadershipMessage{} } @@ -910,13 +911,6 @@ func (m *LeadershipMessage) String() string { return proto.CompactTex func (*LeadershipMessage) ProtoMessage() {} func (*LeadershipMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } -func (m *LeadershipMessage) GetMembership() *Member { - if m != nil { - return m.Membership - } - return nil -} - func (m *LeadershipMessage) GetTimestamp() *PeerTime { if m != nil { return m.Timestamp @@ -1031,29 +1025,29 @@ func (m *RemoteStateResponse) GetPayloads() []*Payload { } func init() { - proto.RegisterType((*GossipMessage)(nil), "proto.GossipMessage") - proto.RegisterType((*StateInfo)(nil), "proto.StateInfo") - proto.RegisterType((*StateInfoSnapshot)(nil), "proto.StateInfoSnapshot") - proto.RegisterType((*StateInfoPullRequest)(nil), "proto.StateInfoPullRequest") - proto.RegisterType((*ConnEstablish)(nil), "proto.ConnEstablish") - proto.RegisterType((*PeerIdentity)(nil), "proto.PeerIdentity") - proto.RegisterType((*DataRequest)(nil), "proto.DataRequest") - proto.RegisterType((*GossipHello)(nil), "proto.GossipHello") - proto.RegisterType((*DataUpdate)(nil), "proto.DataUpdate") - proto.RegisterType((*DataDigest)(nil), "proto.DataDigest") - proto.RegisterType((*DataMessage)(nil), "proto.DataMessage") - proto.RegisterType((*Payload)(nil), "proto.Payload") - proto.RegisterType((*AliveMessage)(nil), "proto.AliveMessage") - proto.RegisterType((*LeadershipMessage)(nil), "proto.LeadershipMessage") - proto.RegisterType((*PeerTime)(nil), "proto.PeerTime") - proto.RegisterType((*MembershipRequest)(nil), "proto.MembershipRequest") - proto.RegisterType((*MembershipResponse)(nil), "proto.MembershipResponse") - proto.RegisterType((*Member)(nil), "proto.Member") - proto.RegisterType((*Empty)(nil), "proto.Empty") - proto.RegisterType((*RemoteStateRequest)(nil), "proto.RemoteStateRequest") - proto.RegisterType((*RemoteStateResponse)(nil), "proto.RemoteStateResponse") - proto.RegisterEnum("proto.PullMsgType", PullMsgType_name, PullMsgType_value) - proto.RegisterEnum("proto.GossipMessage_Tag", GossipMessage_Tag_name, GossipMessage_Tag_value) + proto.RegisterType((*GossipMessage)(nil), "gossip.GossipMessage") + proto.RegisterType((*StateInfo)(nil), "gossip.StateInfo") + proto.RegisterType((*StateInfoSnapshot)(nil), "gossip.StateInfoSnapshot") + proto.RegisterType((*StateInfoPullRequest)(nil), "gossip.StateInfoPullRequest") + proto.RegisterType((*ConnEstablish)(nil), "gossip.ConnEstablish") + proto.RegisterType((*PeerIdentity)(nil), "gossip.PeerIdentity") + proto.RegisterType((*DataRequest)(nil), "gossip.DataRequest") + proto.RegisterType((*GossipHello)(nil), "gossip.GossipHello") + proto.RegisterType((*DataUpdate)(nil), "gossip.DataUpdate") + proto.RegisterType((*DataDigest)(nil), "gossip.DataDigest") + proto.RegisterType((*DataMessage)(nil), "gossip.DataMessage") + proto.RegisterType((*Payload)(nil), "gossip.Payload") + proto.RegisterType((*AliveMessage)(nil), "gossip.AliveMessage") + proto.RegisterType((*LeadershipMessage)(nil), "gossip.LeadershipMessage") + proto.RegisterType((*PeerTime)(nil), "gossip.PeerTime") + proto.RegisterType((*MembershipRequest)(nil), "gossip.MembershipRequest") + proto.RegisterType((*MembershipResponse)(nil), "gossip.MembershipResponse") + proto.RegisterType((*Member)(nil), "gossip.Member") + proto.RegisterType((*Empty)(nil), "gossip.Empty") + proto.RegisterType((*RemoteStateRequest)(nil), "gossip.RemoteStateRequest") + proto.RegisterType((*RemoteStateResponse)(nil), "gossip.RemoteStateResponse") + proto.RegisterEnum("gossip.PullMsgType", PullMsgType_name, PullMsgType_value) + proto.RegisterEnum("gossip.GossipMessage_Tag", GossipMessage_Tag_name, GossipMessage_Tag_value) } // Reference imports to suppress errors if they are not otherwise used. @@ -1082,7 +1076,7 @@ func NewGossipClient(cc *grpc.ClientConn) GossipClient { } func (c *gossipClient) GossipStream(ctx context.Context, opts ...grpc.CallOption) (Gossip_GossipStreamClient, error) { - stream, err := grpc.NewClientStream(ctx, &_Gossip_serviceDesc.Streams[0], c.cc, "/proto.Gossip/GossipStream", opts...) + stream, err := grpc.NewClientStream(ctx, &_Gossip_serviceDesc.Streams[0], c.cc, "/gossip.Gossip/GossipStream", opts...) if err != nil { return nil, err } @@ -1114,7 +1108,7 @@ func (x *gossipGossipStreamClient) Recv() (*GossipMessage, error) { func (c *gossipClient) Ping(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := grpc.Invoke(ctx, "/proto.Gossip/Ping", in, out, c.cc, opts...) + err := grpc.Invoke(ctx, "/gossip.Gossip/Ping", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -1170,7 +1164,7 @@ func _Gossip_Ping_Handler(srv interface{}, ctx context.Context, dec func(interfa } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/proto.Gossip/Ping", + FullMethod: "/gossip.Gossip/Ping", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GossipServer).Ping(ctx, req.(*Empty)) @@ -1179,7 +1173,7 @@ func _Gossip_Ping_Handler(srv interface{}, ctx context.Context, dec func(interfa } var _Gossip_serviceDesc = grpc.ServiceDesc{ - ServiceName: "proto.Gossip", + ServiceName: "gossip.Gossip", HandlerType: (*GossipServer)(nil), Methods: []grpc.MethodDesc{ { @@ -1201,79 +1195,80 @@ var _Gossip_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("gossip/message.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 1175 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x57, 0x51, 0x6f, 0xdb, 0x36, - 0x10, 0x96, 0x62, 0x3b, 0xb6, 0xce, 0x72, 0xe3, 0xb0, 0x59, 0xa1, 0x65, 0x1b, 0x60, 0x08, 0x7d, - 0x30, 0xb2, 0xc5, 0xe9, 0xdc, 0x87, 0x61, 0x2f, 0x6b, 0x93, 0xda, 0xab, 0x0d, 0xd4, 0x6e, 0xc0, - 0xb8, 0x03, 0xba, 0x97, 0x80, 0xb1, 0x18, 0x59, 0x8d, 0x44, 0x29, 0x26, 0xbd, 0x21, 0xfb, 0x05, - 0xfb, 0x01, 0xfb, 0xc1, 0x03, 0x49, 0x49, 0x96, 0x62, 0xa7, 0x43, 0x06, 0xf4, 0xc9, 0xba, 0xbb, - 0xef, 0x8e, 0xc7, 0xe3, 0xf1, 0x3b, 0x1a, 0x0e, 0xfc, 0x98, 0xf3, 0x20, 0x39, 0x89, 0x28, 0xe7, - 0xc4, 0xa7, 0xbd, 0x64, 0x19, 0x8b, 0x18, 0xd5, 0xd4, 0x8f, 0xfb, 0x8f, 0x05, 0xad, 0xb7, 0xca, - 0x3e, 0xd1, 0x66, 0x74, 0x00, 0x35, 0x16, 0xb3, 0x39, 0x75, 0xcc, 0x8e, 0xd9, 0xad, 0x62, 0x2d, - 0x20, 0x07, 0xea, 0xf3, 0x05, 0x61, 0x8c, 0x86, 0xce, 0x4e, 0xc7, 0xec, 0xda, 0x38, 0x13, 0xd1, - 0x11, 0x54, 0x04, 0xf1, 0x9d, 0x4a, 0xc7, 0xec, 0x3e, 0xe9, 0x3b, 0x3a, 0x7a, 0xaf, 0x14, 0xb2, - 0x37, 0x23, 0x3e, 0x96, 0x20, 0xf4, 0x2d, 0x58, 0x3c, 0xf0, 0x19, 0x11, 0xab, 0x25, 0x75, 0xaa, - 0x2a, 0xce, 0x5a, 0x81, 0x7e, 0x84, 0x06, 0x09, 0x83, 0x3f, 0xe8, 0x84, 0xfb, 0x4e, 0xad, 0x63, - 0x76, 0x9b, 0xfd, 0xa7, 0x69, 0xb8, 0x53, 0xa5, 0xd6, 0xd1, 0x46, 0x06, 0xce, 0x61, 0xa8, 0x0f, - 0xbb, 0x11, 0x8d, 0x30, 0xbd, 0x75, 0x76, 0x95, 0x43, 0xb6, 0xfe, 0x84, 0x46, 0x57, 0x74, 0xc9, - 0x17, 0x41, 0x82, 0xe9, 0xed, 0x8a, 0x72, 0x31, 0x32, 0x70, 0x8a, 0x44, 0x2f, 0x53, 0x1f, 0xee, - 0xd4, 0x95, 0xcf, 0xd7, 0x5b, 0x7c, 0x78, 0x12, 0x33, 0x4e, 0x73, 0x27, 0x8e, 0x7a, 0x50, 0xf7, - 0x88, 0x20, 0x32, 0xb5, 0x86, 0xf2, 0x42, 0xa9, 0xd7, 0x40, 0x6a, 0xf3, 0xcc, 0x32, 0x10, 0x3a, - 0x82, 0xda, 0x82, 0x86, 0x61, 0xec, 0x58, 0x25, 0xb4, 0xae, 0xcb, 0x48, 0x5a, 0x46, 0x06, 0xd6, - 0x10, 0x74, 0xac, 0x63, 0x0f, 0x02, 0xdf, 0x01, 0x85, 0xde, 0x2f, 0xc4, 0x1e, 0x04, 0xbe, 0x4e, - 0x3f, 0xc3, 0x64, 0xa9, 0xc8, 0x4d, 0x37, 0x37, 0x52, 0x59, 0x6f, 0x37, 0x03, 0xa1, 0x97, 0x00, - 0xf2, 0xf3, 0x43, 0xe2, 0x11, 0x41, 0x1d, 0x7b, 0x63, 0x05, 0x6d, 0x18, 0x19, 0xb8, 0x00, 0x43, - 0xcf, 0xa1, 0x46, 0xa3, 0x44, 0xdc, 0x39, 0x2d, 0x85, 0xb7, 0x53, 0xfc, 0x50, 0xea, 0x64, 0xe6, - 0xca, 0x88, 0x8e, 0xa0, 0x3a, 0x8f, 0x19, 0x73, 0x9e, 0x28, 0xd0, 0x41, 0x0a, 0x7a, 0x13, 0x33, - 0x36, 0xe4, 0x82, 0x5c, 0x85, 0x01, 0x5f, 0x8c, 0x0c, 0xac, 0x30, 0xe8, 0x05, 0x58, 0x5c, 0x10, - 0x41, 0xc7, 0xec, 0x3a, 0x76, 0xf6, 0x94, 0x43, 0x3b, 0x75, 0xb8, 0xc8, 0xf4, 0x23, 0x03, 0xaf, - 0x41, 0xe8, 0x35, 0xb4, 0x94, 0x70, 0xc1, 0x48, 0xc2, 0x17, 0xb1, 0x70, 0xda, 0xa5, 0x33, 0xce, - 0xbd, 0x32, 0xfb, 0xc8, 0xc0, 0x65, 0x07, 0x34, 0x86, 0x76, 0x1e, 0xee, 0x7c, 0x15, 0x86, 0xb2, - 0x66, 0xfb, 0x2a, 0xc8, 0x37, 0xf7, 0x83, 0xa4, 0xe6, 0xb4, 0x78, 0x1b, 0x6e, 0xe8, 0x15, 0xd8, - 0x4a, 0x97, 0x62, 0x1c, 0x54, 0xea, 0x1d, 0x4c, 0xa3, 0x58, 0xd0, 0x8b, 0x02, 0x60, 0x64, 0xe0, - 0x92, 0x03, 0x3a, 0x4b, 0x77, 0x93, 0x35, 0x97, 0xf3, 0x54, 0x45, 0x38, 0xdc, 0x16, 0x21, 0x6f, - 0xbf, 0xb2, 0x8b, 0xac, 0x48, 0x48, 0x89, 0xa7, 0xbb, 0x54, 0xf6, 0xe2, 0x41, 0xa9, 0x22, 0xef, - 0xd6, 0xb6, 0xbc, 0x23, 0xcb, 0x0e, 0xe8, 0x67, 0xb0, 0x13, 0x4a, 0x97, 0x63, 0x8f, 0x32, 0x11, - 0x88, 0x3b, 0xe7, 0xab, 0xd2, 0x3d, 0x3b, 0x2f, 0x98, 0xe4, 0x06, 0x8a, 0x50, 0xf7, 0x12, 0x2a, - 0x33, 0xe2, 0xa3, 0x16, 0x58, 0x1f, 0xa6, 0x83, 0xe1, 0xaf, 0xe3, 0xe9, 0x70, 0xd0, 0x36, 0x90, - 0x05, 0xb5, 0xe1, 0xe4, 0x7c, 0xf6, 0xb1, 0x6d, 0x22, 0x1b, 0x1a, 0xef, 0xf1, 0xdb, 0xcb, 0xf7, - 0xd3, 0x77, 0x1f, 0xdb, 0x3b, 0x12, 0xf7, 0x66, 0x74, 0x3a, 0xd5, 0x62, 0x05, 0xb5, 0xc1, 0x56, - 0xe2, 0xe9, 0x74, 0x70, 0xf9, 0x1e, 0xbf, 0x6d, 0x57, 0xd1, 0x1e, 0x34, 0x35, 0x00, 0x2b, 0x45, - 0xed, 0xcc, 0x82, 0xfa, 0x3c, 0x66, 0x82, 0x32, 0xe1, 0x86, 0x60, 0xe5, 0x27, 0x83, 0x0e, 0xa1, - 0x11, 0x51, 0x41, 0x64, 0x77, 0x2a, 0x52, 0xb2, 0x71, 0x2e, 0xa3, 0x63, 0xb0, 0x44, 0x10, 0x51, - 0x2e, 0x48, 0x94, 0x28, 0x66, 0x6a, 0xf6, 0xf7, 0x0a, 0x9b, 0x99, 0x05, 0x11, 0xc5, 0x6b, 0x84, - 0x24, 0xb7, 0xe4, 0x26, 0x18, 0x0f, 0x14, 0x5d, 0xd9, 0x58, 0x0b, 0xee, 0x10, 0xf6, 0x37, 0x9a, - 0x09, 0xbd, 0x80, 0x06, 0x0d, 0x69, 0x44, 0x99, 0xe0, 0x8e, 0xd9, 0xa9, 0x14, 0xfa, 0xbb, 0x44, - 0x6e, 0x38, 0x47, 0xb9, 0xcf, 0xe0, 0x60, 0x5b, 0x3b, 0xb9, 0x13, 0x68, 0x95, 0xae, 0xc4, 0x3a, - 0x0b, 0xb3, 0x90, 0x05, 0x42, 0x50, 0x9d, 0xd3, 0xa5, 0x48, 0xf9, 0x55, 0x7d, 0x4b, 0xdd, 0x82, - 0xf0, 0x45, 0x9a, 0xae, 0xfa, 0x76, 0x67, 0x60, 0x17, 0xcf, 0xe9, 0x11, 0xd1, 0x8a, 0x85, 0xac, - 0x94, 0x0b, 0xe9, 0xde, 0x40, 0xb3, 0xc0, 0x1f, 0x0f, 0x4f, 0x01, 0x4f, 0xf1, 0x11, 0x77, 0x76, - 0x3a, 0x95, 0xae, 0x85, 0x33, 0x11, 0xfd, 0x00, 0xf5, 0x88, 0xfb, 0xb3, 0xbb, 0x84, 0xa6, 0x93, - 0x20, 0x23, 0x25, 0x59, 0x88, 0x89, 0xb6, 0xe0, 0x0c, 0xe2, 0x46, 0xd0, 0x2c, 0x30, 0xe1, 0x03, - 0x8b, 0x15, 0xb3, 0xdd, 0xb9, 0x77, 0xec, 0x8f, 0x5b, 0xee, 0x2f, 0x80, 0x35, 0xd1, 0x3d, 0xb0, - 0x5a, 0x17, 0xaa, 0xe9, 0x4a, 0x0f, 0x1f, 0x75, 0xf5, 0x7f, 0xac, 0xfd, 0x49, 0xaf, 0xad, 0x69, - 0xfc, 0x0b, 0x97, 0xf5, 0x27, 0x7d, 0x86, 0xd9, 0x24, 0xef, 0x42, 0x3d, 0x21, 0x77, 0x61, 0x4c, - 0x3c, 0xb5, 0x5c, 0xb3, 0xff, 0x24, 0x73, 0xd6, 0x5a, 0x9c, 0x99, 0xdd, 0x31, 0xd4, 0x53, 0x1d, - 0x7a, 0x06, 0xbb, 0x9c, 0xde, 0x4e, 0x57, 0x51, 0x9a, 0x62, 0x2a, 0xe5, 0x9d, 0x28, 0x4f, 0xc2, - 0xd2, 0x9d, 0x28, 0x75, 0x85, 0x5e, 0x52, 0xdf, 0xee, 0xdf, 0x26, 0xd8, 0xc5, 0x71, 0x8d, 0x8e, - 0x01, 0xa2, 0x7c, 0xb2, 0xa6, 0x89, 0xb4, 0x4a, 0x23, 0x17, 0x17, 0x00, 0x8f, 0xbd, 0xd0, 0x87, - 0xd0, 0x08, 0x32, 0x2e, 0xd3, 0x0f, 0x8a, 0x5c, 0x76, 0x6f, 0x61, 0x7f, 0x83, 0x11, 0xbf, 0x6c, - 0x3a, 0xee, 0x29, 0x34, 0x32, 0x35, 0xfa, 0x0e, 0x20, 0x60, 0xf3, 0x4b, 0xb6, 0x92, 0xc1, 0xd2, - 0x6a, 0x5a, 0x01, 0x9b, 0x4f, 0x95, 0xa2, 0x50, 0xe8, 0x9d, 0x62, 0xa1, 0xdd, 0x00, 0xf6, 0x37, - 0x5e, 0x2f, 0xe8, 0x17, 0xd8, 0xe3, 0x34, 0xbc, 0x96, 0xcc, 0xb2, 0x8c, 0x88, 0x08, 0x62, 0x96, - 0xa6, 0xbe, 0xbd, 0x51, 0xef, 0x83, 0x65, 0xdf, 0xdd, 0xb0, 0xf8, 0x4f, 0xa6, 0xfa, 0xcb, 0xc6, - 0x5a, 0x70, 0x3f, 0x01, 0xda, 0x7c, 0xf4, 0xc8, 0xa7, 0x8b, 0x7a, 0x5f, 0x7d, 0x96, 0xf5, 0x34, - 0x44, 0xdd, 0x1a, 0x4a, 0xbc, 0xff, 0xb8, 0x35, 0x94, 0x78, 0xee, 0x6f, 0xb0, 0xab, 0xd7, 0x92, - 0x47, 0x46, 0x99, 0x97, 0xc4, 0x01, 0x13, 0x6a, 0x13, 0x16, 0xce, 0xe5, 0xcf, 0xde, 0xf9, 0xed, - 0xdc, 0x5d, 0x87, 0x9a, 0x7a, 0x94, 0xb8, 0x3d, 0x40, 0x9b, 0x53, 0x58, 0x5e, 0x2d, 0x5d, 0x57, - 0x4d, 0xe2, 0x55, 0x9c, 0x89, 0xee, 0x29, 0x3c, 0xdd, 0x32, 0x73, 0xd1, 0x11, 0x34, 0xd2, 0x5b, - 0x91, 0xd1, 0xfe, 0xfd, 0x5b, 0x93, 0xdb, 0x8f, 0x5e, 0x41, 0xb3, 0x70, 0x0f, 0xd5, 0x64, 0x64, - 0x1e, 0xbd, 0x0e, 0x18, 0xf5, 0xda, 0x86, 0x9c, 0x78, 0x67, 0x61, 0x3c, 0xbf, 0x49, 0xeb, 0xd0, - 0x36, 0xe5, 0xc4, 0xcb, 0x58, 0x7b, 0xc2, 0xfd, 0xf6, 0x4e, 0x3f, 0x81, 0x5d, 0x5d, 0x2b, 0xf4, - 0x1a, 0x6c, 0xfd, 0x75, 0x21, 0x96, 0x94, 0x44, 0x68, 0x6b, 0x29, 0x0f, 0xb7, 0x6a, 0x5d, 0xa3, - 0x6b, 0xbe, 0x30, 0xd1, 0x73, 0xa8, 0x9e, 0x07, 0xcc, 0x47, 0xa5, 0xa7, 0xda, 0x61, 0x49, 0x72, - 0x8d, 0xb3, 0xe3, 0xdf, 0xbf, 0xf7, 0x03, 0xb1, 0x58, 0x5d, 0xf5, 0xe6, 0x71, 0x74, 0xb2, 0xb8, - 0x4b, 0xe8, 0x32, 0xa4, 0x9e, 0x4f, 0x97, 0x27, 0xd7, 0xe4, 0x6a, 0x19, 0xcc, 0x4f, 0x14, 0x9c, - 0x9f, 0xe8, 0xff, 0x0c, 0x57, 0xbb, 0x4a, 0x7c, 0xf9, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa4, - 0xf3, 0xe6, 0xff, 0x44, 0x0c, 0x00, 0x00, + // 1198 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x57, 0x5d, 0x6f, 0xdb, 0x36, + 0x17, 0x96, 0xe2, 0x4f, 0x1d, 0xcb, 0x8d, 0xc3, 0xa6, 0x85, 0xde, 0xbc, 0x1d, 0x60, 0x08, 0xdb, + 0xe0, 0x2e, 0xa8, 0xbd, 0xba, 0xbd, 0x18, 0x76, 0xd3, 0x25, 0x75, 0x5a, 0x67, 0xa8, 0xdd, 0x80, + 0x71, 0x07, 0x74, 0x37, 0x01, 0x63, 0x31, 0xb2, 0x16, 0x89, 0x52, 0x4d, 0x7a, 0x43, 0x80, 0x01, + 0xbb, 0xdf, 0x0f, 0xd9, 0xef, 0x1c, 0x48, 0x4a, 0xb2, 0x54, 0x3b, 0x19, 0x32, 0x60, 0x77, 0x3a, + 0x87, 0xcf, 0xf9, 0xe0, 0xe1, 0xe1, 0x73, 0x28, 0xd8, 0xf7, 0x63, 0xce, 0x83, 0x64, 0x10, 0x51, + 0xce, 0x89, 0x4f, 0xfb, 0xc9, 0x32, 0x16, 0x31, 0xaa, 0x6b, 0xad, 0xfb, 0x97, 0x05, 0xed, 0xb7, + 0xea, 0x73, 0xa2, 0xd7, 0xd1, 0x3e, 0xd4, 0x58, 0xcc, 0xe6, 0xd4, 0x31, 0xbb, 0x66, 0xaf, 0x8a, + 0xb5, 0x80, 0x1c, 0x68, 0xcc, 0x17, 0x84, 0x31, 0x1a, 0x3a, 0x3b, 0x5d, 0xb3, 0x67, 0xe3, 0x4c, + 0x44, 0x87, 0x50, 0x11, 0xc4, 0x77, 0x2a, 0x5d, 0xb3, 0xf7, 0x60, 0xf8, 0xbf, 0xbe, 0xf6, 0xdb, + 0x2f, 0xf9, 0xec, 0xcf, 0x88, 0x8f, 0x25, 0x0a, 0x3d, 0x01, 0x8b, 0x07, 0x3e, 0x23, 0x62, 0xb5, + 0xa4, 0x4e, 0x55, 0x39, 0x5a, 0x2b, 0xd0, 0x10, 0x9a, 0x24, 0x0c, 0x7e, 0xa5, 0x13, 0xee, 0x3b, + 0xb5, 0xae, 0xd9, 0x6b, 0x0d, 0xf7, 0x33, 0x7f, 0x47, 0x4a, 0xaf, 0xdd, 0x8d, 0x0d, 0x9c, 0xe3, + 0xd0, 0x0b, 0xa8, 0x47, 0x34, 0xc2, 0xf4, 0x93, 0x53, 0x57, 0x16, 0x79, 0x06, 0x13, 0x1a, 0x5d, + 0xd2, 0x25, 0x5f, 0x04, 0x09, 0xa6, 0x9f, 0x56, 0x94, 0x8b, 0xb1, 0x81, 0x53, 0x28, 0x7a, 0x99, + 0x1a, 0x71, 0xa7, 0xa1, 0x8c, 0x0e, 0xb6, 0x19, 0xf1, 0x24, 0x66, 0x9c, 0xe6, 0x56, 0x1c, 0x0d, + 0xa0, 0xe1, 0x11, 0x41, 0x64, 0x76, 0x4d, 0x65, 0xf6, 0x30, 0x33, 0x1b, 0x49, 0x75, 0x9e, 0x5c, + 0x86, 0x42, 0x87, 0x50, 0x5b, 0xd0, 0x30, 0x8c, 0x1d, 0xab, 0x0c, 0xd7, 0xc5, 0x19, 0xcb, 0xa5, + 0xb1, 0x81, 0x35, 0x06, 0xf5, 0xb5, 0xf7, 0x51, 0xe0, 0x3b, 0xa0, 0xe0, 0xa8, 0xe8, 0x7d, 0x14, + 0xf8, 0x7a, 0x0b, 0x19, 0x28, 0xcb, 0x46, 0xee, 0xbc, 0xb5, 0x99, 0xcd, 0x7a, 0xcf, 0x19, 0x0a, + 0xbd, 0x04, 0x90, 0x9f, 0x1f, 0x12, 0x8f, 0x08, 0xea, 0xd8, 0x9b, 0x31, 0xf4, 0xca, 0xd8, 0xc0, + 0x05, 0x1c, 0xfa, 0x0a, 0x6a, 0x34, 0x4a, 0xc4, 0x8d, 0xd3, 0x56, 0x06, 0xed, 0xcc, 0xe0, 0x44, + 0x2a, 0x65, 0xf6, 0x6a, 0x15, 0x1d, 0x42, 0x75, 0x1e, 0x33, 0xe6, 0x3c, 0x50, 0xa8, 0x47, 0x19, + 0xea, 0x75, 0xcc, 0xd8, 0x09, 0x17, 0xe4, 0x32, 0x0c, 0xf8, 0x62, 0x6c, 0x60, 0x05, 0x42, 0xcf, + 0xc1, 0xe2, 0x82, 0x08, 0x7a, 0xca, 0xae, 0x62, 0x67, 0x57, 0x59, 0xec, 0x65, 0x16, 0xe7, 0xd9, + 0xc2, 0xd8, 0xc0, 0x6b, 0x14, 0x3a, 0x82, 0xb6, 0x12, 0xce, 0x19, 0x49, 0xf8, 0x22, 0x16, 0x4e, + 0xa7, 0x7c, 0xda, 0xb9, 0x59, 0x06, 0x18, 0x1b, 0xb8, 0x6c, 0x81, 0x7e, 0x84, 0x4e, 0xee, 0xef, + 0x6c, 0x15, 0x86, 0xb2, 0x72, 0x7b, 0xca, 0xcb, 0x93, 0x0d, 0x2f, 0xe9, 0x7a, 0x5a, 0xc2, 0x0d, + 0x3b, 0xf4, 0x03, 0xd8, 0x4a, 0x97, 0x62, 0x1c, 0x54, 0x6e, 0x23, 0x4c, 0xa3, 0x58, 0xd0, 0xf3, + 0x02, 0x62, 0x6c, 0xe0, 0x92, 0x05, 0x7a, 0x9d, 0x6e, 0x28, 0xeb, 0x33, 0xe7, 0xa1, 0x72, 0xf1, + 0xff, 0xad, 0x2e, 0xf2, 0x56, 0x2c, 0xdb, 0xc8, 0xaa, 0x84, 0x94, 0x78, 0xba, 0x63, 0x65, 0x5f, + 0xee, 0x97, 0xab, 0xf2, 0x6e, 0xbd, 0x98, 0x77, 0x67, 0xd9, 0x02, 0x7d, 0x0f, 0x76, 0x42, 0xe9, + 0xf2, 0xd4, 0xa3, 0x4c, 0x04, 0xe2, 0xc6, 0x79, 0x54, 0xbe, 0x77, 0x67, 0x85, 0x35, 0xb9, 0x87, + 0x22, 0xd6, 0xbd, 0x80, 0xca, 0x8c, 0xf8, 0xa8, 0x0d, 0xd6, 0x87, 0xe9, 0xe8, 0xe4, 0xcd, 0xe9, + 0xf4, 0x64, 0xd4, 0x31, 0x90, 0x05, 0xb5, 0x93, 0xc9, 0xd9, 0xec, 0x63, 0xc7, 0x44, 0x36, 0x34, + 0xdf, 0xe3, 0xb7, 0x17, 0xef, 0xa7, 0xef, 0x3e, 0x76, 0x76, 0x24, 0xee, 0xf5, 0xf8, 0x68, 0xaa, + 0xc5, 0x0a, 0xea, 0x80, 0xad, 0xc4, 0xa3, 0xe9, 0xe8, 0xe2, 0x3d, 0x7e, 0xdb, 0xa9, 0xa2, 0x5d, + 0x68, 0x69, 0x00, 0x56, 0x8a, 0xda, 0xb1, 0x05, 0x8d, 0x79, 0xcc, 0x04, 0x65, 0xc2, 0x8d, 0xc0, + 0xca, 0x4f, 0x07, 0x1d, 0x40, 0x33, 0xa2, 0x82, 0xc8, 0x36, 0x55, 0x34, 0x65, 0xe3, 0x5c, 0x46, + 0x7d, 0xb0, 0x44, 0x10, 0x51, 0x2e, 0x48, 0x94, 0x28, 0xae, 0x6a, 0x0d, 0x3b, 0xc5, 0xdd, 0xcc, + 0x82, 0x88, 0xe2, 0x35, 0x44, 0xf2, 0x5d, 0x72, 0x1d, 0x9c, 0x8e, 0x14, 0x83, 0xd9, 0x58, 0x0b, + 0xee, 0x1b, 0xd8, 0xdb, 0x68, 0x29, 0xf4, 0x1c, 0x9a, 0x34, 0xa4, 0x11, 0x65, 0x82, 0x3b, 0x66, + 0xb7, 0x52, 0x6c, 0xf4, 0x12, 0xdf, 0xe1, 0x1c, 0xe6, 0x3e, 0x86, 0xfd, 0x6d, 0x4d, 0xe5, 0x4e, + 0xa0, 0x5d, 0xba, 0x1b, 0xeb, 0x34, 0xcc, 0x42, 0x1a, 0x08, 0x41, 0x75, 0x4e, 0x97, 0x22, 0xe5, + 0x5c, 0xf5, 0x2d, 0x75, 0x0b, 0xc2, 0x17, 0x69, 0xbe, 0xea, 0xdb, 0x9d, 0x81, 0x5d, 0x3c, 0xa9, + 0x7b, 0x78, 0x2b, 0x96, 0xb2, 0x52, 0x2e, 0xa5, 0x1b, 0x42, 0xab, 0xc0, 0x25, 0xb7, 0x4f, 0x06, + 0x4f, 0x91, 0x13, 0x77, 0x76, 0xba, 0x95, 0x9e, 0x85, 0x33, 0x11, 0x3d, 0x83, 0x46, 0xc4, 0xfd, + 0xd9, 0x4d, 0x42, 0xd3, 0xe9, 0x90, 0x33, 0x94, 0xac, 0xc4, 0x44, 0x2f, 0xe1, 0x0c, 0xe3, 0x32, + 0x68, 0x15, 0x88, 0xf1, 0x96, 0x68, 0xc5, 0x74, 0x77, 0x3e, 0x3b, 0xf9, 0x7b, 0xc6, 0xfb, 0x1d, + 0x60, 0xcd, 0x7a, 0xb7, 0x84, 0x7b, 0x0a, 0xd5, 0x34, 0xd4, 0x1d, 0xa7, 0x5d, 0xfd, 0x37, 0xd1, + 0xaf, 0x75, 0x74, 0xcd, 0xeb, 0xff, 0x75, 0x69, 0xbf, 0xd3, 0x07, 0x99, 0x8d, 0xf8, 0xa7, 0xd0, + 0x48, 0xc8, 0x4d, 0x18, 0x13, 0x4f, 0xc5, 0x6b, 0x0d, 0x77, 0x73, 0x6b, 0xad, 0xc6, 0xd9, 0xba, + 0x7b, 0x0a, 0x8d, 0x54, 0x87, 0x1e, 0x43, 0x9d, 0xd3, 0x4f, 0xd3, 0x55, 0x94, 0x26, 0x99, 0x4a, + 0x79, 0x3f, 0xca, 0xe3, 0xb0, 0x74, 0x3f, 0x4a, 0x5d, 0xa1, 0xa3, 0xd4, 0xb7, 0xfb, 0xa7, 0x09, + 0x76, 0x71, 0x8c, 0xa3, 0x3e, 0x40, 0x94, 0xcf, 0xdb, 0x34, 0x93, 0x07, 0xe5, 0x49, 0x8c, 0x0b, + 0x88, 0x7b, 0xdf, 0xec, 0x03, 0x68, 0x06, 0x19, 0xad, 0xe9, 0xb7, 0x46, 0x2e, 0xbb, 0x7f, 0xc0, + 0xde, 0x06, 0x39, 0xde, 0x72, 0x6b, 0xee, 0x1b, 0xf6, 0x4b, 0x68, 0x07, 0x7c, 0x44, 0xe7, 0x21, + 0x59, 0x12, 0x11, 0xc4, 0x4c, 0x15, 0xa1, 0x89, 0xcb, 0x4a, 0xf7, 0x08, 0x9a, 0x99, 0x31, 0xfa, + 0x02, 0x20, 0x60, 0xf3, 0x0b, 0xb6, 0x92, 0x5b, 0x4d, 0xab, 0x6b, 0x05, 0x6c, 0x3e, 0x55, 0x8a, + 0x42, 0xe1, 0x77, 0x8a, 0x85, 0x77, 0x7f, 0x81, 0xbd, 0x8d, 0x47, 0x0e, 0x7a, 0x05, 0xbb, 0x9c, + 0x86, 0x57, 0x92, 0x6f, 0x96, 0x91, 0x8e, 0x6f, 0x96, 0x67, 0x72, 0xb9, 0x79, 0x3f, 0x47, 0xcb, + 0x22, 0x5c, 0xb3, 0xf8, 0x37, 0xa6, 0x5a, 0xce, 0xc6, 0x5a, 0x70, 0x43, 0x40, 0x9b, 0x6f, 0x23, + 0xf9, 0xc0, 0x51, 0x0f, 0xb1, 0xbb, 0xd9, 0x50, 0x63, 0xd4, 0x5d, 0xa2, 0xc4, 0xfb, 0xa7, 0xbb, + 0x44, 0x89, 0xe7, 0xfe, 0x04, 0x75, 0x1d, 0x4d, 0x9e, 0x21, 0x65, 0x5e, 0x12, 0x07, 0x4c, 0xa8, + 0x7d, 0x58, 0x38, 0x97, 0xef, 0xe4, 0x82, 0xed, 0xac, 0xde, 0x80, 0x9a, 0x7a, 0xb7, 0xb8, 0x7d, + 0x40, 0x9b, 0x33, 0x5a, 0xde, 0x37, 0x5d, 0x5a, 0x4d, 0xef, 0x55, 0x9c, 0x89, 0xee, 0x31, 0x3c, + 0xdc, 0x32, 0x90, 0xd1, 0x21, 0x34, 0xd3, 0x8b, 0x92, 0x0d, 0x84, 0x8d, 0x9b, 0x94, 0x03, 0xbe, + 0x79, 0x05, 0xad, 0xc2, 0xe5, 0x54, 0x53, 0x93, 0x79, 0xf4, 0x2a, 0x60, 0xd4, 0xeb, 0x18, 0x72, + 0x1a, 0x1e, 0x87, 0xf1, 0xfc, 0x3a, 0x2d, 0x44, 0xc7, 0x94, 0xd3, 0x30, 0xe3, 0xf3, 0x09, 0xf7, + 0x3b, 0x3b, 0x43, 0x01, 0x75, 0x5d, 0x2c, 0x74, 0x0c, 0xb6, 0xfe, 0x3a, 0x17, 0x4b, 0x4a, 0x22, + 0xb4, 0xbd, 0x98, 0x07, 0xdb, 0xd5, 0xae, 0xd1, 0x33, 0xbf, 0x35, 0xd1, 0xd7, 0x50, 0x3d, 0x0b, + 0x98, 0x8f, 0xca, 0x2f, 0xba, 0x83, 0xb2, 0xe8, 0x1a, 0xc7, 0xcf, 0x7e, 0x3e, 0xf4, 0x03, 0xb1, + 0x58, 0x5d, 0xf6, 0xe7, 0x71, 0x34, 0x58, 0xdc, 0x24, 0x74, 0x19, 0x52, 0xcf, 0xa7, 0xcb, 0xc1, + 0x15, 0xb9, 0x5c, 0x06, 0xf3, 0x81, 0xfa, 0xa1, 0xe0, 0x03, 0x6d, 0x76, 0x59, 0x57, 0xe2, 0x8b, + 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xd0, 0xdf, 0xd0, 0xd3, 0x77, 0x0c, 0x00, 0x00, } diff --git a/protos/gossip/message.proto b/protos/gossip/message.proto index 4ede73fb722..6dbb3e96f4f 100644 --- a/protos/gossip/message.proto +++ b/protos/gossip/message.proto @@ -195,8 +195,9 @@ message AliveMessage { // Leadership Message is sent during leader election to inform // remote peers about intent of peer to proclaim itself as leader message LeadershipMessage { - Member membership = 1; + bytes pkiID = 1; PeerTime timestamp = 2; + bool isDeclaration = 3; } // PeerTime defines the logical time of a peer's life