It looks like Daniel's change to log implicit commits went live on the wmf cluster with the release of 1.21wmf9.
Unfortunately, it doesn't appear to be as useful as hoped for tracking down nested callers of Database::begin, the majority of log entries just look like:
Wed Feb 13 22:07:21 UTC 2013 mw1146 dewiki DatabaseBase::begin: Transaction already in progress (from DatabaseBase::begin), performing implicit commit!
It's like we'd need a backtrace at this point. So I think we should revisit this issue and either:
- expand the logging to make it more useful
- disable it to prevent filling the dberror log with inactionable messages and nothing else
- revisit the ideas of either dropping the implicit commit by use of a transaction counter, or of emulating real nested transactions via save points.
The negative impact on concurrency due to longer lived transactions and longer held locks may negate the viability of the third option, even though it feels the most correct.
-Asher
On Wed, Sep 26, 2012 at 4:30 AM, Daniel Kinzler daniel@brightbyte.dewrote:
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
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l