This is an automated email from the ASF dual-hosted git repository.

zhongxjian pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo-kubernetes.git


The following commit(s) were added to refs/heads/master by this push:
     new fff8ff37 chore: Replace envoy xds v3 with dubbo xds v1 (#875)
fff8ff37 is described below

commit fff8ff37177b2936334f1b693718275fa125c9a0
Author: Joe Zhong <[email protected]>
AuthorDate: Sun Mar 15 01:45:09 2026 +0800

    chore: Replace envoy xds v3 with dubbo xds v1 (#875)
---
 .github/workflows/ci.yml                           |  2 +-
 dubbod/discovery/pkg/bootstrap/discovery.go        | 20 +++----
 dubbod/discovery/pkg/networking/grpcgen/cds.go     |  6 +-
 dubbod/discovery/pkg/networking/grpcgen/grpcgen.go | 24 ++++----
 dubbod/discovery/pkg/networking/grpcgen/lds.go     | 50 ++++++++--------
 dubbod/discovery/pkg/xds/ads.go                    | 20 +++----
 dubbod/discovery/pkg/xds/delta.go                  | 14 ++---
 dubbod/discovery/pkg/xds/discovery.go              |  2 +-
 dubbod/discovery/pkg/xds/monitoring.go             | 12 ++--
 dubbod/discovery/pkg/xds/{v3 => v1}/model.go       |  2 +-
 dubbod/discovery/pkg/xds/xdsgen.go                 | 66 +++++++++++-----------
 pkg/adsc/adsc.go                                   | 30 +++++-----
 pkg/dubboagent/grpcxds/grpc_bootstrap.go           |  2 +-
 13 files changed, 125 insertions(+), 125 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index f6a68d5a..0eac1740 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -138,7 +138,7 @@ jobs:
         uses: actions/checkout@v4
 
       - name: Install Helm
-        uses: azure/setup-helm@v3
+        uses: azure/setup-helm@v1
         with:
           version: '3.13.0'
 
diff --git a/dubbod/discovery/pkg/bootstrap/discovery.go 
b/dubbod/discovery/pkg/bootstrap/discovery.go
index 1aface2c..2e52cc48 100644
--- a/dubbod/discovery/pkg/bootstrap/discovery.go
+++ b/dubbod/discovery/pkg/bootstrap/discovery.go
@@ -22,7 +22,7 @@ import (
        
"github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/networking/core"
        
"github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/networking/grpcgen"
        "github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/xds"
-       v3 "github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/xds/v3"
+       v1 "github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/xds/v1"
 )
 
 func InitGenerators(
@@ -32,19 +32,19 @@ func InitGenerators(
        env := s.Env
        generators := map[string]model.XdsResourceGenerator{}
        edsGen := &xds.EdsGenerator{Cache: s.Cache, EndpointIndex: 
env.EndpointIndex}
-       generators[v3.ClusterType] = &xds.CdsGenerator{ConfigGenerator: cg}
-       generators[v3.ListenerType] = &xds.LdsGenerator{ConfigGenerator: cg}
-       generators[v3.RouteType] = &xds.RdsGenerator{ConfigGenerator: cg}
-       generators[v3.EndpointType] = edsGen
+       generators[v1.ClusterType] = &xds.CdsGenerator{ConfigGenerator: cg}
+       generators[v1.ListenerType] = &xds.LdsGenerator{ConfigGenerator: cg}
+       generators[v1.RouteType] = &xds.RdsGenerator{ConfigGenerator: cg}
+       generators[v1.EndpointType] = edsGen
 
        generators["grpc"] = &grpcgen.GrpcConfigGenerator{}
-       generators["grpc/"+v3.EndpointType] = edsGen
-       generators["grpc/"+v3.ListenerType] = generators["grpc"]
-       generators["grpc/"+v3.RouteType] = generators["grpc"]
-       generators["grpc/"+v3.ClusterType] = generators["grpc"]
+       generators["grpc/"+v1.EndpointType] = edsGen
+       generators["grpc/"+v1.ListenerType] = generators["grpc"]
+       generators["grpc/"+v1.RouteType] = generators["grpc"]
+       generators["grpc/"+v1.ClusterType] = generators["grpc"]
 
        generators["api"] = apigen.NewGenerator(env.ConfigStore)
-       generators["api/"+v3.EndpointType] = edsGen
+       generators["api/"+v1.EndpointType] = edsGen
 
        generators["event"] = xds.NewStatusGen(s)
        s.Generators = generators
diff --git a/dubbod/discovery/pkg/networking/grpcgen/cds.go 
b/dubbod/discovery/pkg/networking/grpcgen/cds.go
index f2c0b0c8..096bc5cc 100644
--- a/dubbod/discovery/pkg/networking/grpcgen/cds.go
+++ b/dubbod/discovery/pkg/networking/grpcgen/cds.go
@@ -30,7 +30,7 @@ import (
        "github.com/apache/dubbo-kubernetes/pkg/util/sets"
        cluster "github.com/dubbo-kubernetes/xds-api/cluster/v1"
        core "github.com/dubbo-kubernetes/xds-api/core/v1"
-       tlsv3 
"github.com/dubbo-kubernetes/xds-api/extensions/transport_sockets/tls/v1"
+       tlsv1 
"github.com/dubbo-kubernetes/xds-api/extensions/transport_sockets/tls/v1"
 )
 
 type clusterBuilder struct {
@@ -393,13 +393,13 @@ func (b *clusterBuilder) applyTLSForCluster(c 
*cluster.Cluster, subset *networki
 
 // buildUpstreamTLSContext builds an UpstreamTlsContext that conforms to gRPC 
xDS expectations,
 // reusing the common certificate-provider setup from buildCommonTLSContext.
-func (b *clusterBuilder) buildUpstreamTLSContext(c *cluster.Cluster, 
tlsSettings *networking.ClientTLSSettings) *tlsv3.UpstreamTlsContext {
+func (b *clusterBuilder) buildUpstreamTLSContext(c *cluster.Cluster, 
tlsSettings *networking.ClientTLSSettings) *tlsv1.UpstreamTlsContext {
        common := buildCommonTLSContext()
        if common == nil {
                return nil
        }
 
-       tlsContext := &tlsv3.UpstreamTlsContext{
+       tlsContext := &tlsv1.UpstreamTlsContext{
                CommonTlsContext: common,
        }
        // SNI must be the service hostname, not the cluster name
diff --git a/dubbod/discovery/pkg/networking/grpcgen/grpcgen.go 
b/dubbod/discovery/pkg/networking/grpcgen/grpcgen.go
index 654ce15b..47d0419c 100644
--- a/dubbod/discovery/pkg/networking/grpcgen/grpcgen.go
+++ b/dubbod/discovery/pkg/networking/grpcgen/grpcgen.go
@@ -18,9 +18,9 @@ package grpcgen
 
 import (
        "github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/model"
-       v3 "github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/xds/v3"
+       v1 "github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/xds/v1"
        dubbolog "github.com/apache/dubbo-kubernetes/pkg/log"
-       tlsv3 
"github.com/dubbo-kubernetes/xds-api/extensions/transport_sockets/tls/v1"
+       tlsv1 
"github.com/dubbo-kubernetes/xds-api/extensions/transport_sockets/tls/v1"
 )
 
 var log = dubbolog.RegisterScope("grpcgen", "xDS Generator for Proxyless gRPC")
@@ -37,14 +37,14 @@ func (g *GrpcConfigGenerator) Generate(proxy *model.Proxy, 
w *model.WatchedResou
        }
 
        switch w.TypeUrl {
-       case v3.ListenerType:
+       case v1.ListenerType:
                // Pass requested names to BuildListeners to ensure consistent 
behavior
                // When requestedNames is empty (wildcard), BuildListeners 
generates all listeners
                // When requestedNames is non-empty, BuildListeners only 
generates requested listeners
                return g.BuildListeners(proxy, req.Push, requestedNames), 
model.DefaultXdsLogDetails, nil
-       case v3.ClusterType:
+       case v1.ClusterType:
                return g.BuildClusters(proxy, req.Push, requestedNames), 
model.DefaultXdsLogDetails, nil
-       case v3.RouteType:
+       case v1.RouteType:
                resources, logDetails := g.BuildHTTPRoutes(proxy, req, 
requestedNames)
                return resources, logDetails, nil
        }
@@ -55,17 +55,17 @@ func (g *GrpcConfigGenerator) Generate(proxy *model.Proxy, 
w *model.WatchedResou
 // buildCommonTLSContext creates a TLS context that matches gRPC xDS 
expectations.
 // - Uses certificate provider "default" for workload certs and root CA
 // - Does not configure explicit SAN matches (left to future hardening)
-func buildCommonTLSContext() *tlsv3.CommonTlsContext {
-       return &tlsv3.CommonTlsContext{
+func buildCommonTLSContext() *tlsv1.CommonTlsContext {
+       return &tlsv1.CommonTlsContext{
                // Workload certificate provider instance (SPIFFE workload cert 
chain)
-               TlsCertificateCertificateProviderInstance: 
&tlsv3.CommonTlsContext_CertificateProviderInstance{
+               TlsCertificateCertificateProviderInstance: 
&tlsv1.CommonTlsContext_CertificateProviderInstance{
                        InstanceName:    "default",
                        CertificateName: "default",
                },
                // Root CA provider instance
-               ValidationContextType: 
&tlsv3.CommonTlsContext_CombinedValidationContext{
-                       CombinedValidationContext: 
&tlsv3.CommonTlsContext_CombinedCertificateValidationContext{
-                               ValidationContextCertificateProviderInstance: 
&tlsv3.CommonTlsContext_CertificateProviderInstance{
+               ValidationContextType: 
&tlsv1.CommonTlsContext_CombinedValidationContext{
+                       CombinedValidationContext: 
&tlsv1.CommonTlsContext_CombinedCertificateValidationContext{
+                               ValidationContextCertificateProviderInstance: 
&tlsv1.CommonTlsContext_CertificateProviderInstance{
                                        InstanceName:    "default",
                                        CertificateName: "ROOTCA",
                                },
@@ -73,7 +73,7 @@ func buildCommonTLSContext() *tlsv3.CommonTlsContext {
                                // The certificate provider instance (ROOTCA) 
provides the root CA for validation
                                // For gRPC proxyless, we rely on the 
certificate provider for root CA validation
                                // SAN matching can be added later if needed 
for stricter validation
-                               DefaultValidationContext: 
&tlsv3.CertificateValidationContext{
+                               DefaultValidationContext: 
&tlsv1.CertificateValidationContext{
                                        // Trust the root CA from the 
certificate provider
                                        // The certificate provider instance 
"default" with "ROOTCA" will provide
                                        // the root CA certificates for 
validating peer certificates
diff --git a/dubbod/discovery/pkg/networking/grpcgen/lds.go 
b/dubbod/discovery/pkg/networking/grpcgen/lds.go
index 63567228..3361ae26 100644
--- a/dubbod/discovery/pkg/networking/grpcgen/lds.go
+++ b/dubbod/discovery/pkg/networking/grpcgen/lds.go
@@ -30,9 +30,9 @@ import (
        "github.com/apache/dubbo-kubernetes/pkg/util/sets"
        "github.com/apache/dubbo-kubernetes/pkg/wellknown"
        core "github.com/dubbo-kubernetes/xds-api/core/v1"
-       routerv3 
"github.com/dubbo-kubernetes/xds-api/extensions/filters/v1/http/router"
-       hcmv3 
"github.com/dubbo-kubernetes/xds-api/extensions/filters/v1/network/http_connection_manager"
-       tlsv3 
"github.com/dubbo-kubernetes/xds-api/extensions/transport_sockets/tls/v1"
+       routerv1 
"github.com/dubbo-kubernetes/xds-api/extensions/filters/v1/http/router"
+       hcmv1 
"github.com/dubbo-kubernetes/xds-api/extensions/filters/v1/network/http_connection_manager"
+       tlsv1 
"github.com/dubbo-kubernetes/xds-api/extensions/transport_sockets/tls/v1"
        listener "github.com/dubbo-kubernetes/xds-api/listener/v1"
        route "github.com/dubbo-kubernetes/xds-api/route/v1"
        discovery "github.com/dubbo-kubernetes/xds-api/service/discovery/v1"
@@ -213,7 +213,7 @@ func buildInboundListeners(node *model.Proxy, push 
*model.PushContext, names []s
                // "missing HttpConnectionManager filter", gRPC proxyless 
clients require HttpConnectionManager
                // in the FilterChain for inbound listeners.
                routeName := fmt.Sprintf("%d", listenPort)
-               var hcm *hcmv3.HttpConnectionManager
+               var hcm *hcmv1.HttpConnectionManager
 
                // For Gateway Pods (router type), use RDS to get route 
configuration from HTTPRoute
                // This allows Gateway to route external traffic to backend 
services based on HTTPRoute rules
@@ -223,11 +223,11 @@ func buildInboundListeners(node *model.Proxy, push 
*model.PushContext, names []s
                        }
                        log.Infof(" Gateway Pod (router) using RDS for listener 
%s, routeName=%s, node.ID=%s, node.Type=%v, service=%s", name, routeName, 
node.ID, node.Type, si.Service.Attributes.Name)
                        // Gateway Pods need RDS to route traffic based on 
HTTPRoute
-                       hcm = &hcmv3.HttpConnectionManager{
-                               CodecType:  hcmv3.HttpConnectionManager_AUTO,
+                       hcm = &hcmv1.HttpConnectionManager{
+                               CodecType:  hcmv1.HttpConnectionManager_AUTO,
                                StatPrefix: fmt.Sprintf("inbound_%d", 
listenPort),
-                               RouteSpecifier: 
&hcmv3.HttpConnectionManager_Rds{
-                                       Rds: &hcmv3.Rds{
+                               RouteSpecifier: 
&hcmv1.HttpConnectionManager_Rds{
+                                       Rds: &hcmv1.Rds{
                                                ConfigSource: 
&core.ConfigSource{
                                                        ConfigSourceSpecifier: 
&core.ConfigSource_Ads{
                                                                Ads: 
&core.AggregatedConfigSource{},
@@ -236,11 +236,11 @@ func buildInboundListeners(node *model.Proxy, push 
*model.PushContext, names []s
                                                RouteConfigName: routeName,
                                        },
                                },
-                               HttpFilters: []*hcmv3.HttpFilter{
+                               HttpFilters: []*hcmv1.HttpFilter{
                                        {
                                                Name: "filters.http.router",
-                                               ConfigType: 
&hcmv3.HttpFilter_TypedConfig{
-                                                       TypedConfig: 
protoconv.MessageToAny(&routerv3.Router{}),
+                                               ConfigType: 
&hcmv1.HttpFilter_TypedConfig{
+                                                       TypedConfig: 
protoconv.MessageToAny(&routerv1.Router{}),
                                                },
                                        },
                                },
@@ -250,10 +250,10 @@ func buildInboundListeners(node *model.Proxy, push 
*model.PushContext, names []s
                        // For regular service Pods, use inline RouteConfig 
with NonForwardingAction
                        // Use inline RouteConfig instead of RDS to avoid 
triggering additional RDS requests that cause push loops
                        // For proxyless gRPC, inline configuration is 
preferred to minimize round-trips
-                       hcm = &hcmv3.HttpConnectionManager{
-                               CodecType:  hcmv3.HttpConnectionManager_AUTO,
+                       hcm = &hcmv1.HttpConnectionManager{
+                               CodecType:  hcmv1.HttpConnectionManager_AUTO,
                                StatPrefix: fmt.Sprintf("inbound_%d", 
listenPort),
-                               RouteSpecifier: 
&hcmv3.HttpConnectionManager_RouteConfig{
+                               RouteSpecifier: 
&hcmv1.HttpConnectionManager_RouteConfig{
                                        RouteConfig: &route.RouteConfiguration{
                                                Name: routeName,
                                                VirtualHosts: 
[]*route.VirtualHost{
@@ -274,11 +274,11 @@ func buildInboundListeners(node *model.Proxy, push 
*model.PushContext, names []s
                                                },
                                        },
                                },
-                               HttpFilters: []*hcmv3.HttpFilter{
+                               HttpFilters: []*hcmv1.HttpFilter{
                                        {
                                                Name: "filters.http.router",
-                                               ConfigType: 
&hcmv3.HttpFilter_TypedConfig{
-                                                       TypedConfig: 
protoconv.MessageToAny(&routerv3.Router{}),
+                                               ConfigType: 
&hcmv1.HttpFilter_TypedConfig{
+                                                       TypedConfig: 
protoconv.MessageToAny(&routerv1.Router{}),
                                                },
                                        },
                                },
@@ -359,7 +359,7 @@ func buildDownstreamTransportSocket(mode 
model.MutualTLSMode) *core.TransportSoc
        // For STRICT mTLS, we require client certificates and validate them
        // The validation context is already configured in buildCommonTLSContext
        // via the certificate provider instance (ROOTCA)
-       tlsContext := &tlsv3.DownstreamTlsContext{
+       tlsContext := &tlsv1.DownstreamTlsContext{
                CommonTlsContext:         common,
                RequireClientCertificate: wrapperspb.Bool(true),
                // Note: gRPC proxyless uses certificate provider for validation
@@ -516,11 +516,11 @@ func buildOutboundListeners(node *model.Proxy, push 
*model.PushContext, filter l
                        // For gRPC proxyless, outbound listeners MUST use 
ApiListener with RDS
                        // This is the correct pattern used by Dubbo for gRPC 
xDS clients
                        // Using FilterChain with inline RouteConfig causes the 
gRPC client to remain in IDLE state
-                       hcm := &hcmv3.HttpConnectionManager{
-                               CodecType:  hcmv3.HttpConnectionManager_AUTO,
+                       hcm := &hcmv1.HttpConnectionManager{
+                               CodecType:  hcmv1.HttpConnectionManager_AUTO,
                                StatPrefix: fmt.Sprintf("outbound_%d_%s", port, 
svc.Attributes.Name),
-                               RouteSpecifier: 
&hcmv3.HttpConnectionManager_Rds{
-                                       Rds: &hcmv3.Rds{
+                               RouteSpecifier: 
&hcmv1.HttpConnectionManager_Rds{
+                                       Rds: &hcmv1.Rds{
                                                ConfigSource: 
&core.ConfigSource{
                                                        ConfigSourceSpecifier: 
&core.ConfigSource_Ads{
                                                                Ads: 
&core.AggregatedConfigSource{},
@@ -529,11 +529,11 @@ func buildOutboundListeners(node *model.Proxy, push 
*model.PushContext, filter l
                                                RouteConfigName: routeName,
                                        },
                                },
-                               HttpFilters: []*hcmv3.HttpFilter{
+                               HttpFilters: []*hcmv1.HttpFilter{
                                        {
                                                Name: "filters.http.router",
-                                               ConfigType: 
&hcmv3.HttpFilter_TypedConfig{
-                                                       TypedConfig: 
protoconv.MessageToAny(&routerv3.Router{}),
+                                               ConfigType: 
&hcmv1.HttpFilter_TypedConfig{
+                                                       TypedConfig: 
protoconv.MessageToAny(&routerv1.Router{}),
                                                },
                                        },
                                },
diff --git a/dubbod/discovery/pkg/xds/ads.go b/dubbod/discovery/pkg/xds/ads.go
index 48665a4a..82881ea9 100644
--- a/dubbod/discovery/pkg/xds/ads.go
+++ b/dubbod/discovery/pkg/xds/ads.go
@@ -26,7 +26,7 @@ import (
        "github.com/apache/dubbo-kubernetes/pkg/maps"
 
        "github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/model"
-       v3 "github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/xds/v3"
+       v1 "github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/xds/v1"
        "github.com/apache/dubbo-kubernetes/pkg/util/sets"
        "github.com/apache/dubbo-kubernetes/pkg/xds"
        core "github.com/dubbo-kubernetes/xds-api/core/v1"
@@ -323,8 +323,8 @@ func (s *DiscoveryServer) pushConnection(con *Connection, 
pushEv *Event) error {
 }
 
 func (s *DiscoveryServer) processRequest(req *discovery.DiscoveryRequest, con 
*Connection) error {
-       stype := v3.GetShortType(req.TypeUrl)
-       if req.TypeUrl == v3.HealthInfoType {
+       stype := v1.GetShortType(req.TypeUrl)
+       if req.TypeUrl == v1.HealthInfoType {
                return nil
        }
 
@@ -414,11 +414,11 @@ func (s *DiscoveryServer) processRequest(req 
*discovery.DiscoveryRequest, con *C
 }
 
 func (s *DiscoveryServer) processDeltaRequest(req 
*discovery.DeltaDiscoveryRequest, con *Connection) error {
-       stype := v3.GetShortType(req.TypeUrl)
+       stype := v1.GetShortType(req.TypeUrl)
        deltaLog.Infof("%s: REQ %s resources sub:%d unsub:%d nonce:%s", stype,
                con.ID(), len(req.ResourceNamesSubscribe), 
len(req.ResourceNamesUnsubscribe), req.ResponseNonce)
 
-       if req.TypeUrl == v3.HealthInfoType {
+       if req.TypeUrl == v1.HealthInfoType {
                return nil
        }
 
@@ -444,7 +444,7 @@ func (s *DiscoveryServer) processDeltaRequest(req 
*discovery.DeltaDiscoveryReque
        if err != nil {
                return err
        }
-       if req.TypeUrl != v3.ClusterType {
+       if req.TypeUrl != v1.ClusterType {
                return nil
        }
        return s.forceEDSPush(con)
@@ -465,10 +465,10 @@ func newDeltaConnection(peerAddr string, stream 
DeltaDiscoveryStream) *Connectio
 }
 
 var PushOrder = []string{
-       v3.ClusterType,
-       v3.EndpointType,
-       v3.ListenerType,
-       v3.RouteType,
+       v1.ClusterType,
+       v1.EndpointType,
+       v1.ListenerType,
+       v1.RouteType,
 }
 
 var KnownOrderedTypeUrls = sets.New(PushOrder...)
diff --git a/dubbod/discovery/pkg/xds/delta.go 
b/dubbod/discovery/pkg/xds/delta.go
index ceb4e46a..480ba9c9 100644
--- a/dubbod/discovery/pkg/xds/delta.go
+++ b/dubbod/discovery/pkg/xds/delta.go
@@ -23,7 +23,7 @@ import (
 
        dubbogrpc "github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/grpc"
        "github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/model"
-       v3 "github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/xds/v3"
+       v1 "github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/xds/v1"
        "github.com/apache/dubbo-kubernetes/pkg/util/sets"
        discovery "github.com/dubbo-kubernetes/xds-api/service/discovery/v1"
        "github.com/google/uuid"
@@ -35,7 +35,7 @@ import (
 var deltaLog = dubbolog.RegisterScope("delta", "delta xds debugging")
 
 func (s *DiscoveryServer) forceEDSPush(con *Connection) error {
-       if dwr := con.proxy.GetWatchedResource(v3.EndpointType); dwr != nil {
+       if dwr := con.proxy.GetWatchedResource(v1.EndpointType); dwr != nil {
                request := &model.PushRequest{
                        Full:   true,
                        Push:   con.proxy.LastPushContext,
@@ -43,7 +43,7 @@ func (s *DiscoveryServer) forceEDSPush(con *Connection) error 
{
                        Start:  con.proxy.LastPushTime,
                        Forced: true,
                }
-               deltaLog.Infof("%s: FORCE %s PUSH for warming.", 
v3.GetShortType(v3.EndpointType), con.ID())
+               deltaLog.Infof("%s: FORCE %s PUSH for warming.", 
v1.GetShortType(v1.EndpointType), con.ID())
                return s.pushDeltaXds(con, dwr, request)
        }
        return nil
@@ -138,7 +138,7 @@ func (s *DiscoveryServer) receiveDelta(con *Connection, 
identities []string) {
                        return
                }
                if firstRequest {
-                       if req.TypeUrl == v3.HealthInfoType {
+                       if req.TypeUrl == v1.HealthInfoType {
                                deltaLog.Warnf("%q %s send health check probe 
before normal xDS request", con.Peer(), con.ID())
                                continue
                        }
@@ -164,7 +164,7 @@ func (s *DiscoveryServer) receiveDelta(con *Connection, 
identities []string) {
                        unsubscribeStr = " unsubscribe:[" + 
strings.Join(req.ResourceNamesUnsubscribe, ", ") + "]"
                }
                deltaLog.Infof("%s: RAW DELTA REQ %s sub:%d%s nonce:%s%s",
-                       v3.GetShortType(req.TypeUrl), con.ID(), 
len(req.ResourceNamesSubscribe), subscribeStr,
+                       v1.GetShortType(req.TypeUrl), con.ID(), 
len(req.ResourceNamesSubscribe), subscribeStr,
                        req.ResponseNonce, unsubscribeStr)
 
                select {
@@ -254,7 +254,7 @@ func deltaWatchedResources(existing sets.String, request 
*discovery.DeltaDiscove
 }
 
 func shouldRespondDelta(con *Connection, request 
*discovery.DeltaDiscoveryRequest) bool {
-       stype := v3.GetShortType(request.TypeUrl)
+       stype := v1.GetShortType(request.TypeUrl)
 
        if request.ErrorDetail != nil {
                errCode := codes.Code(request.ErrorDetail.Code)
@@ -336,7 +336,7 @@ func (conn *Connection) sendDelta(res 
*discovery.DeltaDiscoveryResponse, newReso
        }
        err := sendResonse()
        if status.Convert(err).Code() == codes.DeadlineExceeded {
-               deltaLog.Infof("Timeout writing %s: %v", conn.ID(), 
v3.GetShortType(res.TypeUrl))
+               deltaLog.Infof("Timeout writing %s: %v", conn.ID(), 
v1.GetShortType(res.TypeUrl))
        }
        return err
 }
diff --git a/dubbod/discovery/pkg/xds/discovery.go 
b/dubbod/discovery/pkg/xds/discovery.go
index 3ea4afc5..e95f4095 100644
--- a/dubbod/discovery/pkg/xds/discovery.go
+++ b/dubbod/discovery/pkg/xds/discovery.go
@@ -99,7 +99,7 @@ func NewDiscoveryServer(env *model.Environment, 
clusterAliases map[string]string
 }
 
 func (s *DiscoveryServer) Register(rpcs *grpc.Server) {
-       // Register v3 server
+       // Register v1 server
        discovery.RegisterAggregatedDiscoveryServiceServer(rpcs, s)
 }
 
diff --git a/dubbod/discovery/pkg/xds/monitoring.go 
b/dubbod/discovery/pkg/xds/monitoring.go
index 732880b4..6163698e 100644
--- a/dubbod/discovery/pkg/xds/monitoring.go
+++ b/dubbod/discovery/pkg/xds/monitoring.go
@@ -24,7 +24,7 @@ import (
        "google.golang.org/grpc/status"
 
        "github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/model"
-       v3 "github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/xds/v3"
+       v1 "github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/xds/v1"
        "github.com/apache/dubbo-kubernetes/pkg/monitoring"
 )
 
@@ -140,13 +140,13 @@ func isUnexpectedError(err error) bool {
 func recordSendError(xdsType string, err error) bool {
        if isUnexpectedError(err) {
                switch xdsType {
-               case v3.ListenerType:
+               case v1.ListenerType:
                        ldsSendErrPushes.Increment()
-               case v3.ClusterType:
+               case v1.ClusterType:
                        cdsSendErrPushes.Increment()
-               case v3.EndpointType:
+               case v1.EndpointType:
                        edsSendErrPushes.Increment()
-               case v3.RouteType:
+               case v1.RouteType:
                        rdsSendErrPushes.Increment()
                }
                return true
@@ -155,7 +155,7 @@ func recordSendError(xdsType string, err error) bool {
 }
 
 func recordPushTime(xdsType string, duration time.Duration) {
-       metricType := v3.GetMetricType(xdsType)
+       metricType := v1.GetMetricType(xdsType)
        pushTime.With(typeTag.Value(metricType)).Record(duration.Seconds())
        pushes.With(typeTag.Value(metricType)).Increment()
 }
diff --git a/dubbod/discovery/pkg/xds/v3/model.go 
b/dubbod/discovery/pkg/xds/v1/model.go
similarity index 99%
rename from dubbod/discovery/pkg/xds/v3/model.go
rename to dubbod/discovery/pkg/xds/v1/model.go
index e0ad5748..fcc5068d 100644
--- a/dubbod/discovery/pkg/xds/v3/model.go
+++ b/dubbod/discovery/pkg/xds/v1/model.go
@@ -14,7 +14,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package v3
+package v1
 
 import "github.com/apache/dubbo-kubernetes/pkg/model"
 
diff --git a/dubbod/discovery/pkg/xds/xdsgen.go 
b/dubbod/discovery/pkg/xds/xdsgen.go
index c6e456b9..1ec5fa02 100644
--- a/dubbod/discovery/pkg/xds/xdsgen.go
+++ b/dubbod/discovery/pkg/xds/xdsgen.go
@@ -24,7 +24,7 @@ import (
 
        "github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/model"
        
"github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/networking/util"
-       v3 "github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/xds/v3"
+       v1 "github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/xds/v1"
        "github.com/apache/dubbo-kubernetes/pkg/config/host"
        "github.com/apache/dubbo-kubernetes/pkg/env"
        "github.com/apache/dubbo-kubernetes/pkg/lazy"
@@ -33,7 +33,7 @@ import (
        "github.com/apache/dubbo-kubernetes/pkg/xds"
        cluster "github.com/dubbo-kubernetes/xds-api/cluster/v1"
        core "github.com/dubbo-kubernetes/xds-api/core/v1"
-       hcmv3 
"github.com/dubbo-kubernetes/xds-api/extensions/filters/v1/network/http_connection_manager"
+       hcmv1 
"github.com/dubbo-kubernetes/xds-api/extensions/filters/v1/network/http_connection_manager"
        listener "github.com/dubbo-kubernetes/xds-api/listener/v1"
        discovery "github.com/dubbo-kubernetes/xds-api/service/discovery/v1"
 )
@@ -95,9 +95,9 @@ func (s *DiscoveryServer) pushXds(con *Connection, w 
*model.WatchedResource, req
                        // Initial wildcard request - need to extract resource 
names from parent resources
                        // For CDS: extract cluster names from LDS
                        // For EDS: extract cluster names from CDS
-                       if w.TypeUrl == v3.ClusterType {
+                       if w.TypeUrl == v1.ClusterType {
                                // Extract cluster names from LDS response
-                               ldsWatched := 
con.proxy.GetWatchedResource(v3.ListenerType)
+                               ldsWatched := 
con.proxy.GetWatchedResource(v1.ListenerType)
                                if ldsWatched != nil && ldsWatched.NonceSent != 
"" {
                                        // LDS has been sent, extract cluster 
names from it
                                        // We need to regenerate LDS to extract 
cluster names, or store them
@@ -111,7 +111,7 @@ func (s *DiscoveryServer) pushXds(con *Connection, w 
*model.WatchedResource, req
                                                Start:  con.proxy.LastPushTime,
                                                Forced: false,
                                        }
-                                       ldsGen := 
s.findGenerator(v3.ListenerType, con)
+                                       ldsGen := 
s.findGenerator(v1.ListenerType, con)
                                        if ldsGen != nil {
                                                ldsRes, _, _ := 
ldsGen.Generate(con.proxy, ldsWatched, ldsReq)
                                                if len(ldsRes) > 0 {
@@ -125,9 +125,9 @@ func (s *DiscoveryServer) pushXds(con *Connection, w 
*model.WatchedResource, req
                                                }
                                        }
                                }
-                       } else if w.TypeUrl == v3.EndpointType {
+                       } else if w.TypeUrl == v1.EndpointType {
                                // Extract cluster names from CDS response
-                               cdsWatched := 
con.proxy.GetWatchedResource(v3.ClusterType)
+                               cdsWatched := 
con.proxy.GetWatchedResource(v1.ClusterType)
                                if cdsWatched != nil && cdsWatched.NonceSent != 
"" {
                                        // CDS has been sent, extract EDS 
cluster names from it
                                        log.Debugf("EDS wildcard request, 
extracting cluster names from CDS")
@@ -139,7 +139,7 @@ func (s *DiscoveryServer) pushXds(con *Connection, w 
*model.WatchedResource, req
                                                Start:  con.proxy.LastPushTime,
                                                Forced: false,
                                        }
-                                       cdsGen := 
s.findGenerator(v3.ClusterType, con)
+                                       cdsGen := 
s.findGenerator(v1.ClusterType, con)
                                        if cdsGen != nil {
                                                cdsRes, _, _ := 
cdsGen.Generate(con.proxy, cdsWatched, cdsReq)
                                                if len(cdsRes) > 0 {
@@ -153,11 +153,11 @@ func (s *DiscoveryServer) pushXds(con *Connection, w 
*model.WatchedResource, req
                                                }
                                        }
                                }
-                       } else if w.TypeUrl == v3.RouteType {
+                       } else if w.TypeUrl == v1.RouteType {
                                // Extract route names from LDS response for 
RDS wildcard requests
                                // RDS is not a wildcard type, so when client 
sends empty ResourceNames,
                                // we need to extract route names from LDS 
listeners that reference RDS
-                               ldsWatched := 
con.proxy.GetWatchedResource(v3.ListenerType)
+                               ldsWatched := 
con.proxy.GetWatchedResource(v1.ListenerType)
                                if ldsWatched != nil && ldsWatched.NonceSent != 
"" {
                                        // LDS has been sent, extract route 
names from it
                                        log.Debugf("RDS wildcard request, 
extracting route names from LDS")
@@ -169,7 +169,7 @@ func (s *DiscoveryServer) pushXds(con *Connection, w 
*model.WatchedResource, req
                                                Start:  con.proxy.LastPushTime,
                                                Forced: false,
                                        }
-                                       ldsGen := 
s.findGenerator(v3.ListenerType, con)
+                                       ldsGen := 
s.findGenerator(v1.ListenerType, con)
                                        if ldsGen != nil {
                                                ldsRes, _, _ := 
ldsGen.Generate(con.proxy, ldsWatched, ldsReq)
                                                if len(ldsRes) > 0 {
@@ -353,7 +353,7 @@ func (s *DiscoveryServer) pushXds(con *Connection, w 
*model.WatchedResource, req
                } else {
                        resourceNamesStr = " [empty]"
                }
-               log.Infof("%s: %s for node:%s resources:%d size:%s%s%s", 
v3.GetShortType(w.TypeUrl), ptype, con.proxy.ID, len(res),
+               log.Infof("%s: %s for node:%s resources:%d size:%s%s%s", 
v1.GetShortType(w.TypeUrl), ptype, con.proxy.ID, len(res),
                        util.ByteCount(ResourceSize(res)), info, 
resourceNamesStr)
        }
 
@@ -361,7 +361,7 @@ func (s *DiscoveryServer) pushXds(con *Connection, w 
*model.WatchedResource, req
        // automatically trigger CDS and RDS push for the referenced clusters 
and routes
        // ONLY if this is a direct request push (not a push from 
pushConnection which would cause loops)
        // Only auto-push if CDS/RDS is not already being watched by the client 
(client will request it naturally)
-       if w.TypeUrl == v3.ListenerType && con.proxy.IsProxylessGrpc() && 
len(res) > 0 {
+       if w.TypeUrl == v1.ListenerType && con.proxy.IsProxylessGrpc() && 
len(res) > 0 {
                // Only auto-push CDS/RDS if this is a direct request (not a 
full push from pushConnection)
                // Check if this push was triggered by a direct client request 
using IsRequest()
                isDirectRequest := req.IsRequest()
@@ -371,13 +371,13 @@ func (s *DiscoveryServer) pushXds(con *Connection, w 
*model.WatchedResource, req
 
                        // Auto-push CDS for referenced clusters
                        if len(clusterNames) > 0 {
-                               cdsWatched := 
con.proxy.GetWatchedResource(v3.ClusterType)
+                               cdsWatched := 
con.proxy.GetWatchedResource(v1.ClusterType)
                                // Only auto-push CDS if client hasn't already 
requested it
                                // If client has already requested CDS 
(WatchedResource exists with ResourceNames),
                                // the client's request will handle it, so we 
don't need to auto-push
                                if cdsWatched == nil || 
cdsWatched.ResourceNames == nil || len(cdsWatched.ResourceNames) == 0 {
                                        // Client hasn't requested CDS yet, 
auto-push to ensure client gets the cluster config
-                                       
con.proxy.NewWatchedResource(v3.ClusterType, clusterNames)
+                                       
con.proxy.NewWatchedResource(v1.ClusterType, clusterNames)
                                        log.Debugf("LDS push completed, 
auto-pushing CDS for clusters: %v", clusterNames)
                                        // Trigger CDS push directly without 
going through pushConnection to avoid loops
                                        cdsReq := &model.PushRequest{
@@ -387,7 +387,7 @@ func (s *DiscoveryServer) pushXds(con *Connection, w 
*model.WatchedResource, req
                                                Start:  con.proxy.LastPushTime,
                                                Forced: false,
                                        }
-                                       if err := s.pushXds(con, 
con.proxy.GetWatchedResource(v3.ClusterType), cdsReq); err != nil {
+                                       if err := s.pushXds(con, 
con.proxy.GetWatchedResource(v1.ClusterType), cdsReq); err != nil {
                                                log.Warnf("failed to push CDS 
after LDS: %v", err)
                                        }
                                } else {
@@ -398,11 +398,11 @@ func (s *DiscoveryServer) pushXds(con *Connection, w 
*model.WatchedResource, req
 
                        // Auto-push RDS for referenced routes
                        if len(routeNames) > 0 {
-                               rdsWatched := 
con.proxy.GetWatchedResource(v3.RouteType)
+                               rdsWatched := 
con.proxy.GetWatchedResource(v1.RouteType)
                                // Only auto-push RDS if client hasn't already 
requested it
                                if rdsWatched == nil || 
rdsWatched.ResourceNames == nil || len(rdsWatched.ResourceNames) == 0 {
                                        // Client hasn't requested RDS yet, 
auto-push to ensure client gets the route config
-                                       
con.proxy.NewWatchedResource(v3.RouteType, routeNames)
+                                       
con.proxy.NewWatchedResource(v1.RouteType, routeNames)
                                        log.Debugf("LDS push completed, 
auto-pushing RDS for routes: %v", routeNames)
                                        // Trigger RDS push directly without 
going through pushConnection to avoid loops
                                        rdsReq := &model.PushRequest{
@@ -412,7 +412,7 @@ func (s *DiscoveryServer) pushXds(con *Connection, w 
*model.WatchedResource, req
                                                Start:  con.proxy.LastPushTime,
                                                Forced: false,
                                        }
-                                       if err := s.pushXds(con, 
con.proxy.GetWatchedResource(v3.RouteType), rdsReq); err != nil {
+                                       if err := s.pushXds(con, 
con.proxy.GetWatchedResource(v1.RouteType), rdsReq); err != nil {
                                                log.Warnf("failed to push RDS 
after LDS: %v", err)
                                        }
                                } else {
@@ -430,9 +430,9 @@ func (s *DiscoveryServer) pushXds(con *Connection, w 
*model.WatchedResource, req
                                        }
                                        if hasNewRoutes {
                                                // Update RDS watched resource 
to include the new route names
-                                               
con.proxy.UpdateWatchedResource(v3.RouteType, func(wr *model.WatchedResource) 
*model.WatchedResource {
+                                               
con.proxy.UpdateWatchedResource(v1.RouteType, func(wr *model.WatchedResource) 
*model.WatchedResource {
                                                        if wr == nil {
-                                                               wr = 
&model.WatchedResource{TypeUrl: v3.RouteType, ResourceNames: sets.New[string]()}
+                                                               wr = 
&model.WatchedResource{TypeUrl: v1.RouteType, ResourceNames: sets.New[string]()}
                                                        }
                                                        existingNames := 
wr.ResourceNames
                                                        if existingNames == nil 
{
@@ -453,7 +453,7 @@ func (s *DiscoveryServer) pushXds(con *Connection, w 
*model.WatchedResource, req
                                                        Start:  
con.proxy.LastPushTime,
                                                        Forced: false,
                                                }
-                                               if err := s.pushXds(con, 
con.proxy.GetWatchedResource(v3.RouteType), rdsReq); err != nil {
+                                               if err := s.pushXds(con, 
con.proxy.GetWatchedResource(v1.RouteType), rdsReq); err != nil {
                                                        log.Warnf("failed to 
push RDS after LDS: %v", err)
                                                }
                                        } else {
@@ -473,14 +473,14 @@ func (s *DiscoveryServer) pushXds(con *Connection, w 
*model.WatchedResource, req
        // 1. Update the watched resource to include the EDS cluster names (so 
when client requests EDS, we know what to send)
        // 2. Wait for the client to request EDS naturally
        // 3. When the client requests EDS, we will push it with the correct 
state
-       if w.TypeUrl == v3.ClusterType && con.proxy.IsProxylessGrpc() && 
len(res) > 0 {
+       if w.TypeUrl == v1.ClusterType && con.proxy.IsProxylessGrpc() && 
len(res) > 0 {
                // Extract EDS cluster names from CDS resources
                edsClusterNames := extractEDSClusterNamesFromCDS(res)
                if len(edsClusterNames) > 0 {
-                       edsWatched := 
con.proxy.GetWatchedResource(v3.EndpointType)
+                       edsWatched := 
con.proxy.GetWatchedResource(v1.EndpointType)
                        if edsWatched == nil {
                                // EDS not watched yet, create watched resource 
with cluster names
-                               con.proxy.NewWatchedResource(v3.EndpointType, 
edsClusterNames)
+                               con.proxy.NewWatchedResource(v1.EndpointType, 
edsClusterNames)
                                log.Debugf("CDS push completed, created EDS 
watched resource for clusters: %v (waiting for client request)", 
edsClusterNames)
                        } else {
                                // Check if any cluster names are missing from 
the watched set
@@ -497,9 +497,9 @@ func (s *DiscoveryServer) pushXds(con *Connection, w 
*model.WatchedResource, req
                                }
                                if hasNewClusters {
                                        // Update EDS watched resource to 
include the new cluster names
-                                       
con.proxy.UpdateWatchedResource(v3.EndpointType, func(wr 
*model.WatchedResource) *model.WatchedResource {
+                                       
con.proxy.UpdateWatchedResource(v1.EndpointType, func(wr 
*model.WatchedResource) *model.WatchedResource {
                                                if wr == nil {
-                                                       wr = 
&model.WatchedResource{TypeUrl: v3.EndpointType, ResourceNames: 
sets.New[string]()}
+                                                       wr = 
&model.WatchedResource{TypeUrl: v1.EndpointType, ResourceNames: 
sets.New[string]()}
                                                }
                                                existingNames := 
wr.ResourceNames
                                                if existingNames == nil {
@@ -587,7 +587,7 @@ func (s *DiscoveryServer) pushDeltaXds(con *Connection, w 
*model.WatchedResource
                }
        }
        if len(resp.RemovedResources) > 0 {
-               deltaLog.Infof("%v REMOVE for node:%s %v", 
v3.GetShortType(w.TypeUrl), con.ID(), resp.RemovedResources)
+               deltaLog.Infof("%v REMOVE for node:%s %v", 
v1.GetShortType(w.TypeUrl), con.ID(), resp.RemovedResources)
        }
 
        ptype := "PUSH"
@@ -610,7 +610,7 @@ func (s *DiscoveryServer) pushDeltaXds(con *Connection, w 
*model.WatchedResource
        case !req.Full:
        default:
                deltaLog.Infof("%s: %s%s for node:%s resources:%d removed:%d%s",
-                       v3.GetShortType(w.TypeUrl), ptype, req.PushReason(), 
con.proxy.ID, len(res), len(resp.RemovedResources), info)
+                       v1.GetShortType(w.TypeUrl), ptype, req.PushReason(), 
con.proxy.ID, len(res), len(resp.RemovedResources), info)
        }
 
        return nil
@@ -668,14 +668,14 @@ func extractRouteNamesFromLDS(listeners model.Resources) 
[]string {
                for _, fc := range ll.FilterChains {
                        for _, filter := range fc.Filters {
                                if filter.Name == "http_connection_manager" {
-                                       hcm := &hcmv3.HttpConnectionManager{}
+                                       hcm := &hcmv1.HttpConnectionManager{}
                                        if err := 
filter.GetTypedConfig().UnmarshalTo(hcm); err != nil {
                                                log.Debugf("failed to unmarshal 
HttpConnectionManager for listener %s: %v", r.Name, err)
                                                continue
                                        }
                                        // Check if HttpConnectionManager uses 
RDS
                                        if hcm.RouteSpecifier != nil {
-                                               if rds, ok := 
hcm.RouteSpecifier.(*hcmv3.HttpConnectionManager_Rds); ok && rds.Rds != nil {
+                                               if rds, ok := 
hcm.RouteSpecifier.(*hcmv1.HttpConnectionManager_Rds); ok && rds.Rds != nil {
                                                        routeName := 
rds.Rds.RouteConfigName
                                                        if routeName != "" {
                                                                
routeNames.Insert(routeName)
@@ -690,7 +690,7 @@ func extractRouteNamesFromLDS(listeners model.Resources) 
[]string {
                // Check if this listener has ApiListener (used by gRPC 
proxyless for outbound)
                if ll.ApiListener != nil && ll.ApiListener.ApiListener != nil {
                        // Unmarshal ApiListener to get HttpConnectionManager
-                       hcm := &hcmv3.HttpConnectionManager{}
+                       hcm := &hcmv1.HttpConnectionManager{}
                        if err := ll.ApiListener.ApiListener.UnmarshalTo(hcm); 
err != nil {
                                log.Debugf("failed to unmarshal ApiListener for 
listener %s: %v", r.Name, err)
                                continue
@@ -698,7 +698,7 @@ func extractRouteNamesFromLDS(listeners model.Resources) 
[]string {
 
                        // Check if HttpConnectionManager uses RDS
                        if hcm.RouteSpecifier != nil {
-                               if rds, ok := 
hcm.RouteSpecifier.(*hcmv3.HttpConnectionManager_Rds); ok && rds.Rds != nil {
+                               if rds, ok := 
hcm.RouteSpecifier.(*hcmv1.HttpConnectionManager_Rds); ok && rds.Rds != nil {
                                        // Found RDS reference, extract route 
name
                                        routeName := rds.Rds.RouteConfigName
                                        if routeName != "" {
diff --git a/pkg/adsc/adsc.go b/pkg/adsc/adsc.go
index bc14fdbc..d9c07075 100644
--- a/pkg/adsc/adsc.go
+++ b/pkg/adsc/adsc.go
@@ -30,7 +30,7 @@ import (
        "github.com/apache/dubbo-kubernetes/api/mesh/v1alpha1"
        "github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/model"
        
"github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/networking/util"
-       v3 "github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/xds/v3"
+       v1 "github.com/apache/dubbo-kubernetes/dubbod/discovery/pkg/xds/v1"
        "github.com/apache/dubbo-kubernetes/pkg/backoff"
        "github.com/apache/dubbo-kubernetes/pkg/config/schema/collections"
        "github.com/apache/dubbo-kubernetes/pkg/config/schema/gvk"
@@ -318,7 +318,7 @@ func (a *ADSC) Run() error {
 
        // Send the initial requests
        for _, r := range a.cfg.InitialDiscoveryRequests {
-               if r.TypeUrl == v3.ClusterType {
+               if r.TypeUrl == v1.ClusterType {
                        a.watchTime = time.Now()
                }
                _ = a.Send(r)
@@ -354,12 +354,12 @@ func (a *ADSC) reconnect() {
 func (a *ADSC) ack(msg *discovery.DiscoveryResponse) {
        var resources []string
 
-       if msg.TypeUrl == v3.EndpointType {
+       if msg.TypeUrl == v1.EndpointType {
                for c := range a.edsClusters {
                        resources = append(resources, c)
                }
        }
-       if msg.TypeUrl == v3.RouteType {
+       if msg.TypeUrl == v1.RouteType {
                for r := range a.routes {
                        resources = append(resources, r)
                }
@@ -423,7 +423,7 @@ func (a *ADSC) handleReceive() {
                // Process the resources.
                a.VersionInfo[msg.TypeUrl] = msg.VersionInfo
                switch msg.TypeUrl {
-               case v3.ListenerType:
+               case v1.ListenerType:
                        listeners := make([]*listener.Listener, 0, 
len(msg.Resources))
                        for _, rsc := range msg.Resources {
                                valBytes := rsc.Value
@@ -432,7 +432,7 @@ func (a *ADSC) handleReceive() {
                                listeners = append(listeners, ll)
                        }
                        a.handleLDS(listeners)
-               case v3.ClusterType:
+               case v1.ClusterType:
                        clusters := make([]*cluster.Cluster, 0, 
len(msg.Resources))
                        for _, rsc := range msg.Resources {
                                valBytes := rsc.Value
@@ -441,7 +441,7 @@ func (a *ADSC) handleReceive() {
                                clusters = append(clusters, cl)
                        }
                        a.handleCDS(clusters)
-               case v3.EndpointType:
+               case v1.EndpointType:
                        eds := make([]*endpoint.ClusterLoadAssignment, 0, 
len(msg.Resources))
                        for _, rsc := range msg.Resources {
                                valBytes := rsc.Value
@@ -450,7 +450,7 @@ func (a *ADSC) handleReceive() {
                                eds = append(eds, el)
                        }
                        a.handleEDS(eds)
-               case v3.RouteType:
+               case v1.RouteType:
                        routes := make([]*route.RouteConfiguration, 0, 
len(msg.Resources))
                        for _, rsc := range msg.Resources {
                                valBytes := rsc.Value
@@ -526,12 +526,12 @@ func (a *ADSC) handleLDS(ll []*listener.Listener) {
        a.mutex.Lock()
        defer a.mutex.Unlock()
        if len(routes) > 0 {
-               a.sendResources(v3.RouteType, routes)
+               a.sendResources(v1.RouteType, routes)
        }
        a.httpListeners = lh
 
        select {
-       case a.Updates <- v3.ListenerType:
+       case a.Updates <- v1.ListenerType:
        default:
        }
 }
@@ -567,7 +567,7 @@ func (a *ADSC) handleRDS(configurations 
[]*route.RouteConfiguration) {
        a.mutex.Unlock()
 
        select {
-       case a.Updates <- v3.RouteType:
+       case a.Updates <- v1.RouteType:
        default:
        }
 }
@@ -593,7 +593,7 @@ func (a *ADSC) handleCDS(ll []*cluster.Cluster) {
        log.Infof("CDS: %d size=%d", len(cn), cdsSize)
 
        if len(cn) > 0 {
-               a.sendResources(v3.EndpointType, cn)
+               a.sendResources(v1.EndpointType, cn)
        }
 
        a.mutex.Lock()
@@ -602,7 +602,7 @@ func (a *ADSC) handleCDS(ll []*cluster.Cluster) {
        a.clusters = cds
 
        select {
-       case a.Updates <- v3.ClusterType:
+       case a.Updates <- v1.ClusterType:
        default:
        }
 }
@@ -620,7 +620,7 @@ func (a *ADSC) handleEDS(eds 
[]*endpoint.ClusterLoadAssignment) {
        log.Infof("eds: %d size=%d ep=%d", len(eds), edsSize, ep)
        if a.initialLoad == 0 && !a.initialLds {
                _ = a.stream.Send(&discovery.DiscoveryRequest{
-                       TypeUrl: v3.ListenerType,
+                       TypeUrl: v1.ListenerType,
                })
                a.initialLds = true
        }
@@ -630,7 +630,7 @@ func (a *ADSC) handleEDS(eds 
[]*endpoint.ClusterLoadAssignment) {
        a.eds = la
 
        select {
-       case a.Updates <- v3.EndpointType:
+       case a.Updates <- v1.EndpointType:
        default:
        }
 }
diff --git a/pkg/dubboagent/grpcxds/grpc_bootstrap.go 
b/pkg/dubboagent/grpcxds/grpc_bootstrap.go
index 8ae36799..4723ea51 100644
--- a/pkg/dubboagent/grpcxds/grpc_bootstrap.go
+++ b/pkg/dubboagent/grpcxds/grpc_bootstrap.go
@@ -101,7 +101,7 @@ func GenerateBootstrap(opts GenerateBootstrapOptions) 
(*Bootstrap, error) {
                        ServerURI: serverURI,
                        // connect locally via agent
                        ChannelCreds:   []ChannelCreds{{Type: "insecure"}},
-                       ServerFeatures: []string{"xds_v3"},
+                       ServerFeatures: []string{"xds_v1"},
                }},
                Node: &core.Node{
                        Id:       opts.Node.ID,


Reply via email to