First of all, sorry all for the misformating in my previous email - seems my
mail client wasn’t playing well with the Apache mail server.
Adding that there's been consensus in the meeting to start with a pure Java
interface and go from there.
I’m not sure what this means - can you expand on this? I can't agree there’s a
consensus on this unless we’re all clear as to what this actually means.
I'm not sure that the statement "Ordering guarantees are **only** possible ... event
creation time" (emphasis mine) is correct.
This is in context of the implementation that was shared on the PR. In that
context, there is no guarantee on ordering - and I don’t agree that there is a
good reason why this is a hard requirement when it is still possible to show
results in an ordered manner to users.
During the meeting I mentioned that I strongly believe that it is not a good
idea to let users (as Apache Polaris we do NOT have customers) figure out
constraints and limitations and issues on their own.
Your objection is noted; but event listeners are inherently configurable by
users - and this level of “power-user features” is and always should be
configurable by the user themselves. As part of my implementation, I’ve
provided very conservative default values - but users are free to modify as
they require. I don’t think there is anything wrong against providing
reasonable defaults and then letting users decide based on their knowledge of
their usage patterns.
Neither the Iceberg proposal nor PR 1844 are suitable for the auditing use case, because
auditing is a _very_ different beast and implies way more requirements than "just
store some data w/o any consistency guarantees".
Happy to discuss what other requirements are not being fulfilled here for
auditing use cases. The way I look at it, this implementation provides the most
reasonable, resilient implementation without creating a crazy amount of
infrastructure for an out-of-the-box experience. An implementation involving
Kafka/message broker to fire-and-forget events (and rely on Kafka to sink the
events properly) would, of course, be much more resilient - but no longer works
out of the box for Apache Polaris. And to underscore the above point - the
choice of which event listener to use is again on the user. They may choose to
use one of the implementations out of the box - or write one of their own - or
not to enable events/auditing altogether. It should ultimately, always be, the
user's choice.
There are still concerns mentioned in the Iceberg events proposal, with a huge impact to this
effort. So I strongly believe that both efforts are very tightly coupled and not orthogonal efforts
that could be handled independently. For example, I do not see how the "metadata payload size
concern" is mitigated in PR 1844. We had the same discussion around "caching Iceberg
metadata in Polaris".
This is something I’ve brought up in the Iceberg proposal as well and would
like to see changed as well; but ultimately, this is not a change that forces a
drastic change regardless of the outcome. We have a variety of workarounds on
this particular topic (such as not storing the larger metadata payloads
altogether and showing a null object to the user - or truncating the larger
fields, etc.) I don’t find making a decision on this as required for an MVP
change - but if you feel that this is the case, please bring all topics that
fit this criteria and I am happy to discuss and service them as required.
During the meeting some people raised concerns about the "buffering" that is strictly
speaking not a necessity, but also introduced in 1844. That introduces additional consistency
issues, additional risk of losing events and additional ordering issues. That is a very different
problem than "just storing some data".
I believe this was mostly Alex that brought up this concern; as per a different
mailing thread, we had discussed this already:
https://lists.apache.org/thread/fqfsy03855rv3mwscol3qnxnf4xcnc3v. I still don’t
agree that we can write back to the persistence on read-generated events as
well on a per-call basis. But if that’s what it will take to get this PR
merged, I’m happy to remove the buffer implementations and write back to
persistence on every event generated. What I will not take responsibility for,
in that case, is potential user complaints on latency and DB load once they
enable writing back to the persistence (on either write-only or read-write
event generation). Please let me know how you and Alex would like to proceed.
To also add context, the above Mailing List thread has been open for over a
month detailing all of this and did not receive these concerns at any time
regarding this. It is immensely frustrating that contributors follow all the
processes recommended - yet still end up with the possibility of wasted efforts
at the 11th hour.
Best,
Adnan Hemani
On Jun 18, 2025, at 3:40 AM, Robert Stupp <sn...@snazy.de> wrote:
Adding that there's been consensus in the meeting to start with a pure Java
interface and go from there.
I'm not sure that the statement "Ordering guarantees are **only** possible ... event
creation time" (emphasis mine) is correct.
During the meeting I mentioned that I strongly believe that it is not a good
idea to let users (as Apache Polaris we do NOT have customers) figure out
constraints and limitations and issues on their own.
Neither the Iceberg proposal nor PR 1844 are suitable for the auditing use case, because
auditing is a _very_ different beast and implies way more requirements than "just
store some data w/o any consistency guarantees".
There are still concerns mentioned in the Iceberg events proposal, with a huge impact to this
effort. So I strongly believe that both efforts are very tightly coupled and not orthogonal efforts
that could be handled independently. For example, I do not see how the "metadata payload size
concern" is mitigated in PR 1844. We had the same discussion around "caching Iceberg
metadata in Polaris".
During the meeting some people raised concerns about the "buffering" that is strictly
speaking not a necessity, but also introduced in 1844. That introduces additional consistency
issues, additional risk of losing events and additional ordering issues. That is a very different
problem than "just storing some data".
On 17.06.25 21:16, Adnan Hemani wrote:
Hi everyone,
In lieu of a recording of today’s Community Sync on Events, I am posting some
notes regarding what was discussed:
What is the relationship between Iceberg Events API and Polaris Events, which are proposed
in
https://www.google.com/url?q=https://github.com/apache/polaris/pull/1844&source=gmail-imap&ust=1750848131000000&usg=AOvVaw37B6mpoGEqTLWUurMAUCzZ?
Persisting Polaris events are a pre-requisite of the Iceberg Events API - but
are not strictly tied to this. Users could find value in being able to persist
the Polaris Events without using the Iceberg Events API.
What Query Patterns are we expecting?
Going based on the assumption that the Iceberg Events API will be a primary
consumer of the Polaris Events and that it is almost finalized. The proposed
data schema for events is designed to work efficiently with the current state
of the Iceberg Events API.
What’s the Intended Use-Case?
This will go out in a different email later today under the original proposal
thread to ensure all context is in the same email thread.
If auditing is a potential use-case, then what guarantees are we able to
provide?
Ordering guarantees are only possible in that the event creation time is listed
with the Polaris Event. When querying Polaris Events from the database, we can
always sort events based on this timestamp.
Durability guarantees can be found in some implementations - but this is up to
the customer to choose which implementation they choose and how they’d like to
configure that implementation. All of these configurations are present in the
PR as it stands today.
A potential Kafka implementation may help with these concerns - but lacks an
end-to-end customer experience within Polaris and may be pushing the concerns
forward to Kafka rather than solving them. Unsure how this may work with
Iceberg Events API in the future.
Can the PR be broken up further?
Yes, it is possible - but unclear what parts are not necessary at this time.
Community to review and make suggestions on the PR.
Next Steps/Action Items:
Community: to review PR as it stands and provide high-level
recommendations/suggestions
Adnan Hemani: Send email regarding intended use cases.
Adnan Hemani: To respond to all reviews on PRs.
Please do respond to this email with anything I may have missed out on! Thanks
to everyone who was able to make it to this morning’s sync and for everyone’s
contributions :)
Best,
Adnan Hemani
On Jun 13, 2025, at 4:43 PM, Adnan Hemani <adnan.hem...@snowflake.com> wrote:
Hi all,
As we were not able to discuss at the previous community sync, I’m setting a quick sync
early next week to discuss Events in Persistence (PR:
https://www.google.com/url?q=https://github.com/apache/polaris/pull/1844&source=gmail-imap&ust=1750848131000000&usg=AOvVaw37B6mpoGEqTLWUurMAUCzZ).
Everyone is welcome to join and discuss on next steps here. Thanks!
Best,
ADNAN HEMANI
Polaris Community Sync on Events
Tuesday, June 17 · 9:00 – 9:30am
Time zone: America/Los_Angeles
Google Meet joining info
Video call link:
https://www.google.com/url?q=https://meet.google.com/ear-kiij-sur&source=gmail-imap&ust=1750848131000000&usg=AOvVaw1UuJNMFk1OBP1M37cak4Jy
Or dial: (US) +1 402-410-2280 PIN: 350 919 847#
More phone numbers:
https://www.google.com/url?q=https://tel.meet/ear-kiij-sur?pin%3D5036846369686&source=gmail-imap&ust=1750848131000000&usg=AOvVaw3C_51S6TE4965AiPLaVe1A