@@ -2,7 +2,6 @@ package p2p
2
2
3
3
import (
4
4
"context"
5
- "errors"
6
5
"sync/atomic"
7
6
"time"
8
7
@@ -33,15 +32,14 @@ type exchangeMetrics struct {
33
32
34
33
trackerPeersNum atomic.Int64
35
34
trackedPeersNumInst metric.Int64ObservableGauge
36
- trackedPeersNumReg metric.Registration
37
35
38
36
disconnectedPeersNum atomic.Int64
39
37
disconnectedPeersNumInst metric.Int64ObservableGauge
40
- disconnectedPeersNumReg metric.Registration
41
38
42
39
blockedPeersNum atomic.Int64
43
40
blockedPeersNumInst metric.Int64ObservableGauge
44
- blockedPeersNumReg metric.Registration
41
+
42
+ clientReg metric.Registration
45
43
}
46
44
47
45
func newExchangeMetrics () (m * exchangeMetrics , err error ) {
@@ -74,35 +72,40 @@ func newExchangeMetrics() (m *exchangeMetrics, err error) {
74
72
if err != nil {
75
73
return nil , err
76
74
}
77
- m .trackedPeersNumReg , err = meter .RegisterCallback (m .observeTrackedPeers , m .trackedPeersNumInst )
78
- if err != nil {
79
- return nil , err
80
- }
81
75
m .disconnectedPeersNumInst , err = meter .Int64ObservableGauge (
82
76
"hdr_p2p_exch_clnt_disconn_peer_num_gauge" ,
83
77
metric .WithDescription ("exchange client tracked disconnected peers number" ),
84
78
)
85
79
if err != nil {
86
80
return nil , err
87
81
}
88
- m .disconnectedPeersNumReg , err = meter .RegisterCallback (m .observeDisconnectedPeers , m .disconnectedPeersNumInst )
89
- if err != nil {
90
- return nil , err
91
- }
92
82
m .blockedPeersNumInst , err = meter .Int64ObservableGauge (
93
83
"hdr_p2p_exch_clnt_block_peer_num_gauge" ,
94
84
metric .WithDescription ("exchange client blocked peers number" ),
95
85
)
96
86
if err != nil {
97
87
return nil , err
98
88
}
99
- m .blockedPeersNumReg , err = meter .RegisterCallback (m .observeBlockedPeers , m .blockedPeersNumInst )
89
+
90
+ m .clientReg , err = meter .RegisterCallback (
91
+ m .observeMetrics ,
92
+ m .trackedPeersNumInst ,
93
+ m .disconnectedPeersNumInst ,
94
+ m .blockedPeersNumInst ,
95
+ )
100
96
if err != nil {
101
97
return nil , err
102
98
}
103
99
return m , nil
104
100
}
105
101
102
+ func (m * exchangeMetrics ) observeMetrics (_ context.Context , obs metric.Observer ) error {
103
+ obs .ObserveInt64 (m .trackedPeersNumInst , m .trackerPeersNum .Load ())
104
+ obs .ObserveInt64 (m .disconnectedPeersNumInst , m .disconnectedPeersNum .Load ())
105
+ obs .ObserveInt64 (m .blockedPeersNumInst , m .blockedPeersNum .Load ())
106
+ return nil
107
+ }
108
+
106
109
func (m * exchangeMetrics ) head (ctx context.Context , duration time.Duration , headersReceived int , tp , status string ) {
107
110
m .observe (ctx , func (ctx context.Context ) {
108
111
m .headRequestTimeInst .Record (ctx ,
@@ -147,21 +150,6 @@ func (m *exchangeMetrics) peerBlocked() {
147
150
})
148
151
}
149
152
150
- func (m * exchangeMetrics ) observeTrackedPeers (_ context.Context , obs metric.Observer ) error {
151
- obs .ObserveInt64 (m .trackedPeersNumInst , m .trackerPeersNum .Load ())
152
- return nil
153
- }
154
-
155
- func (m * exchangeMetrics ) observeDisconnectedPeers (_ context.Context , obs metric.Observer ) error {
156
- obs .ObserveInt64 (m .disconnectedPeersNumInst , m .disconnectedPeersNum .Load ())
157
- return nil
158
- }
159
-
160
- func (m * exchangeMetrics ) observeBlockedPeers (_ context.Context , obs metric.Observer ) error {
161
- obs .ObserveInt64 (m .blockedPeersNumInst , m .blockedPeersNum .Load ())
162
- return nil
163
- }
164
-
165
153
func (m * exchangeMetrics ) observe (ctx context.Context , observeFn func (context.Context )) {
166
154
if m == nil {
167
155
return
@@ -177,8 +165,5 @@ func (m *exchangeMetrics) Close() (err error) {
177
165
if m == nil {
178
166
return nil
179
167
}
180
-
181
- err = errors .Join (err , m .trackedPeersNumReg .Unregister ())
182
- err = errors .Join (err , m .disconnectedPeersNumReg .Unregister ())
183
- return err
168
+ return m .clientReg .Unregister ()
184
169
}
0 commit comments