hi: I have replied to you on github.
regards. On Wed, Jan 8, 2025 at 11:06 PM btell...@linagora.com <btell...@linagora.com> wrote: > Hello all, > > I received zero feedback for over 2 weeks on how to move this topic > forward. > > Can someone please review > https://github.com/apache/apisix-java-plugin-runner/pull/313 and provide > the much needed guidance? (or approvals!) > > BTW this changeset does wonders in production. > > Thanks by advance. > > Best regards, > > Benoit TELLIER > > On 20/12/2024 15:50, btell...@linagora.com wrote: > > Hello folks! > > > > First huge thanks for this amazing project. > > > > We actively rely on Apache APISIX at LINAGORA for our OIDC setup on > > top of Apache James mail server. [1] > > > > As part of this set up we need to check for invalidated sid in > > upcoming tokens onto a Redis database. > > > > We naturally wrote a Java plugin to do so. > > > > Recently we encountered a Redis outage and to our horror HTTP requests > > were violently throttled by the API gateway, and bypassing the faulty > > Redis was taking way more time than the configured 100ms timeout. > > > > Investigation showed that: > > - Our Redis code inside our Apisix plugin was blocking > > - That doing so was disastrous as the plugin code runs directly onto > > the Netty event loop of the Unix socket linking the plugin to APisix > > - That the Apisix Java programming API was async friendly with it's > > PluginFilterChain abstraction > > - But that very sadly the given PluginFilterChain was called > > synchronously and expected to run synchronously > > > > While I do believe better overall design exists, being able to query > > external data source from within a Java plugin seems to be a pretty > > common expectation for at least Java users [2]. > > > > With that new knowledge I: > > > > - [3] Patched the LINAGORA back-channel logout plugin to be asynchronous > > - [4] Proposed an evolution of the java plugin runner to call the > > plugin chain in an async friendly way. This PR had been tested in our > > dev environments (functionally logout still works, and timeouts are > > well applied). We will further performance test this change and will > > roll it over in production in the coming days. > > - [5] Opened Github issue and [6] JIRA issue > > > > I also do believe the threading model need to be clearly documented, > > and the use case of asynchronous Java plugins can be made explicit. I > > propose myself to write this doc. > > > > Hope the Apisix community will like this special XMas gift. > > > > Best regards, > > > > Benoit TELLIER from the Apache James project. > > > > [1] > > > https://github.com/linagora/tmail-backend/tree/master/demo/apisix/tmail-apisix-plugin-runner > > > > [2] https://github.com/apache/apisix-java-plugin-runner/issues/264 > > https://github.com/apache/apisix-java-plugin-runner/issues/168 > > [3] https://github.com/linagora/tmail-backend/pull/1412 > > [4] https://github.com/apache/apisix-java-plugin-runner/pull/313 > > [5] https://github.com/apache/apisix-java-plugin-runner/issues/312 > > [6] https://issues.apache.org/jira/projects/APISIX/issues/APISIX-38 > > > > > > > -- *MembPhis* My GitHub: https://github.com/membphis Apache APISIX: https://github.com/apache/apisix