rdbms: refactor caching in LoadBalancer::getReadOnlyReason()
authorAaron Schulz <aschulz@wikimedia.org>
Tue, 16 Jul 2019 06:06:13 +0000 (23:06 -0700)
committerAaron Schulz <aschulz@wikimedia.org>
Sun, 25 Aug 2019 21:31:28 +0000 (21:31 +0000)
commitc06bda1bed7db0312b71056ec666c00adeb45290
treeb90b962401c8a09a40493adda07cc2511118e350
parentf18af0b61f102f0d2146dfb8b48895acc04508de
rdbms: refactor caching in LoadBalancer::getReadOnlyReason()

Avoid nesting of the same getWithSetCallback() cache updates.
Also favor accuracy over initial cache use for the case where
there is already a master connection. Add missing "lockTSE"
flag to protect against stampedes updating stale values.

Change serverIsReadOnly() to use SELECT in mysql instead of
SHOW to avoid internal temporary tables.

Bug: T227838
Change-Id: I2b0d680c9c3bdc7aaa1d1e1d6beb2dd203a815f1
includes/libs/rdbms/database/DatabaseMysqlBase.php
includes/libs/rdbms/loadbalancer/ILoadBalancer.php
includes/libs/rdbms/loadbalancer/LoadBalancer.php