diff --git a/apiserver/xdsserverv3/server.go b/apiserver/xdsserverv3/server.go index 703adafcb..192808e04 100644 --- a/apiserver/xdsserverv3/server.go +++ b/apiserver/xdsserverv3/server.go @@ -282,16 +282,14 @@ func (x *XDSServer) getRegistryInfoWithCache(ctx context.Context, registryInfo m } // 获取routing配置 - routeResp := x.namingServer.GetRoutingConfigWithCache(ctx, s) - if routeResp.GetCode().Value != api.ExecuteSuccess { - log.Errorf("error sync routing for %s, info : %s", svc.Name, routeResp.Info.GetValue()) + routerRule, err := x.namingServer.Cache().RoutingConfig().GetRouterConfigV2("", svc.Name, svc.Namespace) + if err != nil { + log.Errorf("error sync routing for %s, info : %s", svc.Name, err.Error()) return fmt.Errorf("[XDSV3] error sync routing for %s", svc.Name) } - if routeResp.Routing != nil { - svc.SvcRoutingRevision = routeResp.Routing.Revision.Value - svc.Routing = routeResp.Routing - } + svc.SvcRoutingRevision = routerRule.GetRevision().GetValue() + svc.Routing = routerRule // 获取instance配置 resp := x.namingServer.ServiceInstancesCache(ctx, s) diff --git a/cache/routing_config.go b/cache/routing_config.go index 39020cc81..b947f8486 100644 --- a/cache/routing_config.go +++ b/cache/routing_config.go @@ -50,6 +50,8 @@ type ( Cache // GetRouterConfig Obtain routing configuration based on serviceid GetRouterConfig(id, service, namespace string) (*apitraffic.Routing, error) + // GetRouterConfig Obtain routing configuration based on serviceid + GetRouterConfigV2(id, service, namespace string) (*apitraffic.Routing, error) // GetRoutingConfigCount Get the total number of routing configuration cache GetRoutingConfigCount() int // QueryRoutingConfigsV2 Query Route Configuration List @@ -147,8 +149,8 @@ func (rc *routingConfigCache) name() string { return RoutingConfigName } -// GetRouterConfig Obtain routing configuration based on serviceid -func (rc *routingConfigCache) GetRouterConfig(id, service, namespace string) (*apitraffic.Routing, error) { +// GetRouterConfigV2 Obtain routing configuration based on serviceid +func (rc *routingConfigCache) GetRouterConfigV2(id, service, namespace string) (*apitraffic.Routing, error) { if id == "" && service == "" && namespace == "" { return nil, nil } @@ -186,6 +188,16 @@ func (rc *routingConfigCache) GetRouterConfig(id, service, namespace string) (*a return formatRoutingResponseV1(resp), nil } +// GetRouterConfig Obtain routing configuration based on serviceid +func (rc *routingConfigCache) GetRouterConfig(id, service, namespace string) (*apitraffic.Routing, error) { + ret, err := rc.GetRouterConfigV2(id, service, namespace) + if err != nil { + return nil, err + } + ret.Rules = nil + return ret, nil +} + // formatRoutingResponseV1 Give the client's cache, no need to expose EXTENDINFO information data func formatRoutingResponseV1(ret *apitraffic.Routing) *apitraffic.Routing { inBounds := ret.Inbounds