This is an automated email from the ASF dual-hosted git repository.

jshao pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git


The following commit(s) were added to refs/heads/main by this push:
     new 4ca3aedac [#5304] doc(core): add event listener document (#5307)
4ca3aedac is described below

commit 4ca3aedac69f7a72ea1dd1ee3fb68879166171a7
Author: FANNG <[email protected]>
AuthorDate: Tue Oct 29 10:56:46 2024 +0800

    [#5304] doc(core): add event listener document (#5307)
    
    ### What changes were proposed in this pull request?
    
    add event listener document
    
    ### Why are the changes needed?
    
    
    Fix: #5304
    
    ### Does this PR introduce _any_ user-facing change?
    
    no
    
    ### How was this patch tested?
    just document
---
 docs/gravitino-server-config.md | 31 +++++++++++++++++++++----------
 docs/iceberg-rest-service.md    |  6 ++++++
 2 files changed, 27 insertions(+), 10 deletions(-)

diff --git a/docs/gravitino-server-config.md b/docs/gravitino-server-config.md
index 9d319d289..a7c696051 100644
--- a/docs/gravitino-server-config.md
+++ b/docs/gravitino-server-config.md
@@ -113,16 +113,27 @@ To leverage the event listener, you must implement the 
`EventListenerPlugin` int
 
 #### Event
 
-Gravitino triggers a specific event upon the completion of the operation, with 
varying events being generated for different operations.
+Gravitino triggers a pre-event before the operation, a post-event after the 
completion of the operation and a failure event after the operation failed.
 
-| operation type     | event                                                   
                                                                                
                                                                                
                                                        | 
-|--------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| table operation    | `CreateTableEvent`, `AlterTableEvent`, 
`DropTableEvent`, `LoadTableEvent`, `ListTableEvent`, `PurgeTableFailureEvent`, 
`CreateTableFailureEvent`, `AlterTableFailureEvent`, `DropTableFailureEvent`, 
`LoadTableFailureEvent`, `ListTableFailureEvent`, `PurgeTableFailureEvent` |
-| fileset operation  | `CreateFileSetEvent`, `AlterFileSetEvent`, 
`DropFileSetEvent`, `LoadFileSetEvent`, `ListFileSetEvent`, 
`CreateFileSetFailureEvent`, `AlterFileSetFailureEvent`, 
`DropFileSetFailureEvent`, `LoadFileSetFailureEvent`, `ListFileSetFailureEvent` 
                                |
-| topic operation    | `CreateTopicEvent`, `AlterTopicEvent`, 
`DropTopicEvent`, `LoadTopicEvent`, `ListTopicEvent`, 
`CreateTopicFailureEvent`, `AlterTopicFailureEvent`, `DropTopicFailureEvent`, 
`LoadTopicFailureEvent`, `ListTopicFailureEvent`                                
                     |
-| schema operation   | `CreateSchemaEvent`, `AlterSchemaEvent`, 
`DropSchemaEvent`, `LoadSchemaEvent`, `ListSchemaEvent`, 
`CreateSchemaFailureEvent`, `AlterSchemaFailureEvent`, 
`DropSchemaFailureEvent`, `LoadSchemaFailureEvent`, `ListSchemaFailureEvent`    
                                       |
-| catalog operation  | `CreateCatalogEvent`, `AlterCatalogEvent`, 
`DropCatalogEvent`, `LoadCatalogEvent`, `ListCatalogEvent`, 
`CreateCatalogFailureEvent`, `AlterCatalogFailureEvent`, 
`DropCatalogFailureEvent`, `LoadCatalogFailureEvent`, `ListCatalogFailureEvent` 
                                |
-| metalake operation | `CreateMetalakeEvent`, `AlterMetalakeEvent`, 
`DropMetalakeEvent`, `LoadMetalakeEvent`, `ListMetalakeEvent`, 
`CreateMetalakeFailureEvent`, `AlterMetalakeFailureEvent`, 
`DropMetalakeFailureEvent`, `LoadMetalakeFailureEvent`, 
`ListMetalakeFailureEvent`                       |
+##### Post-event
+
+| Operation type                      | Post-event                             
                                                                                
                                                                                
                                                                                
                                                                                
                                                       | Since Version    |
+|-------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------|
+| table operation                     | `CreateTableEvent`, `AlterTableEvent`, 
`DropTableEvent`, `LoadTableEvent`, `ListTableEvent`, `PurgeTableFailureEvent`, 
`CreateTableFailureEvent`, `AlterTableFailureEvent`, `DropTableFailureEvent`, 
`LoadTableFailureEvent`, `ListTableFailureEvent`, `PurgeTableFailureEvent`      
                                                                                
                                                         | 0.5.0            |
+| fileset operation                   | `CreateFileSetEvent`, 
`AlterFileSetEvent`, `DropFileSetEvent`, `LoadFileSetEvent`, 
`ListFileSetEvent`, `CreateFileSetFailureEvent`, `AlterFileSetFailureEvent`, 
`DropFileSetFailureEvent`, `LoadFileSetFailureEvent`, `ListFileSetFailureEvent` 
                                                                                
                                                                                
              | 0.5.0            |
+| topic operation                     | `CreateTopicEvent`, `AlterTopicEvent`, 
`DropTopicEvent`, `LoadTopicEvent`, `ListTopicEvent`, 
`CreateTopicFailureEvent`, `AlterTopicFailureEvent`, `DropTopicFailureEvent`, 
`LoadTopicFailureEvent`, `ListTopicFailureEvent`                                
                                                                                
                                                                                
   | 0.5.0            |
+| schema operation                    | `CreateSchemaEvent`, 
`AlterSchemaEvent`, `DropSchemaEvent`, `LoadSchemaEvent`, `ListSchemaEvent`, 
`CreateSchemaFailureEvent`, `AlterSchemaFailureEvent`, 
`DropSchemaFailureEvent`, `LoadSchemaFailureEvent`, `ListSchemaFailureEvent`    
                                                                                
                                                                                
                     | 0.5.0            |
+| catalog operation                   | `CreateCatalogEvent`, 
`AlterCatalogEvent`, `DropCatalogEvent`, `LoadCatalogEvent`, 
`ListCatalogEvent`, `CreateCatalogFailureEvent`, `AlterCatalogFailureEvent`, 
`DropCatalogFailureEvent`, `LoadCatalogFailureEvent`, `ListCatalogFailureEvent` 
                                                                                
                                                                                
              | 0.5.0            |
+| metalake operation                  | `CreateMetalakeEvent`, 
`AlterMetalakeEvent`, `DropMetalakeEvent`, `LoadMetalakeEvent`, 
`ListMetalakeEvent`, `CreateMetalakeFailureEvent`, `AlterMetalakeFailureEvent`, 
`DropMetalakeFailureEvent`, `LoadMetalakeFailureEvent`, 
`ListMetalakeFailureEvent`                                                      
                                                                                
                               | 0.5.0            |
+| Iceberg REST server table operation | `IcebergCreateTableEvent`, 
`IcebergUpdateTableEvent`, `IcebergDropTableEvent`, `IcebergLoadTableEvent`, 
`IcebergListTableEvent`, `IcebergTableExistsEvent`, `IcebergRenameTableEvent`, 
`IcebergCreateTableFailureEvent`, `IcebergUpdateTableFailureEvent`, 
`IcebergDropTableFailureEvent`, `IcebergLoadTableFailureEvent`, 
`IcebergListTableFailureEvent`, `IcebergRenameTableFailureEvent`, 
`IcebergTableExistsFailureEvent` | 0.7.0-incubating |
+
+##### Pre-event
+
+Pre-event is only generated before Iceberg REST server table operations, the 
other operation doesn't generate pre-event for now.
+
+| Operation type                      | Pre-event                              
                                                                                
                                                                                
    | Since Version    |
+|-------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------|
+| Iceberg REST server table operation | `IcebergCreateTablePreEvent`, 
`IcebergUpdateTablePreEvent`, `IcebergDropTablePreEvent`, 
`IcebergLoadTablePreEvent`, `IcebergListTablePreEvent`, 
`IcebergTableExistsPreEvent`, `IcebergRenameTablePreEvent` | 0.7.0-incubating |
 
 #### Event listener plugin
 
@@ -136,7 +147,7 @@ The plugin provides several operational modes for how to 
process event, supporti
  
 - **ASYNC_ISOLATED**: Events are processed asynchronously, with each listener 
having its own dedicated queue and dispatcher thread. This approach offers 
better isolation but at the expense of multiple queues and dispatchers.
 
-For more details, please refer to the definition of the plugin.
+When processing pre-event, you could throw a `ForbiddenException` to skip the 
following executions. For more details, please refer to the definition of the 
plugin.
 
 ### Audit log configuration
 
diff --git a/docs/iceberg-rest-service.md b/docs/iceberg-rest-service.md
index ad44a2014..01f651449 100644
--- a/docs/iceberg-rest-service.md
+++ b/docs/iceberg-rest-service.md
@@ -18,6 +18,7 @@ The Apache Gravitino Iceberg REST Server follows the [Apache 
Iceberg REST API sp
   - pagination
 - Works as a catalog proxy, supporting `Hive` and `JDBC` as catalog backend.
 - Supports different storages like `S3`, `HDFS`, `OSS`, `GCS` and provides the 
capability to support other storages.
+- Supports event listener.
 - Supports OAuth2 and HTTPS.
 - Provides a pluggable metrics store interface to store and delete Iceberg 
metrics.
 
@@ -299,6 +300,11 @@ The `clients` property for example:
 `catalog-impl` has no effect.
 :::
 
+
+### Event listener
+
+Gravitino generates pre-event and post-event for table operations and provide 
a pluggable event listener to allow you to inject custom logic. For more 
details, please refer to [Event listener 
configuration](gravitino-server-config.md#event-listener-configuration).
+
 ### Apache Iceberg metrics store configuration
 
 Gravitino provides a pluggable metrics store interface to store and delete 
Iceberg metrics. You can develop a class that implements 
`org.apache.gravitino.iceberg.service.metrics.IcebergMetricsStore` and add the 
corresponding jar file to the Iceberg REST service classpath directory.

Reply via email to