Skip to content

All HTTPRoute rules return 404 when referenced HTTPRouteFilter in one rule does not exist #7545

@lboynton

Description

@lboynton

Description:

What issue is being seen? Describe what should be happening instead of
the bug, for example: The expected value isn't returned, etc.

If an HTTPRoute rule references an HTTPRouteFilter that does not exist, all rules return a 404.

Repro steps:

Include sample requests, environment, etc. All data and inputs
required to reproduce the bug.

Set up an HTTPRoute like so, so that it returns a 200 (I used the quickstart).

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
spec:
  hostnames:
  - www.example.com
  parentRefs:
  - group: gateway.networking.k8s.io
    kind: Gateway
    name: eg
  rules:
  - backendRefs:
    - group: ""
      kind: Service
      name: backend
      port: 3000
      weight: 1
    matches:
    - path:
        type: PathPrefix
        value: /

curl -i --header "Host: www.example.com" http://localhost:8888/get should return a 200.

Add another rule that references an HTTPRouteFilter that does not exist:

  - backendRefs:
    - group: ""
      kind: Service
      name: backend
      port: 3000
      weight: 1
    filters:
    - extensionRef:
        group: gateway.envoyproxy.io
        kind: HTTPRouteFilter
        name: does-not-exist
      type: ExtensionRef
    matches:
    - path:
        type: PathPrefix
        value: /test/
    name: test-missing-http-route-filter

After adding this, requests that originally returned successfully now return a 404. The previous curl command is now returning a 404.

I would expect the /test/ path to return a 500, and anything else to return successfully.

Note: If there are privacy concerns, sanitize the data prior to
sharing.

Environment:

Include the environment like gateway version, envoy version and so on.

Envoy Gateway v1.6.0 running in local minikube env

Logs:

Include the access logs and the Envoy logs.

2025-11-17T17:55:58.046Z	ERROR	provider	kubernetes/routes.go:286	bypassing filter rule	{"runner": "provider", "index": 0, "error": "filter not found: failed to get HTTPRouteFilter: HTTPRouteFilter.gateway.envoyproxy.io \"does-not-exist\" not found"}
2025-11-17T17:55:58.050Z	INFO	gateway-api	gatewayapi/filters.go:1076	returning 500 response due to unresolved HTTP filter	{"runner": "gateway-api"}

Metadata

Metadata

Assignees

Labels

area/conformanceGateway API Conformance Related Issues

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions