Set cpPosTime cookie for the non-redirect case as well
This is useful if the ChronologyProtector store cannot sync among datacenters and waitForReplication() is DC-local. It only applies if the user stays on the domain, however. Change-Id: I800cade7b87a0f02d6a429e70924c54189a4a7af
This commit is contained in:
parent
c954a4efe8
commit
a3814f52c4
1 changed files with 8 additions and 0 deletions
|
|
@ -604,6 +604,14 @@ class MediaWiki {
|
|||
// OutputPage::output() is fairly slow; run it in $postCommitWork to mask
|
||||
// the latency of syncing DB positions accross all datacenters synchronously
|
||||
$flags = $lbFactory::SHUTDOWN_CHRONPROT_SYNC;
|
||||
if ( $lbFactory->hasOrMadeRecentMasterChanges( INF ) ) {
|
||||
$cpPosTime = microtime( true );
|
||||
// Set a cookie in case the DB position store cannot sync accross datacenters.
|
||||
// This will at least cover the common case of the user staying on the domain.
|
||||
$expires = time() + ChronologyProtector::POSITION_TTL;
|
||||
$options = [ 'prefix' => '' ];
|
||||
$request->response()->setCookie( 'cpPosTime', $cpPosTime, $expires, $options );
|
||||
}
|
||||
}
|
||||
// Record ChronologyProtector positions for DBs affected in this request at this point
|
||||
$lbFactory->shutdown( $flags, $postCommitWork );
|
||||
|
|
|
|||
Loading…
Reference in a new issue