$wgMemc->unlock( $key );
}
$sec = microtime( true ) - $start;
- wfDebugLog( 'StashEdit', "Waited $sec seconds on '$key'." );
+ if ( $sec > .01 ) {
+ wfDebugLog( 'StashEdit', "Waited $sec seconds on '$key'." );
+ }
}
if ( !is_object( $editInfo ) || !$editInfo->output ) {
// If an item is renewed, mind the cache TTL determined by config and parser functions
$since = time() - wfTimestamp( TS_UNIX, $parserOutput->getTimestamp() );
$ttl = min( $parserOutput->getCacheExpiry() - $since, 5 * 60 );
- if ( $ttl > 0 && !$parserOutput->getFlag( 'vary-revision' ) ) {
+
+ // Note: ParserOutput with that contains secondary data update callbacks can not be
+ // stashed, since the callbacks are not serializable (see ParserOutput::__sleep).
+ $hasCustomDataUpdates = $parserOutput->hasCustomDataUpdates();
+
+ if ( $ttl > 0 && !$parserOutput->getFlag( 'vary-revision' ) && !$hasCustomDataUpdates ) {
// Only store what is actually needed
$stashInfo = (object)array(
'pstContent' => $pstContent,