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

Reply via email to