solo-io / gloo

The Feature-rich, Kubernetes-native, Next-Generation API Gateway Built on Envoy
https://docs.solo.io/
Apache License 2.0
4.07k stars 434 forks source link

TestK8sGateway/RouteOptions/TestConfigureRouteOptionsWithFilterExtension flake #9738

Open sheidkamp opened 1 month ago

sheidkamp commented 1 month ago

Which tests failed?

TestK8sGateway/RouteOptions/TestConfigureRouteOptionsWithFilterExtension

=== NAME  TestK8sGateway
    curl.go:51: 
        Timed out after 20.001s.
        failed to get expected response
        The function passed to Eventually failed at /home/runner/work/gloo/gloo/test/kubernetes/testutils/assertions/curl.go:45 with:
        HTTP header "foo":
            Expected
                <string>: 
            to equal
                <string>: basic-rto 

        expected: {
          "StatusCode": 200,
          "Body": {
            "Succeed": true
          },
          "Headers": {
            "foo": {
              "Expected": "basic-rto"
            }
          },
          "Custom": null
        }
routeoption.gateway.solo.io "basic-rto" deleted

Initial Investigation

No response

Additional Information

No response

sheidkamp commented 1 month ago

nightly tests: https://github.com/solo-io/gloo/actions/runs/9868464530/job/27250540207

jbohanon commented 1 month ago

From gloo logs attached to nightly run, appears to be eventual consistency issue with route options creation. First step should be to check if we validate that the basic-rto is created before moving on to apply other resources and/or route traffic

{"level":"error","ts":"2024-07-10T05:45:41.128Z","logger":"k8s-gw-syncer","caller":"routeoptions/route_options_plugin.go:186","msg":"error getting RouteOptions for Route: extensionRef 'gateway.solo.io' of type RouteOption.basic-rto in namespace 'default' not found","stacktrace":"github.com/solo-io/gloo/projects/gateway2/translator/plugins/routeoptions.(*plugin).handleAttachment\n\t/home/runner/work/gloo/gloo/projects/gateway2/translator/plugins/routeoptions/route_options_plugin.go:186\ngithub.com/solo-io/gloo/projects/gateway2/translator/plugins/routeoptions.(*plugin).ApplyRoutePlugin\n\t/home/runner/work/gloo/gloo/projects/gateway2/translator/plugins/routeoptions/route_options_plugin.go:82\ngithub.com/solo-io/gloo/projects/gateway2/translator/httproute.translateGatewayHTTPRouteRule\n\t/home/runner/work/gloo/gloo/projects/gateway2/translator/httproute/gateway_http_route_translator.go:166\ngithub.com/solo-io/gloo/projects/gateway2/translator/httproute.translateGatewayHTTPRouteRulesUtil\n\t/home/runner/work/gloo/gloo/projects/gateway2/translator/httproute/gateway_http_route_translator.go:85\ngithub.com/solo-io/gloo/projects/gateway2/translator/httproute.TranslateGatewayHTTPRouteRules\n\t/home/runner/work/gloo/gloo/projects/gateway2/translator/httproute/gateway_http_route_translator.go:57\ngithub.com/solo-io/gloo/projects/gateway2/translator/listener.buildRoutesPerHost\n\t/home/runner/work/gloo/gloo/projects/gateway2/translator/listener/gateway_listener_translator.go:434\ngithub.com/solo-io/gloo/projects/gateway2/translator/listener.(*httpFilterChain).translateHttpFilterChain\n\t/home/runner/work/gloo/gloo/projects/gateway2/translator/listener/gateway_listener_translator.go:307\ngithub.com/solo-io/gloo/projects/gateway2/translator/listener.(*mergedListener).translateListener\n\t/home/runner/work/gloo/gloo/projects/gateway2/translator/listener/gateway_listener_translator.go:226\ngithub.com/solo-io/gloo/projects/gateway2/translator/listener.(*mergedListeners).translateListeners\n\t/home/runner/work/gloo/gloo/projects/gateway2/translator/listener/gateway_listener_translator.go:184\ngithub.com/solo-io/gloo/projects/gateway2/translator/listener.TranslateListeners\n\t/home/runner/work/gloo/gloo/projects/gateway2/translator/listener/gateway_listener_translator.go:40\ngithub.com/solo-io/gloo/projects/gateway2/translator.(*translator).TranslateProxy\n\t/home/runner/work/gloo/gloo/projects/gateway2/translator/gateway_translator.go:74\ngithub.com/solo-io/gloo/projects/gateway2/proxy_syncer.(*ProxySyncer).Start.func1\n\t/home/runner/work/gloo/gloo/projects/gateway2/proxy_syncer/proxy_syncer.go:134\ngithub.com/solo-io/gloo/projects/gateway2/proxy_syncer.(*ProxySyncer).Start\n\t/home/runner/work/gloo/gloo/projects/gateway2/proxy_syncer/proxy_syncer.go:168\nsigs.k8s.io/controller-runtime/pkg/manager.(*runnableGroup).reconcile.func1\n\t/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.17.4/pkg/manager/runnable_group.go:223"}