User Details
- User Since
- Oct 20 2014, 5:25 PM (153 w, 1 d)
- Availability
- Available
- IRC Nick
- AaronSchulz
- LDAP User
- Aaron Schulz
- MediaWiki User
- Aaron Schulz
Yesterday
Wed, Sep 20
If want to avoid flooding cache with rarely used long-tail combinations, maybe something like this could be done:
Tue, Sep 19
Mon, Sep 18
Problem seems to be:
if ( $this->stage <= MIGRATION_WRITE_BOTH ) {
$fields[$this->key] = $this->lang->truncate( $comment->text, 255 );
}Sat, Sep 16
Probably the onMoveTranslationUnits handler should be a closure sent to DeferredUpdates. Anything that needs to COMMIT/BEGIN within it's scope needs full transaction control, which is not usually guaranteed when some hook triggers.
Fri, Sep 15
- PROBLEM: in LinksUpdate, runForTitle() starting off with acquirePageLock(), then calling doUpdate() for the secondary update list, and returning without committing. This meant that any caller using this method inside a loop had to call commitMasterChanges() itself somehow, otherwise, the acquirePageLock() call would fail. The multi-title case of RefreshLinksJob had a for-loop that did not do this. Note that acquirePageLock() uses getScopedLockAndFlush() which is intended for "critical sections" (https://en.wikipedia.org/wiki/Critical_section) involving read/writing to the database. Since it makes to sense to acquire a lock and then read a stale snapshot (from REPEATABLE-READ) from *before* lock acquisition, Database demands that any transaction be cleared. It will do so automatically if there are no writes, but otherwise it fails since committing prematurely may break atomicity.
- INTRODUCTION: This was broken since 63a3911a67507731695bad3188f486219a563b7d but nothing used multi-title refreshlinks jobs. 0df49eeaf49dcd84cee5afc678de43ebd6c984c5 introduced a use case for this and made the bug manifest itself.
- AVOIDANCE: since this would seem to happen for any multi-tutle job run, I'm not sure how this got past testing unless there were (a) no links updated and the test jobs were triggered by null or non-link changed edits or (b) the edited test entities only had one backlink. Future backlink change propagation testing should cover these cases.
I'd leave it open. The above change avoids the jobqueue and thus fast tail jobs piling due to slow wikidata jobs in the head of the queue. It should help, I'd assume.
Thu, Sep 14
I think LinksUpdate for the page directly edited can probably be moved (back) to doing the actual work post-send.
Wed, Sep 13
For catching slow queries, we can use logging to logstash when the runtime passes a certain threshold (to avoid spamming the service). A leaderboard could be added to Kibana for the top occurrences of normalized messages.
Tue, Sep 12
Sat, Sep 9
Fri, Sep 8
Tue, Sep 5
Those refreshLInks jobs (from wikibase) are the only ones that use multiple titles per job, so they will be a lot slower (seems to be 50 pages/job) than the regular ones from MediaWiki core. That is a bit on the slow side for a run time of a non-rare job type (e.g. TMH or GWT).
Sat, Sep 2
Thu, Aug 31
As far as retries go, the attempts hash for wikidatawiki:htmlCacheUpdate has few entries with run counts no greater than 3. The onl incrementing code is doPop() in MediaWiki, the same code that made them go up to 3 to begin with. If the same job ran many times, I'd expect there to be very high values there.
Wed, Aug 30
Aug 25 2017
Though this bit is problematic:
Ignored purges still count as work items, yes.
Note that for de-duplication, as long as the job has rootJobTimestamp set, it will ignore rows already touched (page_touched) to a higher/equal value, and likewise not send purges to the corresponding pages. So the CDN aspects *should* already have lots of de-duplication, the job spam notwithstanding.
Aug 24 2017
Secondary purges where for dealing with replication lag scenarios, not lost purges. That was one extra purge (2X).
From
mwscript maintenance/runJobs.php wikidatawiki --type htmlCacheUpdate --nothrottle --maxjobs 100 | grep "IsSelf=1"
Aug 23 2017
CommonSettings.php will still need updating.
Aug 22 2017
Looks like using WikiMap is the best choice IMO.
Mostly htmlCacheUpdate jobs on wikidatawiki:
Aug 17 2017
In config, with $wgTrxProfilerLimits you can do:
Aug 16 2017
Another option is to have the MediaWiki.php code use InterWikiLookup::getAllPrefixes() and the 'iw_url' field for each item.
Aug 14 2017
Closing. The two logging-related improvement action item left have their own tasks.
Error rate went from 500-1000/s to 50-80/s.
Yeah that list should be updated. I happen to investigate things there often (for now), though it's not really in my team domain.
Aug 12 2017
Max and I also noticed backlinks to this wiki from commons in global usage tables.
Aug 9 2017
aaron@terbium:~$ mwscript extensions/WikimediaMaintenance/wmfManageJobs.php aawiki --target ukwikimedia refreshLinks: 0 queued; (empty or doesn't exist) htmlCacheUpdate: 22 queued; 0 claimed (0 active, 0 abandoned); 0 delayed
Did you check redis? Are their jobs back in the queues? It's possible some remote wiki is inserting jobs via JobSpecification or something.
Aug 7 2017
We should see if there is any unrelated downside to adding login/wikidata.org. I'd imagine it would be useful for account creation on connections with high latency.
$wgReadOnly is enforced at the LB/DB layer in addition to random callers checked wfReadOnly().
Have you tied something like this?
$wgReadOnly = ( PHP_SAPI === 'cli' ) ? false : 'This wiki is currently being upgraded to a newer software version.'
Jul 23 2017
I commented on the patch, it's a METHOD mismatch problem, so the commit/wait steps don't happen (just the one big one like before).
Jul 19 2017
Roll-out should probably be something like:
a) DB_MASTER connections for testwiki/mediawikiwiki (group 0)
b) DB_MASTER connections for S3 (25%, 50%, then 100% of connections)
c) DB_MASTER connections for external stores (25%, 50%, then 100% of connections)
d) All DB_MASTER connections remaining shards (25%, 50%, then 100% of connections)
Jul 14 2017
Reading things like https://www.percona.com/blog/2013/10/10/mysql-ssl-performance-overhead/ I think this may only make sense for DB_MASTER (also index 0) connections.
Jul 13 2017
I don't see much noise from the logs about refreshLinks at https://logstash.wikimedia.org/goto/a029053d21a195163e68acc0a23e760e.
Jul 12 2017
Read-only activates for bots sooner, which might lower the edit rate and change the distribution of edits (slower/faster, the ratio with navtiming going up, and such). I'm not sure that would make spikes itself. Actually replication lag adds on to save time, so that can certainly make spikes in navtiming due to ChronologyProtector.
Jul 11 2017
Jul 6 2017
I also wonder why some of those log warnings come from close() and others have the proper commitMasterChanges() bit in the stack trace. Normally, there should be nothing to commit by close() and it is just commits for sanity.
