From: Aaron Schulz Date: Mon, 2 Apr 2018 19:56:11 +0000 (-0700) Subject: rdbms: avoid incorrect warnings in getLagFromPtHeartbeat() X-Git-Tag: 1.31.0-rc.0~230 X-Git-Url: https://git.cyclocoop.org/admin/%7B%7Blocalurl:Special:UserLogin%7D%7D?a=commitdiff_plain;h=c3f084d44bab25a16fa110023859db81bce39100;p=lhc%2Fweb%2Fwiklou.git rdbms: avoid incorrect warnings in getLagFromPtHeartbeat() Change-Id: I4c0d42be0ee0c518d7bacdae0f76feb53007861e --- diff --git a/includes/libs/rdbms/database/DatabaseMysqlBase.php b/includes/libs/rdbms/database/DatabaseMysqlBase.php index e6acaa9fa2..0a63bdc6f1 100644 --- a/includes/libs/rdbms/database/DatabaseMysqlBase.php +++ b/includes/libs/rdbms/database/DatabaseMysqlBase.php @@ -73,6 +73,9 @@ abstract class DatabaseMysqlBase extends Database { // Cache getServerId() for 24 hours const SERVER_ID_CACHE_TTL = 86400; + /** @var float Warn if lag estimates are made for transactions older than this many seconds */ + const LAG_STALE_WARN_THRESHOLD = 0.100; + /** * Additional $params include: * - lagDetectionMethod : set to one of (Seconds_Behind_Master,pt-heartbeat). @@ -763,7 +766,10 @@ abstract class DatabaseMysqlBase extends Database { protected function getLagFromPtHeartbeat() { $options = $this->lagDetectionOptions; - if ( $this->trxLevel ) { + $staleness = $this->trxLevel + ? microtime( true ) - $this->trxTimestamp() + : 0; + if ( $staleness > self::LAG_STALE_WARN_THRESHOLD ) { // Avoid returning higher and higher lag value due to snapshot age // given that the isolation level will typically be REPEATABLE-READ $this->queryLogger->warning(