From 64eccf1dc5049353fe87c7daa13dcd4049e23b1f Mon Sep 17 00:00:00 2001 From: flouthoc Date: Tue, 28 May 2024 21:03:56 -0700 Subject: [PATCH 1/4] status, multi: add weavelet id with pids As of now weaver logs shows the weavelet id and `weaver multi status` shows the respective `pid` but its hard to map weavelet id from the logs to the running process, following commit adds weavelet id with the pids of the components so its easier to debug. Signed-off-by: flouthoc --- internal/status/status.go | 16 +- internal/status/status.pb.go | 237 ++++++++++++++++++--------- internal/status/status.proto | 12 +- internal/tool/multi/deployer.go | 15 +- internal/tool/ssh/impl/babysitter.go | 11 +- internal/tool/ssh/impl/manager.go | 11 +- internal/tool/ssh/impl/ssh.pb.go | 24 ++- internal/tool/ssh/impl/ssh.proto | 5 +- internal/weaver/singleweavelet.go | 6 +- 9 files changed, 216 insertions(+), 121 deletions(-) diff --git a/internal/status/status.go b/internal/status/status.go index 1972be099..cd80aff39 100644 --- a/internal/status/status.go +++ b/internal/status/status.go @@ -111,7 +111,7 @@ func formatComponents(w io.Writer, statuses []*Status) { title := []colors.Text{{{S: "COMPONENTS", Bold: true}}} t := colors.NewTabularizer(w, title, colors.PrefixDim) defer t.Flush() - t.Row("APP", "DEPLOYMENT", "COMPONENT", "REPLICA PIDS") + t.Row("APP", "DEPLOYMENT", "COMPONENT", "REPLICA PIDS", "WEAVELET IDS") for _, status := range statuses { sort.Slice(status.Components, func(i, j int) bool { return status.Components[i].Name < status.Components[j].Name @@ -119,14 +119,16 @@ func formatComponents(w io.Writer, statuses []*Status) { for _, component := range status.Components { prefix, _ := formatId(status.DeploymentId) c := logging.ShortenComponent(component.Name) - sort.Slice(component.Pids, func(i, j int) bool { - return component.Pids[i] < component.Pids[j] + sort.Slice(component.Replicas, func(i, j int) bool { + return component.Replicas[i].Pid < component.Replicas[j].Pid }) - pids := make([]string, len(component.Pids)) - for i, pid := range component.Pids { - pids[i] = fmt.Sprint(pid) + pids := make([]string, len(component.Replicas)) + weaveletIds := make([]string, len(component.Replicas)) + for i, replica := range component.Replicas { + pids[i] = fmt.Sprint(replica.Pid) + weaveletIds[i] = replica.WeaveletId[0:8] } - t.Row(status.App, prefix, c, strings.Join(pids, ", ")) + t.Row(status.App, prefix, c, strings.Join(pids, ", "), strings.Join(weaveletIds, ", ")) } } } diff --git a/internal/status/status.pb.go b/internal/status/status.pb.go index b680f5f96..eacdb2be2 100644 --- a/internal/status/status.pb.go +++ b/internal/status/status.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.1 +// protoc v3.19.6 // source: internal/status/status.proto package status @@ -138,9 +138,9 @@ type Component struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // component name (e.g., Cache) - Pids []int64 `protobuf:"varint,3,rep,packed,name=pids,proto3" json:"pids,omitempty"` // PIDs of component replicas - Methods []*Method `protobuf:"bytes,4,rep,name=methods,proto3" json:"methods,omitempty"` // methods + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // component name (e.g., Cache) + Replicas []*Replica `protobuf:"bytes,3,rep,name=replicas,proto3" json:"replicas,omitempty"` // replica details + Methods []*Method `protobuf:"bytes,4,rep,name=methods,proto3" json:"methods,omitempty"` // methods } func (x *Component) Reset() { @@ -182,9 +182,9 @@ func (x *Component) GetName() string { return "" } -func (x *Component) GetPids() []int64 { +func (x *Component) GetReplicas() []*Replica { if x != nil { - return x.Pids + return x.Replicas } return nil } @@ -196,6 +196,62 @@ func (x *Component) GetMethods() []*Method { return nil } +// Replica stores info related to replica +type Replica struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Pid int64 `protobuf:"varint,1,opt,name=pid,proto3" json:"pid,omitempty"` // replica process id + WeaveletId string `protobuf:"bytes,2,opt,name=weaveletId,proto3" json:"weaveletId,omitempty"` // replica weavelet id +} + +func (x *Replica) Reset() { + *x = Replica{} + if protoimpl.UnsafeEnabled { + mi := &file_internal_status_status_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Replica) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Replica) ProtoMessage() {} + +func (x *Replica) ProtoReflect() protoreflect.Message { + mi := &file_internal_status_status_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Replica.ProtoReflect.Descriptor instead. +func (*Replica) Descriptor() ([]byte, []int) { + return file_internal_status_status_proto_rawDescGZIP(), []int{2} +} + +func (x *Replica) GetPid() int64 { + if x != nil { + return x.Pid + } + return 0 +} + +func (x *Replica) GetWeaveletId() string { + if x != nil { + return x.WeaveletId + } + return "" +} + // Method describes a Component method. type Method struct { state protoimpl.MessageState @@ -211,7 +267,7 @@ type Method struct { func (x *Method) Reset() { *x = Method{} if protoimpl.UnsafeEnabled { - mi := &file_internal_status_status_proto_msgTypes[2] + mi := &file_internal_status_status_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -224,7 +280,7 @@ func (x *Method) String() string { func (*Method) ProtoMessage() {} func (x *Method) ProtoReflect() protoreflect.Message { - mi := &file_internal_status_status_proto_msgTypes[2] + mi := &file_internal_status_status_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -237,7 +293,7 @@ func (x *Method) ProtoReflect() protoreflect.Message { // Deprecated: Use Method.ProtoReflect.Descriptor instead. func (*Method) Descriptor() ([]byte, []int) { - return file_internal_status_status_proto_rawDescGZIP(), []int{2} + return file_internal_status_status_proto_rawDescGZIP(), []int{3} } func (x *Method) GetName() string { @@ -283,7 +339,7 @@ type MethodStats struct { func (x *MethodStats) Reset() { *x = MethodStats{} if protoimpl.UnsafeEnabled { - mi := &file_internal_status_status_proto_msgTypes[3] + mi := &file_internal_status_status_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -296,7 +352,7 @@ func (x *MethodStats) String() string { func (*MethodStats) ProtoMessage() {} func (x *MethodStats) ProtoReflect() protoreflect.Message { - mi := &file_internal_status_status_proto_msgTypes[3] + mi := &file_internal_status_status_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -309,7 +365,7 @@ func (x *MethodStats) ProtoReflect() protoreflect.Message { // Deprecated: Use MethodStats.ProtoReflect.Descriptor instead. func (*MethodStats) Descriptor() ([]byte, []int) { - return file_internal_status_status_proto_rawDescGZIP(), []int{3} + return file_internal_status_status_proto_rawDescGZIP(), []int{4} } func (x *MethodStats) GetNumCalls() float64 { @@ -353,7 +409,7 @@ type Listener struct { func (x *Listener) Reset() { *x = Listener{} if protoimpl.UnsafeEnabled { - mi := &file_internal_status_status_proto_msgTypes[4] + mi := &file_internal_status_status_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -366,7 +422,7 @@ func (x *Listener) String() string { func (*Listener) ProtoMessage() {} func (x *Listener) ProtoReflect() protoreflect.Message { - mi := &file_internal_status_status_proto_msgTypes[4] + mi := &file_internal_status_status_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -379,7 +435,7 @@ func (x *Listener) ProtoReflect() protoreflect.Message { // Deprecated: Use Listener.ProtoReflect.Descriptor instead. func (*Listener) Descriptor() ([]byte, []int) { - return file_internal_status_status_proto_rawDescGZIP(), []int{4} + return file_internal_status_status_proto_rawDescGZIP(), []int{5} } func (x *Listener) GetName() string { @@ -408,7 +464,7 @@ type Metrics struct { func (x *Metrics) Reset() { *x = Metrics{} if protoimpl.UnsafeEnabled { - mi := &file_internal_status_status_proto_msgTypes[5] + mi := &file_internal_status_status_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -421,7 +477,7 @@ func (x *Metrics) String() string { func (*Metrics) ProtoMessage() {} func (x *Metrics) ProtoReflect() protoreflect.Message { - mi := &file_internal_status_status_proto_msgTypes[5] + mi := &file_internal_status_status_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -434,7 +490,7 @@ func (x *Metrics) ProtoReflect() protoreflect.Message { // Deprecated: Use Metrics.ProtoReflect.Descriptor instead. func (*Metrics) Descriptor() ([]byte, []int) { - return file_internal_status_status_proto_rawDescGZIP(), []int{5} + return file_internal_status_status_proto_rawDescGZIP(), []int{6} } func (x *Metrics) GetMetrics() []*protos.MetricSnapshot { @@ -474,44 +530,49 @@ var file_internal_status_status_proto_rawDesc = []byte{ 0x65, 0x72, 0x52, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x2a, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x5d, 0x0a, 0x09, 0x43, 0x6f, 0x6d, + 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x76, 0x0a, 0x09, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x69, - 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x04, 0x70, 0x69, 0x64, 0x73, 0x12, 0x28, - 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x0e, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, - 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x22, 0x9d, 0x01, 0x0a, 0x06, 0x4d, 0x65, 0x74, - 0x68, 0x6f, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x6d, 0x69, 0x6e, 0x75, 0x74, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x06, 0x6d, 0x69, - 0x6e, 0x75, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x03, 0x20, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x08, 0x72, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x28, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x73, 0x22, 0x3b, 0x0a, 0x07, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x12, 0x10, 0x0a, 0x03, + 0x70, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x1e, + 0x0a, 0x0a, 0x77, 0x65, 0x61, 0x76, 0x65, 0x6c, 0x65, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x77, 0x65, 0x61, 0x76, 0x65, 0x6c, 0x65, 0x74, 0x49, 0x64, 0x22, 0x9d, + 0x01, 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, + 0x06, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x52, 0x06, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x68, 0x6f, + 0x75, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x04, 0x68, + 0x6f, 0x75, 0x72, 0x12, 0x29, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x04, 0x68, 0x6f, 0x75, 0x72, 0x12, 0x29, 0x0a, - 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x9e, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x74, - 0x68, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x75, 0x6d, 0x5f, - 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6e, 0x75, 0x6d, - 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x61, 0x76, 0x67, 0x5f, 0x6c, 0x61, 0x74, - 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x61, - 0x76, 0x67, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x73, 0x12, 0x25, 0x0a, 0x0f, 0x72, - 0x65, 0x63, 0x76, 0x5f, 0x6b, 0x62, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x76, 0x4b, 0x62, 0x50, 0x65, 0x72, 0x53, - 0x65, 0x63, 0x12, 0x25, 0x0a, 0x0f, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x6b, 0x62, 0x5f, 0x70, 0x65, - 0x72, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x73, 0x65, 0x6e, - 0x74, 0x4b, 0x62, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x22, 0x32, 0x0a, 0x08, 0x4c, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x64, 0x64, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x22, 0x3c, 0x0a, - 0x07, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x42, 0x31, 0x5a, 0x2f, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x57, 0x65, 0x61, 0x76, 0x65, 0x72, 0x2f, 0x77, 0x65, 0x61, 0x76, 0x65, 0x72, 0x2f, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x9e, + 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x1b, + 0x0a, 0x09, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x01, 0x52, 0x08, 0x6e, 0x75, 0x6d, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x61, + 0x76, 0x67, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x01, 0x52, 0x0c, 0x61, 0x76, 0x67, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, + 0x73, 0x12, 0x25, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x76, 0x5f, 0x6b, 0x62, 0x5f, 0x70, 0x65, 0x72, + 0x5f, 0x73, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x76, + 0x4b, 0x62, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x12, 0x25, 0x0a, 0x0f, 0x73, 0x65, 0x6e, 0x74, + 0x5f, 0x6b, 0x62, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x01, 0x52, 0x0c, 0x73, 0x65, 0x6e, 0x74, 0x4b, 0x62, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x22, + 0x32, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x61, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, + 0x64, 0x64, 0x72, 0x22, 0x3c, 0x0a, 0x07, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x31, + 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x57, 0x65, 0x61, 0x76, 0x65, 0x72, 0x2f, 0x77, 0x65, + 0x61, 0x76, 0x65, 0x72, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -526,33 +587,35 @@ func file_internal_status_status_proto_rawDescGZIP() []byte { return file_internal_status_status_proto_rawDescData } -var file_internal_status_status_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_internal_status_status_proto_msgTypes = make([]protoimpl.MessageInfo, 7) var file_internal_status_status_proto_goTypes = []interface{}{ (*Status)(nil), // 0: status.Status (*Component)(nil), // 1: status.Component - (*Method)(nil), // 2: status.Method - (*MethodStats)(nil), // 3: status.MethodStats - (*Listener)(nil), // 4: status.Listener - (*Metrics)(nil), // 5: status.Metrics - (*timestamppb.Timestamp)(nil), // 6: google.protobuf.Timestamp - (*protos.AppConfig)(nil), // 7: runtime.AppConfig - (*protos.MetricSnapshot)(nil), // 8: runtime.MetricSnapshot + (*Replica)(nil), // 2: status.Replica + (*Method)(nil), // 3: status.Method + (*MethodStats)(nil), // 4: status.MethodStats + (*Listener)(nil), // 5: status.Listener + (*Metrics)(nil), // 6: status.Metrics + (*timestamppb.Timestamp)(nil), // 7: google.protobuf.Timestamp + (*protos.AppConfig)(nil), // 8: runtime.AppConfig + (*protos.MetricSnapshot)(nil), // 9: runtime.MetricSnapshot } var file_internal_status_status_proto_depIdxs = []int32{ - 6, // 0: status.Status.submission_time:type_name -> google.protobuf.Timestamp - 1, // 1: status.Status.components:type_name -> status.Component - 4, // 2: status.Status.listeners:type_name -> status.Listener - 7, // 3: status.Status.config:type_name -> runtime.AppConfig - 2, // 4: status.Component.methods:type_name -> status.Method - 3, // 5: status.Method.minute:type_name -> status.MethodStats - 3, // 6: status.Method.hour:type_name -> status.MethodStats - 3, // 7: status.Method.total:type_name -> status.MethodStats - 8, // 8: status.Metrics.metrics:type_name -> runtime.MetricSnapshot - 9, // [9:9] is the sub-list for method output_type - 9, // [9:9] is the sub-list for method input_type - 9, // [9:9] is the sub-list for extension type_name - 9, // [9:9] is the sub-list for extension extendee - 0, // [0:9] is the sub-list for field type_name + 7, // 0: status.Status.submission_time:type_name -> google.protobuf.Timestamp + 1, // 1: status.Status.components:type_name -> status.Component + 5, // 2: status.Status.listeners:type_name -> status.Listener + 8, // 3: status.Status.config:type_name -> runtime.AppConfig + 2, // 4: status.Component.replicas:type_name -> status.Replica + 3, // 5: status.Component.methods:type_name -> status.Method + 4, // 6: status.Method.minute:type_name -> status.MethodStats + 4, // 7: status.Method.hour:type_name -> status.MethodStats + 4, // 8: status.Method.total:type_name -> status.MethodStats + 9, // 9: status.Metrics.metrics:type_name -> runtime.MetricSnapshot + 10, // [10:10] is the sub-list for method output_type + 10, // [10:10] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name } func init() { file_internal_status_status_proto_init() } @@ -586,7 +649,7 @@ func file_internal_status_status_proto_init() { } } file_internal_status_status_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Method); i { + switch v := v.(*Replica); i { case 0: return &v.state case 1: @@ -598,7 +661,7 @@ func file_internal_status_status_proto_init() { } } file_internal_status_status_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MethodStats); i { + switch v := v.(*Method); i { case 0: return &v.state case 1: @@ -610,7 +673,7 @@ func file_internal_status_status_proto_init() { } } file_internal_status_status_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Listener); i { + switch v := v.(*MethodStats); i { case 0: return &v.state case 1: @@ -622,6 +685,18 @@ func file_internal_status_status_proto_init() { } } file_internal_status_status_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Listener); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_internal_status_status_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Metrics); i { case 0: return &v.state @@ -640,7 +715,7 @@ func file_internal_status_status_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_internal_status_status_proto_rawDesc, NumEnums: 0, - NumMessages: 6, + NumMessages: 7, NumExtensions: 0, NumServices: 0, }, diff --git a/internal/status/status.proto b/internal/status/status.proto index 4bafb6c5e..6f3c5ad56 100644 --- a/internal/status/status.proto +++ b/internal/status/status.proto @@ -34,9 +34,15 @@ message Status { // Component describes a Service Weaver component. message Component { - string name = 1; // component name (e.g., Cache) - repeated int64 pids = 3; // PIDs of component replicas - repeated Method methods = 4; // methods + string name = 1; // component name (e.g., Cache) + repeated Replica replicas = 3; // replica details + repeated Method methods = 4; // methods +} + +// Replica stores info related to replica +message Replica { + int64 pid = 1; // replica process id + string weaveletId = 2; // replica weavelet id } // Method describes a Component method. diff --git a/internal/tool/multi/deployer.go b/internal/tool/multi/deployer.go index 5efb784d6..d4b1e73bb 100644 --- a/internal/tool/multi/deployer.go +++ b/internal/tool/multi/deployer.go @@ -82,7 +82,7 @@ type deployer struct { type group struct { name string // group name envelopes []*envelope.Envelope // envelopes, one per weavelet - pids []int64 // weavelet pids + replicas []*status.Replica // stores replica info such as pid, weavelet id started map[string]bool // started components addresses map[string]bool // weavelet addresses assignments map[string]*protos.Assignment // assignment, by component @@ -352,7 +352,10 @@ func (d *deployer) startColocationGroup(g *group) error { if !ok { panic("multi deployer child must be a real process") } - if err := d.registerReplica(g, e.WeaveletAddress(), pid); err != nil { + // Add replica info to group + g.replicas = append(g.replicas, &status.Replica{Pid: int64(pid), WeaveletId: info.Id}) + // Register replica + if err := d.registerReplica(g, e.WeaveletAddress()); err != nil { return err } if err := e.UpdateComponents(components); err != nil { @@ -507,15 +510,13 @@ func (d *deployer) activateComponent(req *protos.ActivateComponentRequest) error // registerReplica registers the information about a colocation group replica // (i.e., a weavelet). -func (d *deployer) registerReplica(g *group, replicaAddr string, pid int) error { +func (d *deployer) registerReplica(g *group, replicaAddr string) error { // Update addresses and pids. if g.addresses[replicaAddr] { // Replica already registered. return nil } g.addresses[replicaAddr] = true - g.pids = append(g.pids, int64(pid)) - // Update all assignments. replicas := maps.Keys(g.addresses) for component, assignment := range g.assignments { @@ -643,8 +644,8 @@ func (d *deployer) Status(context.Context) (*status.Status, error) { for _, group := range d.groups { for component := range group.started { c := &status.Component{ - Name: component, - Pids: slices.Clone(group.pids), + Name: component, + Replicas: group.replicas, } components = append(components, c) diff --git a/internal/tool/ssh/impl/babysitter.go b/internal/tool/ssh/impl/babysitter.go index 576b04bdf..997d41f6a 100644 --- a/internal/tool/ssh/impl/babysitter.go +++ b/internal/tool/ssh/impl/babysitter.go @@ -108,7 +108,7 @@ func RunBabysitter(ctx context.Context) error { if !ok { panic("ssh deployer child must be a real process") } - if err := b.registerReplica(e.WeaveletAddress(), pid); err != nil { + if err := b.registerReplica(e.WeaveletAddress(), pid, id); err != nil { return err } c := metricsCollector{logger: b.logger, envelope: e, info: info} @@ -180,15 +180,16 @@ func (b *babysitter) ActivateComponent(_ context.Context, req *protos.ActivateCo // registerReplica registers the information about a colocation group replica // (i.e., a weavelet). -func (b *babysitter) registerReplica(replicaAddr string, pid int) error { +func (b *babysitter) registerReplica(replicaAddr string, pid int, weaveletId string) error { if err := protomsg.Call(b.ctx, protomsg.CallArgs{ Client: http.DefaultClient, Addr: b.info.ManagerAddr, URLPath: registerReplicaURL, Request: &ReplicaToRegister{ - Group: b.info.Group, - Address: replicaAddr, - Pid: int64(pid), + Group: b.info.Group, + Address: replicaAddr, + Pid: int64(pid), + WeaveletId: weaveletId, }, }); err != nil { return err diff --git a/internal/tool/ssh/impl/manager.go b/internal/tool/ssh/impl/manager.go index 130441a47..d61681a0b 100644 --- a/internal/tool/ssh/impl/manager.go +++ b/internal/tool/ssh/impl/manager.go @@ -24,7 +24,6 @@ import ( "os" "os/exec" "path/filepath" - "slices" "sync" "syscall" "time" @@ -131,7 +130,7 @@ type group struct { started bool // has this group been started? addresses map[string]bool // weavelet addresses routings map[string]*versioned.Versioned[*protos.RoutingInfo] // routing info, by component - pids []int64 // weavelet pids + replicas []*status.Replica // stores replica info such as pid, weavelet id } type proxyInfo struct { @@ -316,12 +315,11 @@ func (m *manager) Status(ctx context.Context) (*status.Status, error) { cs := maps.Keys(g.components.Val) g.components.Unlock() g.mu.Lock() - pids := slices.Clone(g.pids) g.mu.Unlock() for _, component := range cs { c := &status.Component{ - Name: component, - Pids: pids, + Name: component, + Replicas: g.replicas, } components = append(components, c) @@ -411,6 +409,7 @@ func (m *manager) group(component string) *group { addresses: map[string]bool{}, components: versioned.Version(map[string]bool{}), routings: map[string]*versioned.Versioned[*protos.RoutingInfo]{}, + replicas: []*status.Replica{}, } m.groups[name] = g } @@ -471,7 +470,7 @@ func (m *manager) registerReplica(_ context.Context, req *ReplicaToRegister) err return true } g.addresses[req.Address] = true - g.pids = append(g.pids, req.Pid) + g.replicas = append(g.replicas, &status.Replica{Pid: req.Pid, WeaveletId: req.WeaveletId}) return false } if record() { diff --git a/internal/tool/ssh/impl/ssh.pb.go b/internal/tool/ssh/impl/ssh.pb.go index 33d0815f8..0d3cc4041 100644 --- a/internal/tool/ssh/impl/ssh.pb.go +++ b/internal/tool/ssh/impl/ssh.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.1 +// protoc v3.19.6 // source: internal/tool/ssh/impl/ssh.proto package impl @@ -522,9 +522,10 @@ type ReplicaToRegister struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Group string `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` - Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` // Replica internal address. - Pid int64 `protobuf:"varint,3,opt,name=pid,proto3" json:"pid,omitempty"` // Replica pid. + Group string `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` + Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` // Replica internal address. + Pid int64 `protobuf:"varint,3,opt,name=pid,proto3" json:"pid,omitempty"` // Replica pid. + WeaveletId string `protobuf:"bytes,4,opt,name=weaveletId,proto3" json:"weaveletId,omitempty"` // Replica weavelet id } func (x *ReplicaToRegister) Reset() { @@ -580,6 +581,13 @@ func (x *ReplicaToRegister) GetPid() int64 { return 0 } +func (x *ReplicaToRegister) GetWeaveletId() string { + if x != nil { + return x.WeaveletId + } + return "" +} + // Options for the application listeners, keyed by listener name. // If a listener isn't specified in the map, default options will be used. type SshConfig_ListenerOptions struct { @@ -707,12 +715,14 @@ var file_internal_tool_ssh_impl_ssh_proto_rawDesc = []byte{ 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, - 0x55, 0x0a, 0x11, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x54, 0x6f, 0x52, 0x65, 0x67, 0x69, + 0x75, 0x0a, 0x11, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x54, 0x6f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x03, 0x70, 0x69, 0x64, 0x42, 0x38, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x03, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x65, 0x61, 0x76, 0x65, 0x6c, + 0x65, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x65, 0x61, 0x76, + 0x65, 0x6c, 0x65, 0x74, 0x49, 0x64, 0x42, 0x38, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x57, 0x65, 0x61, 0x76, 0x65, 0x72, 0x2f, 0x77, 0x65, 0x61, 0x76, 0x65, 0x72, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x6f, 0x6f, 0x6c, 0x2f, 0x73, 0x73, 0x68, 0x2f, 0x69, 0x6d, 0x70, 0x6c, diff --git a/internal/tool/ssh/impl/ssh.proto b/internal/tool/ssh/impl/ssh.proto index 129377785..3db148947 100644 --- a/internal/tool/ssh/impl/ssh.proto +++ b/internal/tool/ssh/impl/ssh.proto @@ -93,6 +93,7 @@ message BabysitterMetrics { // a given colocation group (i.e., a weavelet). message ReplicaToRegister { string group = 1; - string address = 2; // Replica internal address. - int64 pid = 3; // Replica pid. + string address = 2; // Replica internal address. + int64 pid = 3; // Replica pid. + string weaveletId = 4; // Replica weavelet id } diff --git a/internal/weaver/singleweavelet.go b/internal/weaver/singleweavelet.go index 7f8414044..978d97557 100644 --- a/internal/weaver/singleweavelet.go +++ b/internal/weaver/singleweavelet.go @@ -426,15 +426,15 @@ func (w *SingleWeavelet) ServeStatus(ctx context.Context) error { func (w *SingleWeavelet) Status(context.Context) (*status.Status, error) { w.mu.Lock() defer w.mu.Unlock() - pid := int64(os.Getpid()) stats := w.stats.GetStatsStatusz() var components []*status.Component for component := range w.components { c := &status.Component{ - Name: component, - Pids: []int64{pid}, + Name: component, + Replicas: []*status.Replica{}, } + c.Replicas = append(c.Replicas, &status.Replica{Pid: pid, WeaveletId: w.id}) components = append(components, c) // TODO(mwhittaker): Unify with ui package and remove duplication. From 7deae35890a5df5576298b3c57a8f5f52a811125 Mon Sep 17 00:00:00 2001 From: flouthoc Date: Thu, 30 May 2024 10:01:41 -0700 Subject: [PATCH 2/4] status,dashboard: render weavelet id with pids Extends work in PR https://github.com/ServiceWeaver/weaver/pull/767 to refect weavelet id on status dashboard as well. Thanks to @rgrandl for diff provided here: https://github.com/ServiceWeaver/weaver/pull/767#pullrequestreview-2088787919 Signed-off-by: flouthoc --- internal/status/dashboard.go | 16 ++++++++++++---- internal/status/templates/deployment.html | 6 ++++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/internal/status/dashboard.go b/internal/status/dashboard.go index ca821c1d2..7706b9509 100644 --- a/internal/status/dashboard.go +++ b/internal/status/dashboard.go @@ -54,13 +54,21 @@ var ( deploymentHTML string deploymentTemplate = template.Must(template.New("deployment").Funcs(template.FuncMap{ "shorten": logging.ShortenComponent, - "pidjoin": func(pids []int64) string { - s := make([]string, len(pids)) - for i, x := range pids { - s[i] = fmt.Sprint(x) + "pidjoin": func(replicas []*Replica) string { + s := make([]string, len(replicas)) + for i, x := range replicas { + s[i] = fmt.Sprint(x.Pid) } return strings.Join(s, ", ") }, + "widjoin": func(replicas []*Replica) string { + s := make([]string, len(replicas)) + for i, x := range replicas { + s[i] = x.WeaveletId[0:8] + } + return strings.Join(s, ", ") + + }, "age": func(t *timestamppb.Timestamp) string { return time.Since(t.AsTime()).Truncate(time.Second).String() }, diff --git a/internal/status/templates/deployment.html b/internal/status/templates/deployment.html index 2ae661bf9..5753bbcc2 100644 --- a/internal/status/templates/deployment.html +++ b/internal/status/templates/deployment.html @@ -152,14 +152,16 @@ Component Replication PIDs + Weavelet IDs {{range $c := .Components}} {{shorten $c.Name}} - {{len $c.Pids}} - {{pidjoin $c.Pids}} + {{len $c.Replicas}} + {{pidjoin $c.Replicas}} + {{widjoin $c.Replicas}} {{end}} From 2401e3d394cde10e547cb1f304610c24f30a0a71 Mon Sep 17 00:00:00 2001 From: flouthoc Date: Thu, 30 May 2024 10:23:46 -0700 Subject: [PATCH 3/4] ssh/manager: remove mutex lock from Status Context: https://github.com/ServiceWeaver/weaver/pull/767#discussion_r1621146209 Signed-off-by: flouthoc --- internal/tool/ssh/impl/manager.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/internal/tool/ssh/impl/manager.go b/internal/tool/ssh/impl/manager.go index d61681a0b..ea65e77a4 100644 --- a/internal/tool/ssh/impl/manager.go +++ b/internal/tool/ssh/impl/manager.go @@ -314,8 +314,6 @@ func (m *manager) Status(ctx context.Context) (*status.Status, error) { g.components.Lock() cs := maps.Keys(g.components.Val) g.components.Unlock() - g.mu.Lock() - g.mu.Unlock() for _, component := range cs { c := &status.Component{ Name: component, From 121afdc38ecab1cfc8d151ae07bed72753471f2a Mon Sep 17 00:00:00 2001 From: flouthoc Date: Thu, 30 May 2024 10:25:02 -0700 Subject: [PATCH 4/4] dev/build: run tidy Run `./dev/build_and_test tidy generate build vet test testrace` on source. Signed-off-by: flouthoc --- godeps.txt | 1 - internal/benchmarks/payload.pb.go | 4 ++-- internal/tool/single/single.pb.go | 4 ++-- runtime/protos/config.pb.go | 4 ++-- runtime/protos/runtime.pb.go | 4 ++-- weavertest/internal/protos/ping.pb.go | 4 ++-- 6 files changed, 10 insertions(+), 11 deletions(-) diff --git a/godeps.txt b/godeps.txt index a2bf562de..22770f7c1 100644 --- a/godeps.txt +++ b/godeps.txt @@ -620,7 +620,6 @@ github.com/ServiceWeaver/weaver/internal/tool/ssh/impl os/exec path/filepath reflect - slices sync syscall time diff --git a/internal/benchmarks/payload.pb.go b/internal/benchmarks/payload.pb.go index accd9aa38..a825cab5e 100644 --- a/internal/benchmarks/payload.pb.go +++ b/internal/benchmarks/payload.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.1 +// protoc v3.19.6 // source: payload.proto package benchmarks diff --git a/internal/tool/single/single.pb.go b/internal/tool/single/single.pb.go index 7a66bcd03..91a23c038 100644 --- a/internal/tool/single/single.pb.go +++ b/internal/tool/single/single.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.1 +// protoc v3.19.6 // source: internal/tool/single/single.proto package single diff --git a/runtime/protos/config.pb.go b/runtime/protos/config.pb.go index 89e88b553..892154d63 100644 --- a/runtime/protos/config.pb.go +++ b/runtime/protos/config.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.1 +// protoc v3.19.6 // source: runtime/protos/config.proto package protos diff --git a/runtime/protos/runtime.pb.go b/runtime/protos/runtime.pb.go index 2563db850..9ac785279 100644 --- a/runtime/protos/runtime.pb.go +++ b/runtime/protos/runtime.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.1 +// protoc v3.19.6 // source: runtime/protos/runtime.proto package protos diff --git a/weavertest/internal/protos/ping.pb.go b/weavertest/internal/protos/ping.pb.go index e272c68a9..ef25190e4 100644 --- a/weavertest/internal/protos/ping.pb.go +++ b/weavertest/internal/protos/ping.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.1 +// protoc v3.19.6 // source: ping.proto package protos