/** @var string|null */
protected $sslCertPath;
/** @var string|null */
+ protected $sslCAFile;
+ /** @var string|null */
protected $sslCAPath;
/** @var string[]|null */
protected $sslCiphers;
* - useGTIDs : use GTID methods like MASTER_GTID_WAIT() when possible.
* - sslKeyPath : path to key file [default: null]
* - sslCertPath : path to certificate file [default: null]
- * - sslCAPath : parth to certificate authority PEM files [default: null]
+ * - sslCAFile: path to a single certificate authority PEM file [default: null]
+ * - sslCAPath : parth to certificate authority PEM directory [default: null]
* - sslCiphers : array list of allowable ciphers [default: null]
* @param array $params
*/
? $params['lagDetectionOptions']
: [];
$this->useGTIDs = !empty( $params['useGTIDs' ] );
- foreach ( [ 'KeyPath', 'CertPath', 'CAPath', 'Ciphers' ] as $name ) {
+ foreach ( [ 'KeyPath', 'CertPath', 'CAFile', 'CAPath', 'Ciphers' ] as $name ) {
$var = "ssl{$name}";
if ( isset( $params[$var] ) ) {
$this->$var = $params[$var];
*/
abstract protected function mysqlError( $conn = null );
+ protected function wasQueryTimeout( $error, $errno ) {
+ return $errno == 2062;
+ }
+
/**
* @param string $table
* @param array $uniqueIndexes
* @see https://www.percona.com/doc/percona-toolkit/2.1/pt-heartbeat.html
*/
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 {
$this->restoreFlags();
}
- return [ $row ? $row->ts : null, microtime( true ) ];
+ return [ $row ? $row->ts : null, $nowUnix ];
}
protected function getApproximateLagStatus() {
return true;
}
- $this->queryLogger->warning( __METHOD__ . " failed to acquire lock '$lockName'\n" );
+ $this->queryLogger->info( __METHOD__ . " failed to acquire lock '{lockname}'",
+ [ 'lockname' => $lockName ] );
return false;
}