mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-19 05:26:47 +00:00
36a0d1eaba
erasePluginUserData deleted the host-side plugin rows and then queued the plugin erasures as separate commits, and deleteGuest ran it before its own transaction. When the guest delete failed, the guest kept its account but had lost its plugin rows, with erasures queued for a user that still exists. The erasure is now one transaction, and deleteGuest runs it inside the same transaction as the budget re-split and the user delete, so it becomes a savepoint of that write. Only DB writes and a synchronous readdir run inside.