When a CTDB node becomes active after being stopped or banned, records that have been deleted and vacuumed on other nodes can be resurrected from newly active nodes during recovery. This can be fixed by marking volatile databases as invalid when a node becomes inactive and avoiding pulling records from invalid databases. Following this, vacuuming can be simplified by reverting to a 2 phase model. The current 3 phase vacuuming was created to solve the record resurrection problem, which is now solved more generally.
Created attachment 14517 [details] Patch for 4.9 and 4.8 Cherry picked cleanly from master. Patch applies cleanly to both 4.8. and 4.9. Compiles and new test passes in both branches.
Hi Karolin, This is ready for v4-8 and v4-9. Thanks.
(In reply to Amitay Isaacs from comment #2) Pushed to autobuild-v4-{8,9}-test.
(In reply to Karolin Seeger from comment #3) Pushed to both branches. Closing out bug report. Thanks!