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

ronething pushed a commit to branch fix/issue_2689
in repository https://gitbox.apache.org/repos/asf/apisix-ingress-controller.git

commit aea71d543de5284a74837d3701753b39e3d15e58
Author: Ashing Zheng <[email protected]>
AuthorDate: Tue Jan 6 16:21:47 2026 +0800

    debug: issue test
    
    Signed-off-by: Ashing Zheng <[email protected]>
---
 go.mod                                        |  3 ---
 go.sum                                        |  6 ------
 internal/adc/cache/store.go                   | 12 ++++++++++++
 internal/controller/apisixroute_controller.go | 23 ++++++++++++++++++++++-
 internal/controller/httproute_controller.go   |  4 ++++
 internal/provider/apisix/provider.go          | 15 +++++++++++++++
 6 files changed, 53 insertions(+), 10 deletions(-)

diff --git a/go.mod b/go.mod
index 757f8e28..cab91fbc 100644
--- a/go.mod
+++ b/go.mod
@@ -21,7 +21,6 @@ require (
        github.com/olekukonko/tablewriter v1.1.1
        github.com/onsi/ginkgo/v2 v2.22.0
        github.com/onsi/gomega v1.36.1
-       github.com/panjf2000/ants/v2 v2.11.3
        github.com/pkg/errors v0.9.1
        github.com/prometheus/client_golang v1.19.1
        github.com/samber/lo v1.47.0
@@ -35,7 +34,6 @@ require (
        k8s.io/apiextensions-apiserver v0.32.3
        k8s.io/apimachinery v0.32.3
        k8s.io/client-go v0.32.3
-       k8s.io/code-generator v0.32.3
        k8s.io/kubectl v0.30.3
        k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738
        sigs.k8s.io/controller-runtime v0.20.4
@@ -213,7 +211,6 @@ require (
        gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
        k8s.io/apiserver v0.32.3 // indirect
        k8s.io/component-base v0.32.3 // indirect
-       k8s.io/gengo/v2 v2.0.0-20240911193312-2b36238f13e9 // indirect
        k8s.io/klog/v2 v2.130.1 // indirect
        k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect
        moul.io/http2curl/v2 v2.3.0 // indirect
diff --git a/go.sum b/go.sum
index eddf72b5..a1c9c8d3 100644
--- a/go.sum
+++ b/go.sum
@@ -333,8 +333,6 @@ github.com/onsi/ginkgo/v2 v2.22.0 
h1:Yed107/8DjTr0lKCNt7Dn8yQ6ybuDRQoMGrNFKzMfHg
 github.com/onsi/ginkgo/v2 v2.22.0/go.mod 
h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo=
 github.com/onsi/gomega v1.36.1 h1:bJDPBO7ibjxcbHMgSCoo4Yj18UWbKDlLwX1x9sybDcw=
 github.com/onsi/gomega v1.36.1/go.mod 
h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog=
-github.com/panjf2000/ants/v2 v2.11.3 
h1:AfI0ngBoXJmYOpDh9m516vjqoUu2sLrIVgppI9TZVpg=
-github.com/panjf2000/ants/v2 v2.11.3/go.mod 
h1:8u92CYMUc6gyvTIw8Ru7Mt7+/ESnJahz5EVtqfrilek=
 github.com/pelletier/go-toml/v2 v2.0.1/go.mod 
h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo=
 github.com/pkg/diff v0.0.0-20200914180035-5b29258ca4f7/go.mod 
h1:zO8QMzTeZd5cpnIkz/Gn6iK0jDfGicM1nynOkkPIl28=
 github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod 
h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
@@ -597,12 +595,8 @@ k8s.io/apiserver v0.32.3 
h1:kOw2KBuHOA+wetX1MkmrxgBr648ksz653j26ESuWNY8=
 k8s.io/apiserver v0.32.3/go.mod h1:q1x9B8E/WzShF49wh3ADOh6muSfpmFL0I2t+TG0Zdgc=
 k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU=
 k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY=
-k8s.io/code-generator v0.32.3 h1:31p2TVzC9+hVdSkAFruAk3JY+iSfzrJ83Qij1yZutyw=
-k8s.io/code-generator v0.32.3/go.mod 
h1:+mbiYID5NLsBuqxjQTygKM/DAdKpAjvBzrJd64NU1G8=
 k8s.io/component-base v0.32.3 h1:98WJvvMs3QZ2LYHBzvltFSeJjEx7t5+8s71P7M74u8k=
 k8s.io/component-base v0.32.3/go.mod 
h1:LWi9cR+yPAv7cu2X9rZanTiFKB2kHA+JjmhkKjCZRpI=
-k8s.io/gengo/v2 v2.0.0-20240911193312-2b36238f13e9 
h1:si3PfKm8dDYxgfbeA6orqrtLkvvIeH8UqffFJDl0bz4=
-k8s.io/gengo/v2 v2.0.0-20240911193312-2b36238f13e9/go.mod 
h1:EJykeLsmFC60UQbYJezXkEsG2FLrt0GPNkU5iK5GWxU=
 k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
 k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
 k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f 
h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y=
diff --git a/internal/adc/cache/store.go b/internal/adc/cache/store.go
index d41188ed..76fcc146 100644
--- a/internal/adc/cache/store.go
+++ b/internal/adc/cache/store.go
@@ -69,12 +69,24 @@ func (s *Store) Insert(name string, resourceTypes []string, 
resources *adctypes.
                        if err != nil {
                                return err
                        }
+                       s.log.V(1).Info("Found existing services to update", 
"count", len(services), "selector", selector)
                        for _, service := range services {
+                               s.log.V(1).Info("Deleting existing service", 
"service_id", service.ID, "service_name", service.Name)
                                if err := targetCache.DeleteService(service); 
err != nil {
                                        return err
                                }
                        }
                        for _, service := range resources.Services {
+                               // Log upstream nodes for debugging
+                               if service.Upstream != nil && 
len(service.Upstream.Nodes) > 0 {
+                                       nodesInfo := make([]string, 0, 
len(service.Upstream.Nodes))
+                                       for _, node := range 
service.Upstream.Nodes {
+                                               nodesInfo = append(nodesInfo, 
fmt.Sprintf("%s:%d", node.Host, node.Port))
+                                       }
+                                       s.log.V(1).Info("Inserting service with 
upstream nodes", "service_id", service.ID, "service_name", service.Name, 
"nodes", nodesInfo)
+                               } else {
+                                       s.log.V(1).Info("Inserting service 
without upstream nodes", "service_id", service.ID, "service_name", service.Name)
+                               }
                                if err := targetCache.InsertService(service); 
err != nil {
                                        return err
                                }
diff --git a/internal/controller/apisixroute_controller.go 
b/internal/controller/apisixroute_controller.go
index d8c225dc..9ee672fd 100644
--- a/internal/controller/apisixroute_controller.go
+++ b/internal/controller/apisixroute_controller.go
@@ -471,7 +471,23 @@ func (r *ApisixRouteReconciler) validateHTTPBackend(tctx 
*provider.TranslateCont
        // backend.subset specifies a subset of upstream nodes.
        // It specifies that the target pod's label should be a superset of the 
subset labels of the ApisixUpstream of the serviceName
        subsetLabels := r.getSubsetLabels(tctx, serviceNN, backend.Subset)
-       tctx.EndpointSlices[serviceNN] = 
r.filterEndpointSlicesBySubsetLabels(tctx, endpoints.Items, subsetLabels)
+       filteredEndpoints := r.filterEndpointSlicesBySubsetLabels(tctx, 
endpoints.Items, subsetLabels)
+       tctx.EndpointSlices[serviceNN] = filteredEndpoints
+
+       // Log endpoint information for debugging
+       if len(filteredEndpoints) > 0 {
+               endpointIPs := make([]string, 0)
+               for _, epSlice := range filteredEndpoints {
+                       for _, ep := range epSlice.Endpoints {
+                               for _, addr := range ep.Addresses {
+                                       endpointIPs = append(endpointIPs, addr)
+                               }
+                       }
+               }
+               r.Log.V(1).Info("Updated EndpointSlices for service", 
"service", serviceNN, "endpoint_count", len(filteredEndpoints), "endpoint_ips", 
endpointIPs)
+       } else {
+               r.Log.V(1).Info("No endpoints found for service", "service", 
serviceNN)
+       }
 
        return nil
 }
@@ -520,6 +536,9 @@ func (r *ApisixRouteReconciler) 
listApisixRoutesForService(ctx context.Context,
                serviceName = endpointSlice.Labels[discoveryv1.LabelServiceName]
                arList      apiv2.ApisixRouteList
        )
+       
+       r.Log.V(1).Info("EndpointSlice changed, listing ApisixRoutes for 
service", "namespace", namespace, "service", serviceName, "endpointslice", 
endpointSlice.Name)
+       
        if err := r.List(ctx, &arList, client.MatchingFields{
                indexer.ServiceIndexRef: indexer.GenIndexKey(namespace, 
serviceName),
        }); err != nil {
@@ -528,8 +547,10 @@ func (r *ApisixRouteReconciler) 
listApisixRoutesForService(ctx context.Context,
        }
        requests := make([]reconcile.Request, 0, len(arList.Items))
        for _, ar := range arList.Items {
+               r.Log.V(1).Info("Triggering reconcile for ApisixRoute due to 
EndpointSlice change", "apisixroute", utils.NamespacedName(&ar), "service", 
serviceName)
                requests = append(requests, reconcile.Request{NamespacedName: 
utils.NamespacedName(&ar)})
        }
+       r.Log.V(1).Info("Triggered reconciles for ApisixRoutes", "count", 
len(requests), "service", serviceName)
        return pkgutils.DedupComparable(requests)
 }
 
diff --git a/internal/controller/httproute_controller.go 
b/internal/controller/httproute_controller.go
index 34615b9f..32bd35f6 100644
--- a/internal/controller/httproute_controller.go
+++ b/internal/controller/httproute_controller.go
@@ -267,6 +267,8 @@ func (r *HTTPRouteReconciler) 
listHTTPRoutesByServiceRef(ctx context.Context, ob
        namespace := endpointSlice.GetNamespace()
        serviceName := endpointSlice.Labels[discoveryv1.LabelServiceName]
 
+       r.Log.V(1).Info("EndpointSlice changed, listing HTTPRoutes for 
service", "namespace", namespace, "service", serviceName, "endpointslice", 
endpointSlice.Name)
+
        hrList := &gatewayv1.HTTPRouteList{}
        if err := r.List(ctx, hrList, client.MatchingFields{
                indexer.ServiceIndexRef: indexer.GenIndexKey(namespace, 
serviceName),
@@ -276,6 +278,7 @@ func (r *HTTPRouteReconciler) 
listHTTPRoutesByServiceRef(ctx context.Context, ob
        }
        requests := make([]reconcile.Request, 0, len(hrList.Items))
        for _, hr := range hrList.Items {
+               r.Log.V(1).Info("Triggering reconcile for HTTPRoute due to 
EndpointSlice change", "httproute", client.ObjectKey{Namespace: hr.Namespace, 
Name: hr.Name}, "service", serviceName)
                requests = append(requests, reconcile.Request{
                        NamespacedName: client.ObjectKey{
                                Namespace: hr.Namespace,
@@ -283,6 +286,7 @@ func (r *HTTPRouteReconciler) 
listHTTPRoutesByServiceRef(ctx context.Context, ob
                        },
                })
        }
+       r.Log.V(1).Info("Triggered reconciles for HTTPRoutes", "count", 
len(requests), "service", serviceName)
        return requests
 }
 
diff --git a/internal/provider/apisix/provider.go 
b/internal/provider/apisix/provider.go
index 029675e2..d1e84fa4 100644
--- a/internal/provider/apisix/provider.go
+++ b/internal/provider/apisix/provider.go
@@ -19,6 +19,7 @@ package apisix
 
 import (
        "context"
+       "fmt"
        "net/http"
        "sync"
        "time"
@@ -183,6 +184,20 @@ func (d *apisixProvider) Update(ctx context.Context, tctx 
*provider.TranslateCon
                        Consumers:      result.Consumers,
                },
        }
+
+       // Log service upstream nodes for debugging
+       for _, service := range result.Services {
+               if service.Upstream != nil && len(service.Upstream.Nodes) > 0 {
+                       nodesInfo := make([]string, 0, 
len(service.Upstream.Nodes))
+                       for _, node := range service.Upstream.Nodes {
+                               nodesInfo = append(nodesInfo, 
fmt.Sprintf("%s:%d", node.Host, node.Port))
+                       }
+                       d.log.V(1).Info("Updating service with upstream nodes", 
"service_id", service.ID, "service_name", service.Name, "nodes", nodesInfo, 
"object", rk)
+               } else {
+                       d.log.V(1).Info("Updating service without upstream 
nodes", "service_id", service.ID, "service_name", service.Name, "object", rk)
+               }
+       }
+
        d.log.V(1).Info("updating config", "task", task)
 
        return d.client.UpdateConfig(ctx, task)

Reply via email to