From feadce1a9f3cba1c2c9d9b8e0d5c0c4151a358a7 Mon Sep 17 00:00:00 2001 From: sunhaidong Date: Fri, 22 Nov 2024 15:33:39 +0800 Subject: [PATCH] [fix] Add sync connection status --- syncer/rpc/server.go | 9 +++++---- syncer/service/admin/health.go | 12 +++++++++++- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/syncer/rpc/server.go b/syncer/rpc/server.go index dc6efee0e..83fc8f395 100644 --- a/syncer/rpc/server.go +++ b/syncer/rpc/server.go @@ -30,10 +30,11 @@ import ( ) const ( - HealthStatusConnected = "CONNECTED" - HealthStatusAbnormal = "ABNORMAL" - HealthStatusClose = "CLOSE" - HealthStatusAuthFail = "AuthFail" + HealthStatusConnected = "CONNECTED" + HealthStatusAbnormal = "ABNORMAL" + HealthStatusClose = "CLOSE" + HealthStatusAuthFail = "AuthFail" + HealthStatusPeerUnimplemented = "UNIMPLEMENTED" RbacAllowedAccountName = "sync-user" RbacAllowedRoleName = "sync-admin" diff --git a/syncer/service/admin/health.go b/syncer/service/admin/health.go index cdba73582..c47ae4204 100644 --- a/syncer/service/admin/health.go +++ b/syncer/service/admin/health.go @@ -25,7 +25,9 @@ import ( "github.com/go-chassis/go-chassis/v2/server/restful" "google.golang.org/grpc" + "google.golang.org/grpc/codes" "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" "github.com/apache/servicecomb-service-center/client" "github.com/apache/servicecomb-service-center/pkg/log" @@ -136,10 +138,18 @@ func getPeerStatus(peerInfo *PeerInfo) string { })) } reply, err := set.EventServiceClient.Health(ctx, &v1sync.HealthRequest{}) - if err != nil || reply == nil { + if err != nil { + if s, ok := status.FromError(err); ok && s.Code() == codes.Unimplemented { + log.Error("get peer health failed", err) + return rpc.HealthStatusPeerUnimplemented + } log.Error("get peer health failed", err) return rpc.HealthStatusAbnormal } + if reply == nil { + log.Error("get peer health failed, reply is nil, but no error", err) + return rpc.HealthStatusAbnormal + } reportClockDiff(peerInfo.Peer.Name, local, reply.LocalTimestamp) return reply.Status }