func beforeNamingHttpProxyCloseClient()

in pkg/rules/nacos/service/nacos_go_client_service_setup.go [42:65]


func beforeNamingHttpProxyCloseClient(call api.CallContext, proxy *naming_http.NamingHttpProxy) {
	if !experimental.NacosEnabler.Enable() {
		return
	}
	t := reflect.ValueOf(proxy)
	if t.Kind() == reflect.Ptr {
		t = t.Elem()
	} else {
		return
	}
	beatReactorField := t.FieldByName("beatReactor")
	if beatReactorField.IsValid() && beatReactorField.CanInterface() {
		beatReactorInterface := beatReactorField.Interface()
		beatReactor, ok := beatReactorInterface.(naming_http.BeatReactor)
		if ok {
			if reg, ok := beatReactor.OtelReg.(metric.Registration); ok {
				err := reg.Unregister()
				if err != nil {
					log.Printf("failed to unregister metrics for beat reactor, %v", err)
				}
			}
		}
	}
}