@@ -156,7 +156,7 @@ func (m *muxConnectMananger) serverLoop(setting config.TCPServerSetting) error {
156156 m .logger .Info ("Accept new connection" , tag .NewStringTag ("remoteAddr" , conn .RemoteAddr ().String ()))
157157
158158 session , err := yamux .Server (conn , nil )
159- go observeYamuxSession (session , m .config )
159+ go observeYamuxSession (session , m .config , m . logger )
160160 if err != nil {
161161 m .logger .Fatal ("yamux.Server failed" , tag .Error (err ))
162162 }
@@ -218,7 +218,7 @@ func (m *muxConnectMananger) clientLoop(setting config.TCPClientSetting) error {
218218 }
219219
220220 session , err := yamux .Client (conn , nil )
221- go observeYamuxSession (session , m .config )
221+ go observeYamuxSession (session , m .config , m . logger )
222222 if err != nil {
223223 m .logger .Fatal ("yamux.Client failed" , tag .Error (err ))
224224 }
@@ -234,14 +234,15 @@ func (m *muxConnectMananger) clientLoop(setting config.TCPClientSetting) error {
234234
235235// observeYamuxSession creates a goroutine that pings the provided yamux session repeatedly and gathers its two
236236// metrics: Whether the server is alive and how many streams it has open.
237- func observeYamuxSession (session * yamux.Session , config config.MuxTransportConfig ) {
237+ func observeYamuxSession (session * yamux.Session , config config.MuxTransportConfig , logger log. Logger ) {
238238 if session == nil {
239239 // If we got a null session, we can't even generate tags to report
240240 return
241241 }
242242 defer func () {
243243 // This is an async monitor. Don't let it crash the rest of the program if there's a problem
244- recover ()
244+ err := recover ()
245+ logger .Warn ("Yamux observer died!" , tag .NewStringTag ("muxConfigName" , config .Name ), tag .NewAnyTag ("err" , err ))
245246 }()
246247 labels := []string {session .LocalAddr ().String (),
247248 session .RemoteAddr ().String (),
@@ -261,6 +262,7 @@ func observeYamuxSession(session *yamux.Session, config config.MuxTransportConfi
261262 }
262263 metrics .MuxSessionOpen .WithLabelValues (labels ... ).Set (float64 (sessionActive ))
263264 metrics .MuxStreamsActive .WithLabelValues (labels ... ).Set (float64 (session .NumStreams ()))
265+ metrics .MuxObserverReportCount .WithLabelValues (labels ... ).Inc ()
264266 }
265267}
266268
0 commit comments