diff --git a/etcdserver/etcdserverpb/etcdserver.pb.go b/etcdserver/etcdserverpb/etcdserver.pb.go index cf1c12f2d..dbc43eab2 100644 --- a/etcdserver/etcdserverpb/etcdserver.pb.go +++ b/etcdserver/etcdserverpb/etcdserver.pb.go @@ -35,7 +35,7 @@ type Request struct { Dir bool `protobuf:"varint,5,req" json:"Dir"` PrevValue string `protobuf:"bytes,6,req" json:"PrevValue"` PrevIndex uint64 `protobuf:"varint,7,req" json:"PrevIndex"` - PrevExist *bool `protobuf:"varint,8,req" json:"PrevExist,omitempty"` + PrevExist *bool `protobuf:"varint,8,opt" json:"PrevExist,omitempty"` Expiration int64 `protobuf:"varint,9,req" json:"Expiration"` Wait bool `protobuf:"varint,10,req" json:"Wait"` Since uint64 `protobuf:"varint,11,req" json:"Since"` @@ -64,16 +64,17 @@ func (*Metadata) ProtoMessage() {} func init() { } func (m *Request) Unmarshal(data []byte) error { + var hasFields [1]uint64 l := len(data) - index := 0 - for index < l { + iNdEx := 0 + for iNdEx < l { var wire uint64 for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ wire |= (uint64(b) & 0x7F) << shift if b < 0x80 { break @@ -87,147 +88,154 @@ func (m *Request) Unmarshal(data []byte) error { return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.ID |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000001) case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Method", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } - postIndex := index + int(stringLen) + postIndex := iNdEx + int(stringLen) if postIndex > l { return io.ErrUnexpectedEOF } - m.Method = string(data[index:postIndex]) - index = postIndex + m.Method = string(data[iNdEx:postIndex]) + iNdEx = postIndex + hasFields[0] |= uint64(0x00000002) case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } - postIndex := index + int(stringLen) + postIndex := iNdEx + int(stringLen) if postIndex > l { return io.ErrUnexpectedEOF } - m.Path = string(data[index:postIndex]) - index = postIndex + m.Path = string(data[iNdEx:postIndex]) + iNdEx = postIndex + hasFields[0] |= uint64(0x00000004) case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Val", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } - postIndex := index + int(stringLen) + postIndex := iNdEx + int(stringLen) if postIndex > l { return io.ErrUnexpectedEOF } - m.Val = string(data[index:postIndex]) - index = postIndex + m.Val = string(data[iNdEx:postIndex]) + iNdEx = postIndex + hasFields[0] |= uint64(0x00000008) case 5: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Dir", wireType) } var v int for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ v |= (int(b) & 0x7F) << shift if b < 0x80 { break } } m.Dir = bool(v != 0) + hasFields[0] |= uint64(0x00000010) case 6: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field PrevValue", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } - postIndex := index + int(stringLen) + postIndex := iNdEx + int(stringLen) if postIndex > l { return io.ErrUnexpectedEOF } - m.PrevValue = string(data[index:postIndex]) - index = postIndex + m.PrevValue = string(data[iNdEx:postIndex]) + iNdEx = postIndex + hasFields[0] |= uint64(0x00000020) case 7: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field PrevIndex", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.PrevIndex |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000040) case 8: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field PrevExist", wireType) } var v int for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ v |= (int(b) & 0x7F) << shift if b < 0x80 { break @@ -240,131 +248,139 @@ func (m *Request) Unmarshal(data []byte) error { return fmt.Errorf("proto: wrong wireType = %d for field Expiration", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.Expiration |= (int64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000080) case 10: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Wait", wireType) } var v int for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ v |= (int(b) & 0x7F) << shift if b < 0x80 { break } } m.Wait = bool(v != 0) + hasFields[0] |= uint64(0x00000100) case 11: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Since", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.Since |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000200) case 12: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Recursive", wireType) } var v int for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ v |= (int(b) & 0x7F) << shift if b < 0x80 { break } } m.Recursive = bool(v != 0) + hasFields[0] |= uint64(0x00000400) case 13: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Sorted", wireType) } var v int for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ v |= (int(b) & 0x7F) << shift if b < 0x80 { break } } m.Sorted = bool(v != 0) + hasFields[0] |= uint64(0x00000800) case 14: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Quorum", wireType) } var v int for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ v |= (int(b) & 0x7F) << shift if b < 0x80 { break } } m.Quorum = bool(v != 0) + hasFields[0] |= uint64(0x00001000) case 15: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Time", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.Time |= (int64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00002000) case 16: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Stream", wireType) } var v int for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ v |= (int(b) & 0x7F) << shift if b < 0x80 { break } } m.Stream = bool(v != 0) + hasFields[0] |= uint64(0x00004000) default: var sizeOfWire int for { @@ -374,31 +390,78 @@ func (m *Request) Unmarshal(data []byte) error { break } } - index -= sizeOfWire - skippy, err := github_com_gogo_protobuf_proto.Skip(data[index:]) + iNdEx -= sizeOfWire + skippy, err := skipEtcdserver(data[iNdEx:]) if err != nil { return err } - if (index + skippy) > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.XXX_unrecognized = append(m.XXX_unrecognized, data[index:index+skippy]...) - index += skippy + m.XXX_unrecognized = append(m.XXX_unrecognized, data[iNdEx:iNdEx+skippy]...) + iNdEx += skippy } } + if hasFields[0]&uint64(0x00000001) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("ID") + } + if hasFields[0]&uint64(0x00000002) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("Method") + } + if hasFields[0]&uint64(0x00000004) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("Path") + } + if hasFields[0]&uint64(0x00000008) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("Val") + } + if hasFields[0]&uint64(0x00000010) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("Dir") + } + if hasFields[0]&uint64(0x00000020) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("PrevValue") + } + if hasFields[0]&uint64(0x00000040) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("PrevIndex") + } + if hasFields[0]&uint64(0x00000080) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("Expiration") + } + if hasFields[0]&uint64(0x00000100) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("Wait") + } + if hasFields[0]&uint64(0x00000200) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("Since") + } + if hasFields[0]&uint64(0x00000400) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("Recursive") + } + if hasFields[0]&uint64(0x00000800) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("Sorted") + } + if hasFields[0]&uint64(0x00001000) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("Quorum") + } + if hasFields[0]&uint64(0x00002000) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("Time") + } + if hasFields[0]&uint64(0x00004000) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("Stream") + } + return nil } func (m *Metadata) Unmarshal(data []byte) error { + var hasFields [1]uint64 l := len(data) - index := 0 - for index < l { + iNdEx := 0 + for iNdEx < l { var wire uint64 for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ wire |= (uint64(b) & 0x7F) << shift if b < 0x80 { break @@ -412,31 +475,33 @@ func (m *Metadata) Unmarshal(data []byte) error { return fmt.Errorf("proto: wrong wireType = %d for field NodeID", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.NodeID |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000001) case 2: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field ClusterID", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.ClusterID |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000002) default: var sizeOfWire int for { @@ -446,20 +511,111 @@ func (m *Metadata) Unmarshal(data []byte) error { break } } - index -= sizeOfWire - skippy, err := github_com_gogo_protobuf_proto.Skip(data[index:]) + iNdEx -= sizeOfWire + skippy, err := skipEtcdserver(data[iNdEx:]) if err != nil { return err } - if (index + skippy) > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.XXX_unrecognized = append(m.XXX_unrecognized, data[index:index+skippy]...) - index += skippy + m.XXX_unrecognized = append(m.XXX_unrecognized, data[iNdEx:iNdEx+skippy]...) + iNdEx += skippy } } + if hasFields[0]&uint64(0x00000001) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("NodeID") + } + if hasFields[0]&uint64(0x00000002) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("ClusterID") + } + return nil } +func skipEtcdserver(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipEtcdserver(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} func (m *Request) Size() (n int) { var l int _ = l diff --git a/etcdserver/etcdserverpb/etcdserver.proto b/etcdserver/etcdserverpb/etcdserver.proto index 4fcd60165..1fe54796e 100644 --- a/etcdserver/etcdserverpb/etcdserver.proto +++ b/etcdserver/etcdserverpb/etcdserver.proto @@ -8,25 +8,25 @@ option (gogoproto.unmarshaler_all) = true; option (gogoproto.goproto_getters_all) = false; message Request { - required uint64 ID = 1 [(gogoproto.nullable) = false]; - required string Method = 2 [(gogoproto.nullable) = false]; - required string Path = 3 [(gogoproto.nullable) = false]; - required string Val = 4 [(gogoproto.nullable) = false]; - required bool Dir = 5 [(gogoproto.nullable) = false]; - required string PrevValue = 6 [(gogoproto.nullable) = false]; - required uint64 PrevIndex = 7 [(gogoproto.nullable) = false]; - required bool PrevExist = 8 [(gogoproto.nullable) = true]; - required int64 Expiration = 9 [(gogoproto.nullable) = false]; - required bool Wait = 10 [(gogoproto.nullable) = false]; - required uint64 Since = 11 [(gogoproto.nullable) = false]; - required bool Recursive = 12 [(gogoproto.nullable) = false]; - required bool Sorted = 13 [(gogoproto.nullable) = false]; - required bool Quorum = 14 [(gogoproto.nullable) = false]; - required int64 Time = 15 [(gogoproto.nullable) = false]; - required bool Stream = 16 [(gogoproto.nullable) = false]; + optional uint64 ID = 1 [(gogoproto.nullable) = false]; + optional string Method = 2 [(gogoproto.nullable) = false]; + optional string Path = 3 [(gogoproto.nullable) = false]; + optional string Val = 4 [(gogoproto.nullable) = false]; + optional bool Dir = 5 [(gogoproto.nullable) = false]; + optional string PrevValue = 6 [(gogoproto.nullable) = false]; + optional uint64 PrevIndex = 7 [(gogoproto.nullable) = false]; + optional bool PrevExist = 8 [(gogoproto.nullable) = true]; + optional int64 Expiration = 9 [(gogoproto.nullable) = false]; + optional bool Wait = 10 [(gogoproto.nullable) = false]; + optional uint64 Since = 11 [(gogoproto.nullable) = false]; + optional bool Recursive = 12 [(gogoproto.nullable) = false]; + optional bool Sorted = 13 [(gogoproto.nullable) = false]; + optional bool Quorum = 14 [(gogoproto.nullable) = false]; + optional int64 Time = 15 [(gogoproto.nullable) = false]; + optional bool Stream = 16 [(gogoproto.nullable) = false]; } message Metadata { - required uint64 NodeID = 1 [(gogoproto.nullable) = false]; - required uint64 ClusterID = 2 [(gogoproto.nullable) = false]; + optional uint64 NodeID = 1 [(gogoproto.nullable) = false]; + optional uint64 ClusterID = 2 [(gogoproto.nullable) = false]; } diff --git a/migrate/etcd4pb/log_entry.pb.go b/migrate/etcd4pb/log_entry.pb.go index 19a908b8a..784426cff 100644 --- a/migrate/etcd4pb/log_entry.pb.go +++ b/migrate/etcd4pb/log_entry.pb.go @@ -76,16 +76,17 @@ func (m *LogEntry) GetCommand() []byte { func init() { } func (m *LogEntry) Unmarshal(data []byte) error { + var hasFields [1]uint64 l := len(data) - index := 0 - for index < l { + iNdEx := 0 + for iNdEx < l { var wire uint64 for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ wire |= (uint64(b) & 0x7F) << shift if b < 0x80 { break @@ -100,79 +101,82 @@ func (m *LogEntry) Unmarshal(data []byte) error { } var v uint64 for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ v |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } m.Index = &v + hasFields[0] |= uint64(0x00000001) case 2: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Term", wireType) } var v uint64 for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ v |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } m.Term = &v + hasFields[0] |= uint64(0x00000002) case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field CommandName", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ stringLen |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } - postIndex := index + int(stringLen) + postIndex := iNdEx + int(stringLen) if postIndex > l { return io.ErrUnexpectedEOF } - s := string(data[index:postIndex]) + s := string(data[iNdEx:postIndex]) m.CommandName = &s - index = postIndex + iNdEx = postIndex + hasFields[0] |= uint64(0x00000004) case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Command", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ byteLen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - postIndex := index + byteLen + postIndex := iNdEx + byteLen if postIndex > l { return io.ErrUnexpectedEOF } - m.Command = append([]byte{}, data[index:postIndex]...) - index = postIndex + m.Command = append([]byte{}, data[iNdEx:postIndex]...) + iNdEx = postIndex default: var sizeOfWire int for { @@ -182,20 +186,114 @@ func (m *LogEntry) Unmarshal(data []byte) error { break } } - index -= sizeOfWire - skippy, err := github_com_gogo_protobuf_proto.Skip(data[index:]) + iNdEx -= sizeOfWire + skippy, err := skipLogEntry(data[iNdEx:]) if err != nil { return err } - if (index + skippy) > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.XXX_unrecognized = append(m.XXX_unrecognized, data[index:index+skippy]...) - index += skippy + m.XXX_unrecognized = append(m.XXX_unrecognized, data[iNdEx:iNdEx+skippy]...) + iNdEx += skippy } } + if hasFields[0]&uint64(0x00000001) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("Index") + } + if hasFields[0]&uint64(0x00000002) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("Term") + } + if hasFields[0]&uint64(0x00000004) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("CommandName") + } + return nil } +func skipLogEntry(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipLogEntry(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} func (this *LogEntry) String() string { if this == nil { return "nil" @@ -256,9 +354,9 @@ func sozLogEntry(x uint64) (n int) { } func NewPopulatedLogEntry(r randyLogEntry, easy bool) *LogEntry { this := &LogEntry{} - v1 := uint64(r.Uint32()) + v1 := uint64(uint64(r.Uint32())) this.Index = &v1 - v2 := uint64(r.Uint32()) + v2 := uint64(uint64(r.Uint32())) this.Term = &v2 v3 := randStringLogEntry(r) this.CommandName = &v3 @@ -285,7 +383,13 @@ type randyLogEntry interface { } func randUTF8RuneLogEntry(r randyLogEntry) rune { - return rune(r.Intn(126-43) + 43) + ru := r.Intn(62) + if ru < 10 { + return rune(ru + 48) + } else if ru < 36 { + return rune(ru + 55) + } + return rune(ru + 61) } func randStringLogEntry(r randyLogEntry) string { v5 := r.Intn(100) @@ -356,17 +460,23 @@ func (m *LogEntry) MarshalTo(data []byte) (n int, err error) { _ = i var l int _ = l - if m.Index != nil { + if m.Index == nil { + return 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError("Index") + } else { data[i] = 0x8 i++ i = encodeVarintLogEntry(data, i, uint64(*m.Index)) } - if m.Term != nil { + if m.Term == nil { + return 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError("Term") + } else { data[i] = 0x10 i++ i = encodeVarintLogEntry(data, i, uint64(*m.Term)) } - if m.CommandName != nil { + if m.CommandName == nil { + return 0, github_com_gogo_protobuf_proto.NewRequiredNotSetError("CommandName") + } else { data[i] = 0x1a i++ i = encodeVarintLogEntry(data, i, uint64(len(*m.CommandName))) diff --git a/raft/raftpb/raft.pb.go b/raft/raftpb/raft.pb.go index a958dacc6..404c84f54 100644 --- a/raft/raftpb/raft.pb.go +++ b/raft/raftpb/raft.pb.go @@ -254,16 +254,17 @@ func init() { proto.RegisterEnum("raftpb.ConfChangeType", ConfChangeType_name, ConfChangeType_value) } func (m *Entry) Unmarshal(data []byte) error { + var hasFields [1]uint64 l := len(data) - index := 0 - for index < l { + iNdEx := 0 + for iNdEx < l { var wire uint64 for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ wire |= (uint64(b) & 0x7F) << shift if b < 0x80 { break @@ -277,68 +278,71 @@ func (m *Entry) Unmarshal(data []byte) error { return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.Type |= (EntryType(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000001) case 2: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Term", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.Term |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000002) case 3: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Index", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.Index |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000004) case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ byteLen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - postIndex := index + byteLen + postIndex := iNdEx + byteLen if postIndex > l { return io.ErrUnexpectedEOF } - m.Data = append([]byte{}, data[index:postIndex]...) - index = postIndex + m.Data = append([]byte{}, data[iNdEx:postIndex]...) + iNdEx = postIndex default: var sizeOfWire int for { @@ -348,31 +352,42 @@ func (m *Entry) Unmarshal(data []byte) error { break } } - index -= sizeOfWire - skippy, err := github_com_gogo_protobuf_proto.Skip(data[index:]) + iNdEx -= sizeOfWire + skippy, err := skipRaft(data[iNdEx:]) if err != nil { return err } - if (index + skippy) > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.XXX_unrecognized = append(m.XXX_unrecognized, data[index:index+skippy]...) - index += skippy + m.XXX_unrecognized = append(m.XXX_unrecognized, data[iNdEx:iNdEx+skippy]...) + iNdEx += skippy } } + if hasFields[0]&uint64(0x00000001) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("Type") + } + if hasFields[0]&uint64(0x00000002) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("Term") + } + if hasFields[0]&uint64(0x00000004) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("Index") + } + return nil } func (m *SnapshotMetadata) Unmarshal(data []byte) error { + var hasFields [1]uint64 l := len(data) - index := 0 - for index < l { + iNdEx := 0 + for iNdEx < l { var wire uint64 for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ wire |= (uint64(b) & 0x7F) << shift if b < 0x80 { break @@ -387,54 +402,57 @@ func (m *SnapshotMetadata) Unmarshal(data []byte) error { } var msglen int for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - postIndex := index + msglen + postIndex := iNdEx + msglen if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ConfState.Unmarshal(data[index:postIndex]); err != nil { + if err := m.ConfState.Unmarshal(data[iNdEx:postIndex]); err != nil { return err } - index = postIndex + iNdEx = postIndex + hasFields[0] |= uint64(0x00000001) case 2: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Index", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.Index |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000002) case 3: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Term", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.Term |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000004) default: var sizeOfWire int for { @@ -444,31 +462,42 @@ func (m *SnapshotMetadata) Unmarshal(data []byte) error { break } } - index -= sizeOfWire - skippy, err := github_com_gogo_protobuf_proto.Skip(data[index:]) + iNdEx -= sizeOfWire + skippy, err := skipRaft(data[iNdEx:]) if err != nil { return err } - if (index + skippy) > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.XXX_unrecognized = append(m.XXX_unrecognized, data[index:index+skippy]...) - index += skippy + m.XXX_unrecognized = append(m.XXX_unrecognized, data[iNdEx:iNdEx+skippy]...) + iNdEx += skippy } } + if hasFields[0]&uint64(0x00000001) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("conf_state") + } + if hasFields[0]&uint64(0x00000002) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("index") + } + if hasFields[0]&uint64(0x00000004) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("term") + } + return nil } func (m *Snapshot) Unmarshal(data []byte) error { + var hasFields [1]uint64 l := len(data) - index := 0 - for index < l { + iNdEx := 0 + for iNdEx < l { var wire uint64 for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ wire |= (uint64(b) & 0x7F) << shift if b < 0x80 { break @@ -483,46 +512,47 @@ func (m *Snapshot) Unmarshal(data []byte) error { } var byteLen int for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ byteLen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - postIndex := index + byteLen + postIndex := iNdEx + byteLen if postIndex > l { return io.ErrUnexpectedEOF } - m.Data = append([]byte{}, data[index:postIndex]...) - index = postIndex + m.Data = append([]byte{}, data[iNdEx:postIndex]...) + iNdEx = postIndex case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) } var msglen int for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - postIndex := index + msglen + postIndex := iNdEx + msglen if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Metadata.Unmarshal(data[index:postIndex]); err != nil { + if err := m.Metadata.Unmarshal(data[iNdEx:postIndex]); err != nil { return err } - index = postIndex + iNdEx = postIndex + hasFields[0] |= uint64(0x00000001) default: var sizeOfWire int for { @@ -532,31 +562,36 @@ func (m *Snapshot) Unmarshal(data []byte) error { break } } - index -= sizeOfWire - skippy, err := github_com_gogo_protobuf_proto.Skip(data[index:]) + iNdEx -= sizeOfWire + skippy, err := skipRaft(data[iNdEx:]) if err != nil { return err } - if (index + skippy) > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.XXX_unrecognized = append(m.XXX_unrecognized, data[index:index+skippy]...) - index += skippy + m.XXX_unrecognized = append(m.XXX_unrecognized, data[iNdEx:iNdEx+skippy]...) + iNdEx += skippy } } + if hasFields[0]&uint64(0x00000001) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("metadata") + } + return nil } func (m *Message) Unmarshal(data []byte) error { + var hasFields [1]uint64 l := len(data) - index := 0 - for index < l { + iNdEx := 0 + for iNdEx < l { var wire uint64 for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ wire |= (uint64(b) & 0x7F) << shift if b < 0x80 { break @@ -570,185 +605,197 @@ func (m *Message) Unmarshal(data []byte) error { return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.Type |= (MessageType(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000001) case 2: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field To", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.To |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000002) case 3: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.From |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000004) case 4: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Term", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.Term |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000008) case 5: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field LogTerm", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.LogTerm |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000010) case 6: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Index", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.Index |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000020) case 7: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Entries", wireType) } var msglen int for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - postIndex := index + msglen + postIndex := iNdEx + msglen if postIndex > l { return io.ErrUnexpectedEOF } m.Entries = append(m.Entries, Entry{}) - m.Entries[len(m.Entries)-1].Unmarshal(data[index:postIndex]) - index = postIndex + if err := m.Entries[len(m.Entries)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex case 8: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Commit", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.Commit |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000040) case 9: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Snapshot", wireType) } var msglen int for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - postIndex := index + msglen + postIndex := iNdEx + msglen if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Snapshot.Unmarshal(data[index:postIndex]); err != nil { + if err := m.Snapshot.Unmarshal(data[iNdEx:postIndex]); err != nil { return err } - index = postIndex + iNdEx = postIndex + hasFields[0] |= uint64(0x00000080) case 10: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Reject", wireType) } var v int for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ v |= (int(b) & 0x7F) << shift if b < 0x80 { break } } m.Reject = bool(v != 0) + hasFields[0] |= uint64(0x00000100) case 11: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field RejectHint", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.RejectHint |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000200) default: var sizeOfWire int for { @@ -758,31 +805,63 @@ func (m *Message) Unmarshal(data []byte) error { break } } - index -= sizeOfWire - skippy, err := github_com_gogo_protobuf_proto.Skip(data[index:]) + iNdEx -= sizeOfWire + skippy, err := skipRaft(data[iNdEx:]) if err != nil { return err } - if (index + skippy) > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.XXX_unrecognized = append(m.XXX_unrecognized, data[index:index+skippy]...) - index += skippy + m.XXX_unrecognized = append(m.XXX_unrecognized, data[iNdEx:iNdEx+skippy]...) + iNdEx += skippy } } + if hasFields[0]&uint64(0x00000001) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("type") + } + if hasFields[0]&uint64(0x00000002) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("to") + } + if hasFields[0]&uint64(0x00000004) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("from") + } + if hasFields[0]&uint64(0x00000008) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("term") + } + if hasFields[0]&uint64(0x00000010) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("logTerm") + } + if hasFields[0]&uint64(0x00000020) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("index") + } + if hasFields[0]&uint64(0x00000040) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("commit") + } + if hasFields[0]&uint64(0x00000080) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("snapshot") + } + if hasFields[0]&uint64(0x00000100) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("reject") + } + if hasFields[0]&uint64(0x00000200) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("rejectHint") + } + return nil } func (m *HardState) Unmarshal(data []byte) error { + var hasFields [1]uint64 l := len(data) - index := 0 - for index < l { + iNdEx := 0 + for iNdEx < l { var wire uint64 for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ wire |= (uint64(b) & 0x7F) << shift if b < 0x80 { break @@ -796,46 +875,49 @@ func (m *HardState) Unmarshal(data []byte) error { return fmt.Errorf("proto: wrong wireType = %d for field Term", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.Term |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000001) case 2: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Vote", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.Vote |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000002) case 3: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Commit", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.Commit |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000004) default: var sizeOfWire int for { @@ -845,31 +927,41 @@ func (m *HardState) Unmarshal(data []byte) error { break } } - index -= sizeOfWire - skippy, err := github_com_gogo_protobuf_proto.Skip(data[index:]) + iNdEx -= sizeOfWire + skippy, err := skipRaft(data[iNdEx:]) if err != nil { return err } - if (index + skippy) > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.XXX_unrecognized = append(m.XXX_unrecognized, data[index:index+skippy]...) - index += skippy + m.XXX_unrecognized = append(m.XXX_unrecognized, data[iNdEx:iNdEx+skippy]...) + iNdEx += skippy } } + if hasFields[0]&uint64(0x00000001) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("term") + } + if hasFields[0]&uint64(0x00000002) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("vote") + } + if hasFields[0]&uint64(0x00000004) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("commit") + } + return nil } func (m *ConfState) Unmarshal(data []byte) error { l := len(data) - index := 0 - for index < l { + iNdEx := 0 + for iNdEx < l { var wire uint64 for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ wire |= (uint64(b) & 0x7F) << shift if b < 0x80 { break @@ -884,11 +976,11 @@ func (m *ConfState) Unmarshal(data []byte) error { } var v uint64 for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ v |= (uint64(b) & 0x7F) << shift if b < 0x80 { break @@ -904,31 +996,33 @@ func (m *ConfState) Unmarshal(data []byte) error { break } } - index -= sizeOfWire - skippy, err := github_com_gogo_protobuf_proto.Skip(data[index:]) + iNdEx -= sizeOfWire + skippy, err := skipRaft(data[iNdEx:]) if err != nil { return err } - if (index + skippy) > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.XXX_unrecognized = append(m.XXX_unrecognized, data[index:index+skippy]...) - index += skippy + m.XXX_unrecognized = append(m.XXX_unrecognized, data[iNdEx:iNdEx+skippy]...) + iNdEx += skippy } } + return nil } func (m *ConfChange) Unmarshal(data []byte) error { + var hasFields [1]uint64 l := len(data) - index := 0 - for index < l { + iNdEx := 0 + for iNdEx < l { var wire uint64 for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ wire |= (uint64(b) & 0x7F) << shift if b < 0x80 { break @@ -942,68 +1036,71 @@ func (m *ConfChange) Unmarshal(data []byte) error { return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.ID |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000001) case 2: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.Type |= (ConfChangeType(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000002) case 3: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field NodeID", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.NodeID |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000004) case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Context", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ byteLen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - postIndex := index + byteLen + postIndex := iNdEx + byteLen if postIndex > l { return io.ErrUnexpectedEOF } - m.Context = append([]byte{}, data[index:postIndex]...) - index = postIndex + m.Context = append([]byte{}, data[iNdEx:postIndex]...) + iNdEx = postIndex default: var sizeOfWire int for { @@ -1013,20 +1110,114 @@ func (m *ConfChange) Unmarshal(data []byte) error { break } } - index -= sizeOfWire - skippy, err := github_com_gogo_protobuf_proto.Skip(data[index:]) + iNdEx -= sizeOfWire + skippy, err := skipRaft(data[iNdEx:]) if err != nil { return err } - if (index + skippy) > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.XXX_unrecognized = append(m.XXX_unrecognized, data[index:index+skippy]...) - index += skippy + m.XXX_unrecognized = append(m.XXX_unrecognized, data[iNdEx:iNdEx+skippy]...) + iNdEx += skippy } } + if hasFields[0]&uint64(0x00000001) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("ID") + } + if hasFields[0]&uint64(0x00000002) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("Type") + } + if hasFields[0]&uint64(0x00000004) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("NodeID") + } + return nil } +func skipRaft(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipRaft(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} func (m *Entry) Size() (n int) { var l int _ = l diff --git a/raft/raftpb/raft.proto b/raft/raftpb/raft.proto index 376730e81..3af6ab4c1 100644 --- a/raft/raftpb/raft.proto +++ b/raft/raftpb/raft.proto @@ -14,16 +14,16 @@ enum EntryType { } message Entry { - required EntryType Type = 1 [(gogoproto.nullable) = false]; - required uint64 Term = 2 [(gogoproto.nullable) = false]; - required uint64 Index = 3 [(gogoproto.nullable) = false]; + optional EntryType Type = 1 [(gogoproto.nullable) = false]; + optional uint64 Term = 2 [(gogoproto.nullable) = false]; + optional uint64 Index = 3 [(gogoproto.nullable) = false]; optional bytes Data = 4 [(gogoproto.nullable) = false]; } message SnapshotMetadata { - required ConfState conf_state = 1 [(gogoproto.nullable) = false]; - required uint64 index = 2 [(gogoproto.nullable) = false]; - required uint64 term = 3 [(gogoproto.nullable) = false]; + optional ConfState conf_state = 1 [(gogoproto.nullable) = false]; + optional uint64 index = 2 [(gogoproto.nullable) = false]; + optional uint64 term = 3 [(gogoproto.nullable) = false]; } message Snapshot { @@ -47,23 +47,23 @@ enum MessageType { } message Message { - required MessageType type = 1 [(gogoproto.nullable) = false]; - required uint64 to = 2 [(gogoproto.nullable) = false]; - required uint64 from = 3 [(gogoproto.nullable) = false]; - required uint64 term = 4 [(gogoproto.nullable) = false]; - required uint64 logTerm = 5 [(gogoproto.nullable) = false]; - required uint64 index = 6 [(gogoproto.nullable) = false]; + optional MessageType type = 1 [(gogoproto.nullable) = false]; + optional uint64 to = 2 [(gogoproto.nullable) = false]; + optional uint64 from = 3 [(gogoproto.nullable) = false]; + optional uint64 term = 4 [(gogoproto.nullable) = false]; + optional uint64 logTerm = 5 [(gogoproto.nullable) = false]; + optional uint64 index = 6 [(gogoproto.nullable) = false]; repeated Entry entries = 7 [(gogoproto.nullable) = false]; - required uint64 commit = 8 [(gogoproto.nullable) = false]; - required Snapshot snapshot = 9 [(gogoproto.nullable) = false]; - required bool reject = 10 [(gogoproto.nullable) = false]; - required uint64 rejectHint = 11 [(gogoproto.nullable) = false]; + optional uint64 commit = 8 [(gogoproto.nullable) = false]; + optional Snapshot snapshot = 9 [(gogoproto.nullable) = false]; + optional bool reject = 10 [(gogoproto.nullable) = false]; + optional uint64 rejectHint = 11 [(gogoproto.nullable) = false]; } message HardState { - required uint64 term = 1 [(gogoproto.nullable) = false]; - required uint64 vote = 2 [(gogoproto.nullable) = false]; - required uint64 commit = 3 [(gogoproto.nullable) = false]; + optional uint64 term = 1 [(gogoproto.nullable) = false]; + optional uint64 vote = 2 [(gogoproto.nullable) = false]; + optional uint64 commit = 3 [(gogoproto.nullable) = false]; } message ConfState { @@ -77,8 +77,8 @@ enum ConfChangeType { } message ConfChange { - required uint64 ID = 1 [(gogoproto.nullable) = false]; - required ConfChangeType Type = 2 [(gogoproto.nullable) = false]; - required uint64 NodeID = 3 [(gogoproto.nullable) = false]; + optional uint64 ID = 1 [(gogoproto.nullable) = false]; + optional ConfChangeType Type = 2 [(gogoproto.nullable) = false]; + optional uint64 NodeID = 3 [(gogoproto.nullable) = false]; optional bytes Context = 4 [(gogoproto.nullable) = false]; } diff --git a/scripts/genproto.sh b/scripts/genproto.sh index 2c7db3345..2ef5e00e6 100755 --- a/scripts/genproto.sh +++ b/scripts/genproto.sh @@ -7,7 +7,7 @@ PREFIX="github.com/coreos/etcd/Godeps/_workspace/src" DIRS="./wal/walpb ./etcdserver/etcdserverpb ./snap/snappb ./raft/raftpb ./migrate/etcd4pb ./storage/storagepb" -SHA="bc946d07d1016848dfd2507f90f0859c9471681e" +SHA="64f27bf06efee53589314a6e5a4af34cdd85adf6" if ! protoc --version > /dev/null; then echo "could not find protoc, is it installed + in PATH?" @@ -28,7 +28,7 @@ export PATH="${GOBIN}:${PATH}" for dir in ${DIRS}; do pushd ${dir} - protoc --gogo_out=. -I=.:${GOPATH}/src/github.com/gogo/protobuf/protobuf:${GOPATH}/src *.proto + protoc --gogofast_out=. -I=.:${GOPATH}/src/github.com/gogo/protobuf/protobuf:${GOPATH}/src *.proto sed -i".bak" -e "s|github.com/gogo/protobuf/proto|${PREFIX}/github.com/gogo/protobuf/proto|" *.go rm -f *.bak popd diff --git a/snap/snappb/snap.pb.go b/snap/snappb/snap.pb.go index 666c38fea..caaaa2d0a 100644 --- a/snap/snappb/snap.pb.go +++ b/snap/snappb/snap.pb.go @@ -39,16 +39,17 @@ func (*Snapshot) ProtoMessage() {} func init() { } func (m *Snapshot) Unmarshal(data []byte) error { + var hasFields [1]uint64 l := len(data) - index := 0 - for index < l { + iNdEx := 0 + for iNdEx < l { var wire uint64 for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ wire |= (uint64(b) & 0x7F) << shift if b < 0x80 { break @@ -62,38 +63,39 @@ func (m *Snapshot) Unmarshal(data []byte) error { return fmt.Errorf("proto: wrong wireType = %d for field Crc", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.Crc |= (uint32(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000001) case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ byteLen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - postIndex := index + byteLen + postIndex := iNdEx + byteLen if postIndex > l { return io.ErrUnexpectedEOF } - m.Data = append([]byte{}, data[index:postIndex]...) - index = postIndex + m.Data = append([]byte{}, data[iNdEx:postIndex]...) + iNdEx = postIndex default: var sizeOfWire int for { @@ -103,20 +105,108 @@ func (m *Snapshot) Unmarshal(data []byte) error { break } } - index -= sizeOfWire - skippy, err := github_com_gogo_protobuf_proto.Skip(data[index:]) + iNdEx -= sizeOfWire + skippy, err := skipSnap(data[iNdEx:]) if err != nil { return err } - if (index + skippy) > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.XXX_unrecognized = append(m.XXX_unrecognized, data[index:index+skippy]...) - index += skippy + m.XXX_unrecognized = append(m.XXX_unrecognized, data[iNdEx:iNdEx+skippy]...) + iNdEx += skippy } } + if hasFields[0]&uint64(0x00000001) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("crc") + } + return nil } +func skipSnap(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipSnap(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} func (m *Snapshot) Size() (n int) { var l int _ = l diff --git a/snap/snappb/snap.proto b/snap/snappb/snap.proto index ac131b94b..0c4b8942a 100644 --- a/snap/snappb/snap.proto +++ b/snap/snappb/snap.proto @@ -8,6 +8,6 @@ option (gogoproto.unmarshaler_all) = true; option (gogoproto.goproto_getters_all) = false; message snapshot { - required uint32 crc = 1 [(gogoproto.nullable) = false]; + optional uint32 crc = 1 [(gogoproto.nullable) = false]; optional bytes data = 2; } diff --git a/snap/snapshotter.go b/snap/snapshotter.go index 8a074e6ed..764cc63ab 100644 --- a/snap/snapshotter.go +++ b/snap/snapshotter.go @@ -115,6 +115,11 @@ func Read(snapname string) (*raftpb.Snapshot, error) { return nil, err } + if len(b) == 0 { + plog.Errorf("unexpected empty snapshot") + return nil, ErrEmptySnapshot + } + var serializedSnap snappb.Snapshot if err = serializedSnap.Unmarshal(b); err != nil { plog.Errorf("corrupted snapshot file %v: %v", snapname, err) diff --git a/storage/storagepb/kv.pb.go b/storage/storagepb/kv.pb.go index 1f7566edf..271cb3390 100644 --- a/storage/storagepb/kv.pb.go +++ b/storage/storagepb/kv.pb.go @@ -21,7 +21,6 @@ import math "math" import io "io" import fmt "fmt" -import github_com_gogo_protobuf_proto "github.com/coreos/etcd/Godeps/_workspace/src/github.com/gogo/protobuf/proto" // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -98,15 +97,15 @@ func init() { } func (m *KeyValue) Unmarshal(data []byte) error { l := len(data) - index := 0 - for index < l { + iNdEx := 0 + for iNdEx < l { var wire uint64 for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ wire |= (uint64(b) & 0x7F) << shift if b < 0x80 { break @@ -121,32 +120,32 @@ func (m *KeyValue) Unmarshal(data []byte) error { } var byteLen int for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ byteLen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - postIndex := index + byteLen + postIndex := iNdEx + byteLen if postIndex > l { return io.ErrUnexpectedEOF } - m.Key = append([]byte{}, data[index:postIndex]...) - index = postIndex + m.Key = append([]byte{}, data[iNdEx:postIndex]...) + iNdEx = postIndex case 2: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field CreateIndex", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.CreateIndex |= (int64(b) & 0x7F) << shift if b < 0x80 { break @@ -157,11 +156,11 @@ func (m *KeyValue) Unmarshal(data []byte) error { return fmt.Errorf("proto: wrong wireType = %d for field ModIndex", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.ModIndex |= (int64(b) & 0x7F) << shift if b < 0x80 { break @@ -172,11 +171,11 @@ func (m *KeyValue) Unmarshal(data []byte) error { return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.Version |= (int64(b) & 0x7F) << shift if b < 0x80 { break @@ -188,22 +187,22 @@ func (m *KeyValue) Unmarshal(data []byte) error { } var byteLen int for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ byteLen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - postIndex := index + byteLen + postIndex := iNdEx + byteLen if postIndex > l { return io.ErrUnexpectedEOF } - m.Value = append([]byte{}, data[index:postIndex]...) - index = postIndex + m.Value = append([]byte{}, data[iNdEx:postIndex]...) + iNdEx = postIndex default: var sizeOfWire int for { @@ -213,31 +212,32 @@ func (m *KeyValue) Unmarshal(data []byte) error { break } } - index -= sizeOfWire - skippy, err := github_com_gogo_protobuf_proto.Skip(data[index:]) + iNdEx -= sizeOfWire + skippy, err := skipKv(data[iNdEx:]) if err != nil { return err } - if (index + skippy) > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.XXX_unrecognized = append(m.XXX_unrecognized, data[index:index+skippy]...) - index += skippy + m.XXX_unrecognized = append(m.XXX_unrecognized, data[iNdEx:iNdEx+skippy]...) + iNdEx += skippy } } + return nil } func (m *Event) Unmarshal(data []byte) error { l := len(data) - index := 0 - for index < l { + iNdEx := 0 + for iNdEx < l { var wire uint64 for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ wire |= (uint64(b) & 0x7F) << shift if b < 0x80 { break @@ -251,11 +251,11 @@ func (m *Event) Unmarshal(data []byte) error { return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.Type |= (Event_EventType(b) & 0x7F) << shift if b < 0x80 { break @@ -267,24 +267,24 @@ func (m *Event) Unmarshal(data []byte) error { } var msglen int for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - postIndex := index + msglen + postIndex := iNdEx + msglen if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Kv.Unmarshal(data[index:postIndex]); err != nil { + if err := m.Kv.Unmarshal(data[iNdEx:postIndex]); err != nil { return err } - index = postIndex + iNdEx = postIndex default: var sizeOfWire int for { @@ -294,20 +294,105 @@ func (m *Event) Unmarshal(data []byte) error { break } } - index -= sizeOfWire - skippy, err := github_com_gogo_protobuf_proto.Skip(data[index:]) + iNdEx -= sizeOfWire + skippy, err := skipKv(data[iNdEx:]) if err != nil { return err } - if (index + skippy) > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.XXX_unrecognized = append(m.XXX_unrecognized, data[index:index+skippy]...) - index += skippy + m.XXX_unrecognized = append(m.XXX_unrecognized, data[iNdEx:iNdEx+skippy]...) + iNdEx += skippy } } + return nil } +func skipKv(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipKv(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} func (m *KeyValue) Size() (n int) { var l int _ = l diff --git a/wal/walpb/record.pb.go b/wal/walpb/record.pb.go index bb5e97ea5..cc1cf21a4 100644 --- a/wal/walpb/record.pb.go +++ b/wal/walpb/record.pb.go @@ -51,16 +51,17 @@ func (*Snapshot) ProtoMessage() {} func init() { } func (m *Record) Unmarshal(data []byte) error { + var hasFields [1]uint64 l := len(data) - index := 0 - for index < l { + iNdEx := 0 + for iNdEx < l { var wire uint64 for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ wire |= (uint64(b) & 0x7F) << shift if b < 0x80 { break @@ -74,53 +75,55 @@ func (m *Record) Unmarshal(data []byte) error { return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.Type |= (int64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000001) case 2: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Crc", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.Crc |= (uint32(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000002) case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ byteLen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } - postIndex := index + byteLen + postIndex := iNdEx + byteLen if postIndex > l { return io.ErrUnexpectedEOF } - m.Data = append([]byte{}, data[index:postIndex]...) - index = postIndex + m.Data = append([]byte{}, data[iNdEx:postIndex]...) + iNdEx = postIndex default: var sizeOfWire int for { @@ -130,31 +133,39 @@ func (m *Record) Unmarshal(data []byte) error { break } } - index -= sizeOfWire - skippy, err := github_com_gogo_protobuf_proto.Skip(data[index:]) + iNdEx -= sizeOfWire + skippy, err := skipRecord(data[iNdEx:]) if err != nil { return err } - if (index + skippy) > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.XXX_unrecognized = append(m.XXX_unrecognized, data[index:index+skippy]...) - index += skippy + m.XXX_unrecognized = append(m.XXX_unrecognized, data[iNdEx:iNdEx+skippy]...) + iNdEx += skippy } } + if hasFields[0]&uint64(0x00000001) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("type") + } + if hasFields[0]&uint64(0x00000002) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("crc") + } + return nil } func (m *Snapshot) Unmarshal(data []byte) error { + var hasFields [1]uint64 l := len(data) - index := 0 - for index < l { + iNdEx := 0 + for iNdEx < l { var wire uint64 for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ wire |= (uint64(b) & 0x7F) << shift if b < 0x80 { break @@ -168,31 +179,33 @@ func (m *Snapshot) Unmarshal(data []byte) error { return fmt.Errorf("proto: wrong wireType = %d for field Index", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.Index |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000001) case 2: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Term", wireType) } for shift := uint(0); ; shift += 7 { - if index >= l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - b := data[index] - index++ + b := data[iNdEx] + iNdEx++ m.Term |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } + hasFields[0] |= uint64(0x00000002) default: var sizeOfWire int for { @@ -202,20 +215,111 @@ func (m *Snapshot) Unmarshal(data []byte) error { break } } - index -= sizeOfWire - skippy, err := github_com_gogo_protobuf_proto.Skip(data[index:]) + iNdEx -= sizeOfWire + skippy, err := skipRecord(data[iNdEx:]) if err != nil { return err } - if (index + skippy) > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.XXX_unrecognized = append(m.XXX_unrecognized, data[index:index+skippy]...) - index += skippy + m.XXX_unrecognized = append(m.XXX_unrecognized, data[iNdEx:iNdEx+skippy]...) + iNdEx += skippy } } + if hasFields[0]&uint64(0x00000001) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("index") + } + if hasFields[0]&uint64(0x00000002) == 0 { + return github_com_gogo_protobuf_proto.NewRequiredNotSetError("term") + } + return nil } +func skipRecord(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipRecord(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} func (m *Record) Size() (n int) { var l int _ = l diff --git a/wal/walpb/record.proto b/wal/walpb/record.proto index 4ddffde46..9b54ed734 100644 --- a/wal/walpb/record.proto +++ b/wal/walpb/record.proto @@ -8,12 +8,12 @@ option (gogoproto.unmarshaler_all) = true; option (gogoproto.goproto_getters_all) = false; message Record { - required int64 type = 1 [(gogoproto.nullable) = false]; - required uint32 crc = 2 [(gogoproto.nullable) = false]; + optional int64 type = 1 [(gogoproto.nullable) = false]; + optional uint32 crc = 2 [(gogoproto.nullable) = false]; optional bytes data = 3; } message Snapshot { - required uint64 index = 1 [(gogoproto.nullable) = false]; - required uint64 term = 2 [(gogoproto.nullable) = false]; + optional uint64 index = 1 [(gogoproto.nullable) = false]; + optional uint64 term = 2 [(gogoproto.nullable) = false]; }