I created DirectUpdateHandler3 as a copy of DirectUpdateHandler2 and then did a pass across it rebuilding the locking, stats, and tracker. I am basically at the "IDE show no errors" stage and going to read it a few more times, and start testing. Feedback is welcome as I'm in the dark on a few areas of this code and I am working from a lot of assumptions. Some event placeholder methods remain while I think through the issues, will trim it back when done.
Events to the auto commit tracker are within the locks to help avoid cases where we set the counts to 0 after other work has concurrently been done. The stats information has similar concerns and is not yet dealt with, so some stats might reset to 0 on commit when there was further work being done (so they should not go to 0).