Hi folks,

It would be useful to add a generic event listener interface to Polaris,
consistent with other OSS projects. Users of the project may require
additional functionality that doesn't have a clear enough value proposition
to be in OSS. Instead, there can be event listeners that let you hook into
various parts of the Polaris functionality (i.e. "before table commit")
without OSS prescribing the limits of the extra functionality.

Here are some examples of the shape of changes this would help:

   - https://github.com/apache/polaris/pull/458
   - https://github.com/apache/polaris/pull/155
   - https://github.com/apache/polaris/pull/423
   - Modification to application startup (i.e. by registering new Jersey
   resources)
   - Further observability changes

In all of these cases we can (and sometimes have) introduced new ad-hoc
interfaces to allow pluggable behavior, but I believe it's more scalable to
have a single event listener interface whose number of events grows over
time. The intent is also not to reduce the amount of contributions to OSS,
but rather keep the changes focused and vendor-agnostic.

Here are some example implementations in other OSS projects:

   -
   
https://spark.apache.org/docs/3.5.3/api/java/org/apache/spark/scheduler/SparkListener.html
   - https://heroiclabs.com/docs/nakama/guides/server-framework/using-hooks/

I'm waiting for the Quarkus work to settle before suggesting a concrete
implementation, as I heard Quarkus might make it easy to intercept method
calls, but I did want to gather thoughts in the interim.

Andrew

Reply via email to