}
// This will reconnect if possible or return false if not
- $this->clearFlag( self::DBO_TRX, self::REMEMBER_PRIOR );
- $ok = ( $this->query( self::$PING_QUERY, __METHOD__, true ) !== false );
- $this->restoreFlags( self::RESTORE_PRIOR );
-
+ $flags = self::QUERY_IGNORE_DBO_TRX | self::QUERY_SILENCE_ERRORS;
+ $ok = ( $this->query( self::$PING_QUERY, __METHOD__, $flags ) !== false );
if ( $ok ) {
$rtt = $this->lastRoundTripEstimate;
}
protected function getHeartbeatData( array $conds ) {
// Query time and trip time are not counted
$nowUnix = microtime( true );
- // Do not bother starting implicit transactions here
- $this->clearFlag( self::DBO_TRX, self::REMEMBER_PRIOR );
- try {
- $whereSQL = $this->makeList( $conds, self::LIST_AND );
- // Use ORDER BY for channel based queries since that field might not be UNIQUE.
- // Note: this would use "TIMESTAMPDIFF(MICROSECOND,ts,UTC_TIMESTAMP(6))" but the
- // percision field is not supported in MySQL <= 5.5.
- $res = $this->query(
- "SELECT ts FROM heartbeat.heartbeat WHERE $whereSQL ORDER BY ts DESC LIMIT 1",
- __METHOD__,
- self::QUERY_SILENCE_ERRORS | self::QUERY_IGNORE_DBO_TRX
- );
- $row = $res ? $res->fetchObject() : false;
- } finally {
- $this->restoreFlags();
- }
+ $whereSQL = $this->makeList( $conds, self::LIST_AND );
+ // Use ORDER BY for channel based queries since that field might not be UNIQUE.
+ // Note: this would use "TIMESTAMPDIFF(MICROSECOND,ts,UTC_TIMESTAMP(6))" but the
+ // percision field is not supported in MySQL <= 5.5.
+ $res = $this->query(
+ "SELECT ts FROM heartbeat.heartbeat WHERE $whereSQL ORDER BY ts DESC LIMIT 1",
+ __METHOD__,
+ self::QUERY_SILENCE_ERRORS | self::QUERY_IGNORE_DBO_TRX
+ );
+ $row = $res ? $res->fetchObject() : false;
return [ $row ? $row->ts : null, $nowUnix ];
}