roryqi commented on code in PR #11364: URL: https://github.com/apache/gravitino/pull/11364#discussion_r3341194945
########## docs/iceberg-rest-service.md: ########## @@ -91,6 +91,28 @@ Please note that, it only takes affect in `gravitino.conf`, you don't need to sp The filter in `customFilters` should be a standard javax servlet filter. You can also specify filter parameters by setting configuration entries in the style `gravitino.iceberg-rest.<class name of filter>.param.<param name>=<value>`. +### Table purge behavior + +When a client drops a table with `purgeRequested=true`, Gravitino keeps the existing synchronous behavior by default: the catalog entry and the table files are removed before the `DELETE` request returns. + +When the Iceberg REST service runs as an auxiliary service inside Gravitino, an async cleanup worker pool starts automatically and reuses the Gravitino entity store relational backend. In standalone mode, async cleanup is not available and purge requests always run synchronously. + +In auxiliary mode, a client can opt in to asynchronous file cleanup per request by sending the HTTP header `X-Gravitino-Async-Purge: true` together with `DELETE ...?purgeRequested=true`. The server then removes the catalog entry before returning `204 No Content`, records a durable cleanup job in the Gravitino relational backend, and deletes the table files in the background. While an active cleanup job exists for a table identifier, `createTable` and `registerTable` for the same catalog, namespace, and table return `409 Conflict`; after the cleanup job reaches a terminal state the identifier can be reused. Review Comment: case insensitive. All works. -- 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]
