public function __construct( BagOStuff $store, array $client, $posTime = null ) {
$this->store = $store;
$this->clientId = md5( $client['ip'] . "\n" . $client['agent'] );
- $this->key = $store->makeGlobalKey( __CLASS__, $this->clientId );
+ $this->key = $store->makeGlobalKey( __CLASS__, $this->clientId, 'v1' );
$this->waitForPosTime = $posTime;
$this->logger = new NullLogger();
}
$this->initPositions();
$masterName = $lb->getServerName( $lb->getWriterIndex() );
- if ( !empty( $this->startupPositions[$masterName] ) ) {
+ if (
+ isset( $this->startupPositions[$masterName] ) &&
+ $this->startupPositions[$masterName] instanceof DBMasterPos
+ ) {
$pos = $this->startupPositions[$masterName];
$this->logger->info( __METHOD__ . ": LB for '$masterName' set to pos $pos\n" );
$lb->waitFor( $pos );
$min = null;
foreach ( $data['positions'] as $pos ) {
- /** @var DBMasterPos $pos */
- $min = $min ? min( $pos->asOfTime(), $min ) : $pos->asOfTime();
+ if ( $pos instanceof DBMasterPos ) {
+ $min = $min ? min( $pos->asOfTime(), $min ) : $pos->asOfTime();
+ }
}
return $min;
$curPositions = $curValue['positions'];
// Use the newest positions for each DB master
foreach ( $shutdownPositions as $db => $pos ) {
- if ( !isset( $curPositions[$db] )
- || $pos->asOfTime() > $curPositions[$db]->asOfTime()
+ if (
+ !isset( $curPositions[$db] ) ||
+ !( $curPositions[$db] instanceof DBMasterPos ) ||
+ $pos->asOfTime() > $curPositions[$db]->asOfTime()
) {
$curPositions[$db] = $pos;
}