obelix74 commented on code in PR #3924:
URL: https://github.com/apache/polaris/pull/3924#discussion_r2885854606
##########
site/content/in-dev/unreleased/proposals/observability-rest-api.md:
##########
@@ -1072,7 +1072,49 @@ components:
## 7. Implementation Notes
-### 7.1 Database Queries
+### 7.1 Prerequisite: Extend Event Persistence Layer
+
+> **Important:** The current `PolarisPersistenceEventListener` in Apache
Polaris only persists **two event types**: `AFTER_CREATE_TABLE` and
`AFTER_CREATE_CATALOG`. All other events are ignored. For the Events API to be
useful, the persistence layer must be extended to capture all relevant mutation
events.
+
+#### Current State
+
+The existing event listener (`PolarisPersistenceEventListener.java`) has a
limited switch statement:
+
+```java
+public void onEvent(PolarisEvent event) {
+ switch (event.type()) {
+ case AFTER_CREATE_TABLE -> handleAfterCreateTable(event);
+ case AFTER_CREATE_CATALOG -> handleAfterCreateCatalog(event);
+ default -> {
+ // Other events not handled by this listener
+ }
+ }
+}
+```
+
+#### Required Changes
+
+The persistence layer needs to be extended to capture all `AFTER_*` mutation
events that should be exposed via the Events API:
+
+| Category | Events to Add |
+|----------|---------------|
+| **Table Operations** | `AFTER_UPDATE_TABLE`, `AFTER_DROP_TABLE`,
`AFTER_RENAME_TABLE`, `AFTER_REGISTER_TABLE` |
+| **View Operations** | `AFTER_CREATE_VIEW`, `AFTER_DROP_VIEW`,
`AFTER_REPLACE_VIEW`, `AFTER_RENAME_VIEW` |
+| **Namespace Operations** | `AFTER_CREATE_NAMESPACE`,
`AFTER_UPDATE_NAMESPACE_PROPERTIES`, `AFTER_DROP_NAMESPACE` |
+| **Catalog Operations** | `AFTER_DELETE_CATALOG`, `AFTER_UPDATE_CATALOG` |
+| **Principal/Role Management** | `AFTER_CREATE_PRINCIPAL`,
`AFTER_DELETE_PRINCIPAL`, `AFTER_ROTATE_CREDENTIALS`,
`AFTER_CREATE_PRINCIPAL_ROLE`, `AFTER_DELETE_PRINCIPAL_ROLE`,
`AFTER_CREATE_CATALOG_ROLE`, `AFTER_DELETE_CATALOG_ROLE` |
+| **Grant Operations** | `AFTER_ADD_GRANT_TO_CATALOG_ROLE`,
`AFTER_REVOKE_GRANT_FROM_CATALOG_ROLE`, `AFTER_ASSIGN_PRINCIPAL_ROLE`,
`AFTER_REVOKE_PRINCIPAL_ROLE`, `AFTER_ASSIGN_CATALOG_ROLE_TO_PRINCIPAL_ROLE`,
`AFTER_REVOKE_CATALOG_ROLE_FROM_PRINCIPAL_ROLE` |
+| **Policy Operations** | `AFTER_CREATE_POLICY`, `AFTER_UPDATE_POLICY`,
`AFTER_DROP_POLICY`, `AFTER_ATTACH_POLICY`, `AFTER_DETACH_POLICY` |
+
+**Note:** Read-only operations (`AFTER_LOAD_*`, `AFTER_LIST_*`, `AFTER_GET_*`,
`AFTER_CHECK_EXISTS_*`) should **not** be persisted for the Events API as they
do not represent catalog mutations. However, deployments requiring read audit
may choose to persist these separately.
+
+#### Implementation Approach
+
+1. **Phase 1**: Extend `PolarisPersistenceEventListener` to handle all
Iceberg-standard operations (tables, views, namespaces)
Review Comment:
I am not sure if this should be made a Polaris standard implementation.
Users can implement their own listeners to persist the kind of events they are
interested in.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]