Hello Traky, You hit the nail on the head by explaining the (very) leaky abstraction that plugins' priority offers on top of OpenResty phases.
I agree on your take on the consequences: document the phase in the plugin, and potentially fully abstract phases away. I don't know enough about the codebase and how complex the latter is, though. On Fri, May 12, 2023 at 8:23 AM Traky Deng <traky.d...@protonmail.com.invalid> wrote: > Hi all, > > I am writing this email to open the discussion for improving user > experience for plugin execution order adjustment. Specifically, either > merge / abstract phases for plugin execution on the engineering side; or > simply add phases to plugin docs. > > ## Current State > > Currently for users to understand plugin execution order and how to adjust > execution priority, they need to understand APISIX phases, which were > derived from OpenResty phases. This is because plugin priority of execution > can only be adjusted WITHIN a given phase. > > Logics in rewrite will always be executed before logics in access, which > means even if plugin A (with logics in access phase) has a higher priority > than plugin B (with logics in rewrite phase), plugin B will be executed > first. > > ## Issue > > Issue is the understanding cost. > > For a user to understand how to adjust priorities, they need to understand: > > - APISIX phases (rewrite and access) and their ordering in execution; and > - what phase(s) a plugin has methods in > > ## Solutions > > For the first point, there has been an improvement to the documentation. > > For the second point, no solution yet. Users still need to dig into the > plugin source code themselves to see the specific phases involved with a > plugin. Plugin doc does not document what phases are involved for the > plugin. > > Two potentials resolutions to tackle this: > > - Improve on the engineering side to abstract away from phases completely. > > - Add what phase(s) the plugin involves on each and one of the plugin doc. > > IMHO, phases on plugin docs might complicate the concept. it is the > quickest fix, however. > > Alternatively, we explain phases to users every time they ask about plugin > execution priority (i.e. > https://github.com/apache/apisix/issues/9433#issuecomment-1539923862). > > Interested to see what everybody thinks, if we should prioritize, and how > we want to proceed. > > Thanks, > Traky Deng