package directory import "github.com/rs/zerolog/log" func ValidateServices() { services := ListServiceInstance() if len(services) == 0 { return } checklist := make(map[string]bool) successCount := 0 log.Info().Int("count", len(services)).Msg("Validating services...") for _, service := range services { if _, ok := checklist[service.GrpcAddr]; ok { _ = RemoveServiceInstance(service.ID) log.Warn().Str("id", service.ID).Str("addr", service.GrpcAddr).Msg("Duplicated service address, dropped...") continue } // Directly use the connect method to skip cache if _, err := ConnectService(service); err != nil { _ = RemoveServiceInstance(service.ID) log.Warn().Err(err).Str("id", service.ID).Str("addr", service.GrpcAddr).Msg("Unable connect to service, dropped...") continue } successCount++ } log.Info(). Int("success", successCount). Int("failed", len(services)-successCount). Int("total", len(services)). Msg("Service validation completed.") }