rdbms: clean up DBO_TRX behavior for onTransactionPreCommitOrIdle()
authorAaron Schulz <aschulz@wikimedia.org>
Mon, 19 Mar 2018 23:20:15 +0000 (16:20 -0700)
committerAaron Schulz <aschulz@wikimedia.org>
Tue, 20 Mar 2018 01:11:24 +0000 (01:11 +0000)
commitb0ee0a8d9f1190740894b4e846bfd83fa6a90de1
tree916ce0d623240b3d06f511ac0c1d9dffbcb15749
parentee38d9bbe318e42d7eace6e3092fde2069924d3a
rdbms: clean up DBO_TRX behavior for onTransactionPreCommitOrIdle()

* Make sure cancelled onTransactionPreCommitOrIdle() callbacks do not
  run if a transaction round is rolled back and then a second round is
  committed. LoadBalancer::rollbackMasterChanges() now always calls
  rollback(), which in turn always cleans up such callbacks.
* Remove error logging for rollback() calls when trxLevel = 0; this is
  harmless and is sometimes hard to avoid in error handling anyway.
* Add more related unit tests.

Change-Id: I6bdefe8bf8b6630fc252b5bbafe4808758ba1684
includes/libs/rdbms/database/Database.php
includes/libs/rdbms/loadbalancer/LoadBalancer.php
tests/phpunit/includes/libs/rdbms/database/DatabaseTest.php