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,