@@ -5,12 +5,8 @@ import (
55 "net/http"
66
77 "github.com/projecteru2/core/cluster"
8- enginefactory "github.com/projecteru2/core/engine/factory"
98 "github.com/projecteru2/core/log"
109 "github.com/projecteru2/core/types"
11- "github.com/prometheus/client_golang/prometheus"
12- promClient "github.com/prometheus/client_model/go"
13- "golang.org/x/exp/slices"
1410)
1511
1612// ResourceMiddleware to make sure update resource correct
@@ -24,42 +20,15 @@ func (m *Metrics) ResourceMiddleware(cluster cluster.Cluster) func(http.Handler)
2420 if err != nil {
2521 logger .Error (ctx , err , "Get all nodes err" )
2622 }
27- existNodenames := getExistNodenames ()
28- activeNodes := map [string ]* types.Node {}
2923 for node := range nodes {
3024 metrics , err := m .rmgr .GetNodeMetrics (ctx , node )
3125 if err != nil {
3226 logger .Error (ctx , err , "Get metrics failed" )
3327 continue
3428 }
35- activeNodes [node .Name ] = node
3629 m .SendMetrics (ctx , metrics ... )
3730 }
38- // refresh nodes
39- invalidNodenames := []string {}
40- for _ , nodename := range existNodenames {
41- if node := activeNodes [nodename ]; node != nil {
42- invalidNodenames = append (invalidNodenames , nodename )
43- enginefactory .RemoveEngineFromCache (ctx , node .Endpoint , node .Ca , node .Cert , node .Key )
44- }
45- }
46- m .RemoveInvalidNodes (invalidNodenames ... )
4731 h .ServeHTTP (w , r )
4832 })
4933 }
5034}
51-
52- func getExistNodenames () []string {
53- metrics , _ := prometheus .DefaultGatherer .Gather ()
54- nodenames := []string {}
55- for _ , metric := range metrics {
56- for _ , mf := range metric .GetMetric () {
57- if i := slices .IndexFunc (mf .Label , func (label * promClient.LabelPair ) bool {
58- return label .GetName () == "nodename"
59- }); i != - 1 {
60- nodenames = append (nodenames , mf .Label [i ].GetValue ())
61- }
62- }
63- }
64- return nodenames
65- }
0 commit comments