Make RefreshLinksJob handle LinksUpdateConstructed hooks doing DB writes
authorAaron Schulz <aschulz@wikimedia.org>
Sat, 7 Jan 2017 05:52:29 +0000 (21:52 -0800)
committerBryanDavis <bdavis@wikimedia.org>
Sat, 7 Jan 2017 17:40:11 +0000 (17:40 +0000)
Bug: T153618
Change-Id: Iae52e9225fe132f2aa99e161611bf8258736d38d

includes/jobqueue/jobs/RefreshLinksJob.php

index 5f33ae0..651a332 100644 (file)
@@ -247,6 +247,11 @@ class RefreshLinksJob extends Job {
                        $parserOutput
                );
 
+               // For legacy hook handlers doing updates via LinksUpdateConstructed, make sure
+               // any pending writes they made get flushed before the doUpdate() calls below.
+               // This avoids snapshot-clearing errors in LinksUpdate::acquirePageLock().
+               $lbFactory->commitAndWaitForReplication( __METHOD__, $ticket );
+
                foreach ( $updates as $key => $update ) {
                        // FIXME: This code probably shouldn't be here?
                        // Needed by things like Echo notifications which need