// Initialize the request object in $wgRequest
$wgRequest = RequestContext::getMain()->getRequest(); // BackCompat
-// Set user IP/agent information for causal consistency purposes
+// Set user IP/agent information for causal consistency purposes.
+// The cpPosTime cookie has no prefix and is set by MediaWiki::preOutputCommit().
+$cpPosTime = $wgRequest->getFloat( 'cpPosTime', $wgRequest->getCookie( 'cpPosTime', '' ) );
MediaWikiServices::getInstance()->getDBLoadBalancerFactory()->setRequestInfo( [
'IPAddress' => $wgRequest->getIP(),
'UserAgent' => $wgRequest->getHeader( 'User-Agent' ),
'ChronologyProtection' => $wgRequest->getHeader( 'ChronologyProtection' ),
- // The cpPosTime cookie has no prefix and is set by MediaWiki::preOutputCommit()
- 'ChronologyPositionTime' => $wgRequest->getFloat(
- 'cpPosTime',
- $wgRequest->getCookie( 'cpPosTime', '' )
- )
+ 'ChronologyPositionTime' => $cpPosTime
] );
+// Make sure that caching does not compromise the consistency improvements
+if ( $cpPosTime ) {
+ MediaWikiServices::getInstance()->getMainWANObjectCache()->useInterimHoldOffCaching( false );
+}
+unset( $cpPosTime );
// Useful debug output
if ( $wgCommandLineMode ) {