Extensions that blindly call $dbw->begin()/commit() break any pending transactions by pre-maturely committing them. This causes log warnings and breaks atomicity. Such callers should instead use:
- $dbw->startAtomic()/endAtomic()
- $dbw->onTranasction*()
- DeferredUpdates
...to accomplish similar ends.
Note that Job classes and Maintenance scripts are usually exceptions, as they have control of the outermost scope of database transactions, so they can use begin()/commit().