Skip to content

bug: graphql post request route matching exception #10197

Description

@AlinsRan

Current Behavior

Graphql post requests have a probability of causing routing matching exception.

The larger the body, the greater the probability of routing exceptions, which may be affected by other requests in the final result.

Expected Behavior

No response

Error Logs

No response

Steps to Reproduce

  1. apisix configure config.yaml
deployment:
  role: data_plane
  role_data_plane:
    config_provider: yaml

apisix:
  router:
    http: radixtree_uri

nginx_config:
  worker_processes: 1
  1. apisix.yaml configure
routes:
 - uri: "/hello"
   hosts:
     - test.com
   vars:
     - - "graphql_name"
       - "=="
       - "createAccount"
   priority: 30
   id: "graphql1"
   upstream_id: "invalid"

 - uri: "/hello"
   hosts:
     - test.com
   plugins:
     echo:
       body: "test server\n"
   priority: 20
   id: "graphql2"
   upstream_id: "invalid"
 
 - uri: "/hello"
   hosts:
     - test2.com
   plugins:
     echo:
       body: "test2\n"
   priority: 20
   id: "graphql3"
   upstream_id: "invalid"

upstreams:
 - nodes:
     127.0.0.1:1999: 1
   id: "invalid"
   ```
   
3. request params

```shell
➜  apisix git:(master) ✗ curl -Z http://test.com:9080/hello -H "Content-Type: application/json" -X POST -d @schema.json -Z http://test2.com:9080/hello
test2
test2
➜  apisix git:(master) ✗ curl -Z http://test.com:9080/hello -H "Content-Type: application/json" -X POST -d @schema.json -Z http://test2.com:9080/hello
test2
test server
➜  apisix git:(master) ✗ curl -Z http://test.com:9080/hello -H "Content-Type: application/json" -X POST -d @schema.json -Z http://test2.com:9080/hello
test2
test2
➜  apisix git:(master) ✗ curl -Z http://test.com:9080/hello -H "Content-Type: application/json" -X POST -d @schema.json -Z http://test2.com:9080/hello
test2
test2

Environment

  • APISIX version (run apisix version): master/3.5.0
  • Operating system (run uname -a):
  • OpenResty / Nginx version (run openresty -V or nginx -V):
  • etcd version, if relevant (run curl http://127.0.0.1:9090/v1/server_info):
  • APISIX Dashboard version, if relevant:
  • Plugin runner version, for issues related to plugin runners:
  • LuaRocks version, for installation issues (run luarocks --version):

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status
    ✅ Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions