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]

Reply via email to