Because APISIX is multiple worker architecture, the same route
configuration will be sent multiple times as different PrepareConf
Requests.

When developing a plugin in the runner, we need a way to store route
level data, which is useful for limit-req or other similar features. A
natural way to do it is to store the data in the route configuration.
However, as the PrepareConf Requests are redundant, we can't ensure
the route configurations in the runner to be unique per route.

Therefore, here I propose to add the idempotent key to the PrepareConf
request. We already use a conf_key as the key to identify routes at
the worker level. What we need to do is:
1. send this key via a new field "key" in the PrepareConf request to the runner.
2. before parsing the configuration, the runner needs to check if the
request with the same key has been processed. If so, the runner
returns the token of the previous request directly.

What about your opinions?

Reply via email to