This was an atomic transaction per ALL hosts (IIRC introduced in the hope of better speed).
But a frequently occurring problem was that it processed SOME hosts, then ran into a
database locked error and then it rolled back all the changes and aborted processing for all hosts.
This led to the strange behaviour that users got emails about abuse flag being set, but it wasn't set.
And also other stuff behaved wrong, like fault counters.
Now, the atomic transaction is per host, so a host is either processed completely and correctly or rolled back.
If an exception happens, the roll back occurs, the traceback is logged and we just continue with next host.
the value of reset_available option tells whether to do the reset (True) or not (False).
it has nothing to do with the value being written to h.available when the reset is executed.
there is an issue with south and sqlite - it doesn't handle migrations that add BooleanField columns with defaults.
just use the faults script to set the flags to their correct default after migrating with south.