From a050891c56c194a521d16760383952539886486a Mon Sep 17 00:00:00 2001 From: daihao4371 Date: Fri, 20 Jun 2025 14:58:08 +0800 Subject: [PATCH 1/2] fix(discover): avoid defer accumulation in stream loop --- .../grpcserver/discover/v1/client_access.go | 44 ++++++++++++++----- 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/apiserver/grpcserver/discover/v1/client_access.go b/apiserver/grpcserver/discover/v1/client_access.go index d2a42d6ce..d91a676d9 100644 --- a/apiserver/grpcserver/discover/v1/client_access.go +++ b/apiserver/grpcserver/discover/v1/client_access.go @@ -116,6 +116,17 @@ func (g *DiscoverServer) Discover(server apiservice.PolarisGRPC_DiscoverServer) if sendErr := server.Send(resp); sendErr != nil { return sendErr } + // 上报失败调用 + plugin.GetStatis().ReportDiscoverCall(metrics.ClientDiscoverMetric{ + Action: "deny-access", + ClientIP: utils.ParseClientAddress(ctx), + Namespace: in.GetService().GetNamespace().GetValue(), + Resource: in.GetType().String() + ":" + in.GetService().GetName().GetValue(), + Timestamp: commontime.CurrentMillisecond(), + CostTime: 0, + Revision: "", + Success: false, + }) continue } @@ -125,24 +136,22 @@ func (g *DiscoverServer) Discover(server apiservice.PolarisGRPC_DiscoverServer) if err = server.Send(resp); err != nil { return err } + plugin.GetStatis().ReportDiscoverCall(metrics.ClientDiscoverMetric{ + Action: "rate-limit", + ClientIP: utils.ParseClientAddress(ctx), + Namespace: in.GetService().GetNamespace().GetValue(), + Resource: in.GetType().String() + ":" + in.GetService().GetName().GetValue(), + Timestamp: commontime.CurrentMillisecond(), + CostTime: 0, + Revision: "", + Success: false, + }) continue } var out *apiservice.DiscoverResponse var action string startTime := commontime.CurrentMillisecond() - defer func() { - plugin.GetStatis().ReportDiscoverCall(metrics.ClientDiscoverMetric{ - Action: action, - ClientIP: utils.ParseClientAddress(ctx), - Namespace: in.GetService().GetNamespace().GetValue(), - Resource: in.GetType().String() + ":" + in.GetService().GetName().GetValue(), - Timestamp: startTime, - CostTime: commontime.CurrentMillisecond() - startTime, - Revision: out.GetService().GetRevision().GetValue(), - Success: out.GetCode().GetValue() > uint32(apimodel.Code_DataNoChange), - }) - }() // 兼容。如果请求中带了token,优先使用该token if in.GetService().GetToken().GetValue() != "" { @@ -176,6 +185,17 @@ func (g *DiscoverServer) Discover(server apiservice.PolarisGRPC_DiscoverServer) if err != nil { return err } + + plugin.GetStatis().ReportDiscoverCall(metrics.ClientDiscoverMetric{ + Action: action, + ClientIP: utils.ParseClientAddress(ctx), + Namespace: in.GetService().GetNamespace().GetValue(), + Resource: in.GetType().String() + ":" + in.GetService().GetName().GetValue(), + Timestamp: startTime, + CostTime: commontime.CurrentMillisecond() - startTime, + Revision: out.GetService().GetRevision().GetValue(), + Success: out.GetCode().GetValue() > uint32(apimodel.Code_DataNoChange), + }) } } From c006c895a60afc3173066cbfab81f970ce8cd7ca Mon Sep 17 00:00:00 2001 From: daihao4371 Date: Fri, 20 Jun 2025 16:11:12 +0800 Subject: [PATCH 2/2] fix(discover): only report statistics for normal responses --- .../grpcserver/discover/v1/client_access.go | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/apiserver/grpcserver/discover/v1/client_access.go b/apiserver/grpcserver/discover/v1/client_access.go index d91a676d9..f4b2178e5 100644 --- a/apiserver/grpcserver/discover/v1/client_access.go +++ b/apiserver/grpcserver/discover/v1/client_access.go @@ -116,17 +116,6 @@ func (g *DiscoverServer) Discover(server apiservice.PolarisGRPC_DiscoverServer) if sendErr := server.Send(resp); sendErr != nil { return sendErr } - // 上报失败调用 - plugin.GetStatis().ReportDiscoverCall(metrics.ClientDiscoverMetric{ - Action: "deny-access", - ClientIP: utils.ParseClientAddress(ctx), - Namespace: in.GetService().GetNamespace().GetValue(), - Resource: in.GetType().String() + ":" + in.GetService().GetName().GetValue(), - Timestamp: commontime.CurrentMillisecond(), - CostTime: 0, - Revision: "", - Success: false, - }) continue } @@ -136,16 +125,6 @@ func (g *DiscoverServer) Discover(server apiservice.PolarisGRPC_DiscoverServer) if err = server.Send(resp); err != nil { return err } - plugin.GetStatis().ReportDiscoverCall(metrics.ClientDiscoverMetric{ - Action: "rate-limit", - ClientIP: utils.ParseClientAddress(ctx), - Namespace: in.GetService().GetNamespace().GetValue(), - Resource: in.GetType().String() + ":" + in.GetService().GetName().GetValue(), - Timestamp: commontime.CurrentMillisecond(), - CostTime: 0, - Revision: "", - Success: false, - }) continue }