Hi Nandor, I will take a look. Generally speaking, I wonder if we should implement a kind of internal event bus that supports "event dispatching."
For example, I previously created a framework called Apache Karaf Decanter ( https://github.com/apache/karaf-decanter) based on this concept. It allows for multiple event appenders, which could provide a flexible way to collect, process, and dispatch events. Just a thought. Regards, JB On Thu, Mar 5, 2026 at 6:04 AM Nándor Kollár <[email protected]> wrote: > Hi All, > > I recently reviewed how Polaris events are persisted, which is a > prerequisite for implementing both the Iceberg event proposal [1] and the > event API in Polaris [2]. I identified two areas for improvement: it > appears that we only persist two types of events, and Polaris allows only a > single event listener. Because of this limitation, we cannot, for example, > persist events in the database *and* send them to CloudWatch at the same > time. > > Regarding the first problem, it seems that the transformation of most > service events to event entities is missing from > PolarisPersistenceEventListener [3]. Supporting each service event would > likely require implementing a transformation for every event type, which > could result in more than 150 separate methods or switch cases. The event > flattening approach in [4] doesn't seem to help much here, as it replaces > roughly 150 classes with about 150 switch branches. At the moment, I do not > yet have a good idea how we could simplify this transformation. In the > worst case, we would need to implement a large number of branches. > > As for the second problem, I am considering using the Quarkus event-bus [5] > for the PolarisEventListener implementations. This would hopefully keep the > listeners configurable, allowing individual listeners to be enabled or > disabled while also making it possible for multiple listeners to consume > Polaris events simultaneously. > > What do you think? > > Nandor > > [1] > > https://docs.google.com/document/d/1WtIsNGVX75-_MsQIOJhXLAWg6IbplV4-DkLllQEiFT8/edit?tab=t.0 > [2] https://github.com/apache/polaris/pull/3924 > [3] > > https://github.com/apache/polaris/blob/main/runtime/service/src/main/java/org/apache/polaris/service/events/listeners/PolarisPersistenceEventListener.java#L39 > [4] https://lists.apache.org/thread/xonxwf9b38t9cxo841r0hn1b34plf7og > [5] https://quarkus.io/guides/reactive-event-bus >
