Hi Prithvi and all, I did another review round in GH.
Re-posting here the key comment: I'm very hesitant about expiring soft-deleted entities during REST requests against other entities. I think the resulting behaviours are too "magical" from the end user's perspective. I believe the expiry use case belongs more naturally in the Admin Tool given the current codebase. Eventually it could also be handled by the delegation service [3990]. WDYT? Thanks, Dmitri. [3990] https://github.com/apache/polaris/pull/3990 On Mon, Oct 26, 2026 at 4:34 PM Prithvi S <[email protected]> wrote: > Hi all, > > Quick follow-up on the cleanup gating for Phase 1: > holding the identifier until the entity cleanup and its > child tasks finish, then releasing it. > > While implementing this, I found that the coupling is > in the metastore manager. dropEntityIfExists removes > the entity (freeing the name) and schedules the cleanup > task in the same transaction, by design. > > To keep the name reserved until cleanup completes, I'd > need to separate these operations: keep the dropped > entity, schedule cleanup, and remove the entity only > after the cleanup task and its child tasks have finished. > > We don't currently have a way to detect when a task > tree has completed. Tasks are fire-and-forget and > self-remove on success, so I'd also need to add a small > completion check. > > This touches PolarisMetaStoreManager, which has both > JDBC (atomic and transactional) and NoSQL > implementations. I wanted to check the direction before > coding, in line with our interface-change guidance. > > Does keeping the entity reserved and gating its removal > on cleanup completion sound right, or would you prefer > a different approach, such as a dedicated purge task > that handles the final entity removal? > > Thanks, > Prithvi > > > >
