yuqi1129 opened a new issue, #13179:
URL: https://github.com/apache/gravitino/issues/13179

   ### Describe the subtask
   
   Fileset drop is already row-first (`store.deleteAndGet` wins the CAS, then 
storage is removed inside the transaction). What is left: create runs `mkdirs` 
before the store decision, so a losing create leaves a directory; a 
multi-location delete is not atomic, so a rollback after a partial delete 
restores a live row over half-missing data; a crash after physical deletion 
leaves the same gap; and slow I/O holds a pooled connection inside the 
transaction.
   
   Proposed change:
   - Add a `state` column to `fileset_meta`: create inserts `CREATING`, does 
the storage work, then CAS to `ACTIVE`; drop CAS to `DELETING`, deletes storage 
idempotently, then soft-deletes.
   - A background pass finishes `DELETING` rows and removes `CREATING` rows 
older than a grace period.
   - Document that physical data already deleted cannot be restored by metadata 
rollback.
   
   Design: implementation design Part 4 (S2). Gate G4.
   
   ### Parent issue
   
   https://github.com/apache/gravitino/issues/10238


-- 
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