I have submitted two changes for review that hopefully remedy the current problems:
* I1e746322 implements better documentation, more consistent behavior, and easier tracking of implicit commits in Database::begin()
* I6ecb8faa restores the "flushing" commits that I removed a while ago under the assumption that a commit without a begin would be a no-op.
I hope this addresses any pressing issues.
I still think that we need a way to protect critical sections. But an RFC seems to be in order for that.
-- daniel