Rollback live sessions on panic

Signed-off-by: Sean Du <do4suki@gmail.com>
This commit is contained in:
2026-07-13 08:03:12 +08:00
parent 96b7951ee1
commit ff67c554f7
5 changed files with 24 additions and 12 deletions
+16
View File
@@ -130,6 +130,22 @@ func (ss *Session) FinalizeOrRollback() {
ss.Finalize()
}
// FinalizeOrRollbackAfter runs cleanup only on the normal completion path.
func (ss *Session) FinalizeOrRollbackAfter(cleanup func()) {
defer func() {
if recovered := recover(); recovered != nil {
ss.Rollback()
panic(recovered)
}
}()
if ss.done {
return
}
cleanup()
ss.Finalize()
}
func (ss *Session) Rollback() {
if ss.done {
return