User Details
- User Since
- Feb 17 2017, 7:18 PM (495 w, 4 d)
- Availability
- Available
- LDAP User
- Jsn.sherman
- MediaWiki User
- JSherman (WMF) [ Global Accounts ]
Yesterday
Updates from code code review and comments here:
- Variant tagging uses unmanaged-data fields rather than custom keys:
- resolved module group goes in in action_context
- assigned variant in goes in action_subtype
- Tagging happens in send(), not submitInteraction(), per @Sfaci's note above about the deprecation.
Mon, Aug 17
Fri, Aug 14
Thu, Aug 13
Part of what we need to do here is untangle the the application code -> database error side of this: wikilink shouldn't be trying to run userlist updates on former partners. the underlying links_urlpattern_collections foreignkey failure is still live in the code, and it'll happen again for the next partner we delete if we don't fix it.
Wed, Aug 12
SHOW ENGINE INNODB STATUS surfaced this as the latest foreign-key error on prod, timestamped 2026-08-11 23:36:31:
So we're still gathering link events, but we'll need to fix several issues that come together to make the userlist update job sad before we backfill and re-enable the cron. I'll write up a task list here.
hotfix to pause userlist update:
https://github.com/WikipediaLibrary/externallinks/commit/de5186f19220af1ef3221db0449abf84a0d2d3bc
verified that the update user list script is busted and has been for some time; it's been silently incrementing db ids and then discarding them until it passed the 32 bit integer limit. We have problems visible going back to April 18, 2025, which is the beginning of the discoverable record of this problem (eg. it could have started before then). That was when we fixed a whole other set of issues that were keeping the cron jobs from completing for different reasons.
merged
Tue, Aug 11
Verified that the api credentials are on the box where they are supposed to be and the job is firing every hour:
crons-1 | 2026-08-11T07:05:01.950708000Z [INFO] Executing users_update_lists.py crons-1 | 2026-08-11T08:05:02.321202000Z [INFO] Executing users_update_lists.py crons-1 | 2026-08-11T09:05:01.593929000Z [INFO] Executing users_update_lists.py crons-1 | 2026-08-11T10:05:02.165584000Z [INFO] Executing users_update_lists.py crons-1 | 2026-08-11T11:05:02.114458000Z [INFO] Executing users_update_lists.py crons-1 | 2026-08-11T12:05:01.997846000Z [INFO] Executing users_update_lists.py
haven't verified what's actually happening inside those runs though
Fri, Aug 7
Experiments.php sketch
Thu, Aug 6
unstuck, now it needs a rebase!
Wed, Aug 5
Tue, Aug 4
Stalling on T433063; waiting on its patches to get merged
Mon, Aug 3
How the scoring works
Sun, Aug 2
@Chlod is a solid technical contributor who has demonstrated good judgement in the years we have known each other. Exactly the kind of human you want to have on hand for backports and troubleshooting. Let's do this!
Sat, Jul 25
Fri, Jul 24
Okay the new T433063 drops the mobile/desktop axis from rendering entirely, so nothing keys on the skin or wgMFMode for layout anymore. Detail (compact vs full) is now viewport-driven through a useViewport composable in the dashboard app; islands, integrations included, receive detail and never sniff for themselves, so the behaviour is consistent by construction and width-driven rather than skin- or wgMFMode-based. Util::isMobile() survives only as a server-side analytics label, out of the render path.
I had to make some choices along the way to get through the implementation:
Thu, Jul 23
normalized message error count as of backport was 10,273. It looks like it has stopped, but we'll keep this open for a bit.
thanks @kostajh for the quick patch and @MusikAnimal for the quick backport; let's keep an eye on the error rate now that the patch is out on wmf.12
Wed, Jul 22
note that I initially set the env to "production" during vm setup, but I should have set it to "main" for this project. It didn't do any harm, but deploys weren't going to get through that way. I updated the instance metadata and the patches are auto deploying as expected.
okay, looking better with the patch. before:
after:
I'm seeing some jobs succeed and a lot fail with the smell of binary incompatibility. Initially, I was worried that I did this, but I don't think so:
AttributeError("'Wikiwho' object has no attribute 'spam_hashes_set'")
Okay, we're back up and running; expect things to be shaky as the box warms up and tries to handle requests. @Ragesoss can you check your dashboard?
The web proxies are connected to the new host, but I have all of the services down on it, so I find that not surprising. Let's recheck when we're back up.
chown finished on another pickle store; that's pickles-02 and pickles-03 done. We're just waiting on pickles now. (note that I kicked them off in parallel since it's 3 separate volumes)
Note that the django database moved and we validated (on accident) that pickles were resolving, but we're still waiting on chown to finish fixing up permission across 2/3 stores. Web proxies are moved over, services are configured, but we have them all shutdown pending the chown. I'll check in periodically and update here when things are back up and running.

