From 07851d1847a8cae4efbe2d1a78e0caa303ae2547 Mon Sep 17 00:00:00 2001 From: Simon Tucker Date: Fri, 5 Jun 2020 17:44:34 -0700 Subject: [PATCH 1/2] Include map details --- discoveryv2api.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/discoveryv2api.go b/discoveryv2api.go index d8462f39..40a61f9a 100644 --- a/discoveryv2api.go +++ b/discoveryv2api.go @@ -108,7 +108,7 @@ func (s *Server) Get(ctx context.Context, req *pb.GetRequest) (*pb.GetResponse, }() if s.getLoad > 50 { - s.RaiseIssue(ctx, "Overload", fmt.Sprintf("Discover on %v is recording %v get calls", s.Registry, s.getLoad), false) + s.RaiseIssue(ctx, "Overload", fmt.Sprintf("Discover on %v is recording %v get calls: %v", s.Registry, s.getLoad, s.getMap), false) } if s.getLoad > 100 { From f34e9078ff318aca52dd013c19f40fbe0f0f3bb0 Mon Sep 17 00:00:00 2001 From: Simon Tucker Date: Fri, 5 Jun 2020 17:52:31 -0700 Subject: [PATCH 2/2] Cheap hack --- discovery.go | 4 ++++ discoveryv2api.go | 16 +++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/discovery.go b/discovery.go index 6c53f4e2..cf30290f 100644 --- a/discovery.go +++ b/discovery.go @@ -83,6 +83,8 @@ type Server struct { getMap sync.Map countMap map[int]string getLoad int + getMapB map[string]int + mapLock *sync.Mutex } type httpGetter interface { @@ -138,6 +140,8 @@ func InitServer() *Server { s.lockNames = make(map[string]string) s.elector = &prodElector{dial: s.DoDial} s.countMap = make(map[int]string) + s.getMapB = make(map[string]int) + s.mapLock = &sync.Mutex{} return s } diff --git a/discoveryv2api.go b/discoveryv2api.go index 40a61f9a..8a5a7525 100644 --- a/discoveryv2api.go +++ b/discoveryv2api.go @@ -107,8 +107,22 @@ func (s *Server) Get(ctx context.Context, req *pb.GetRequest) (*pb.GetResponse, s.getLoad-- }() + jobName := "unknown" + if len(req.GetJob()) > 0 { + jobName = req.GetJob() + } + s.mapLock.Lock() + s.getMapB[jobName]++ + s.mapLock.Unlock() + + defer func() { + s.mapLock.Lock() + s.getMapB[jobName]-- + s.mapLock.Unlock() + }() + if s.getLoad > 50 { - s.RaiseIssue(ctx, "Overload", fmt.Sprintf("Discover on %v is recording %v get calls: %v", s.Registry, s.getLoad, s.getMap), false) + s.RaiseIssue(ctx, "Overload", fmt.Sprintf("Discover on %v is recording %v get calls: %v", s.Registry, s.getLoad, s.getMapB), false) } if s.getLoad > 100 {