rdbms: clean up DBO_TRX behavior for onTransaction* callbacks
authorAaron Schulz <aschulz@wikimedia.org>
Mon, 19 Mar 2018 05:26:11 +0000 (22:26 -0700)
committerAaron Schulz <aschulz@wikimedia.org>
Wed, 4 Apr 2018 06:16:45 +0000 (23:16 -0700)
commitd4c31cf84115a7e447fdf1284c823000238981f9
treef96c1db0247f25c45e425894e7c4d0db5c1726ff
parentb5fe7fbbed00c402c53e45912140ee2090e5c60a
rdbms: clean up DBO_TRX behavior for onTransaction* callbacks

* Make onTransactionIdle() wait until any transaction round
  is gone, even if there is no SQL transaction active. This
  is what onTransactionPreCommitOrIdle() already does.
* Decouple "transaction round mode" (DBO_TRX) from whether a
  round is active via a 'trxRoundId' LB info field. If rounds
  are enabled, but not is started, then the transaction state
  should be interpreted as "idle".
* Improve related documentation.
* Add more related unit tests.

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