User Details
- User Since
- Feb 7 2017, 10:09 PM (375 w, 1 d)
- Availability
- Available
- LDAP User
- TK-999
- MediaWiki User
- Unknown
Wed, Apr 10
Sat, Apr 6
The error comes from \Wikimedia\PhpSessionSerializer::decode - it seems the serialization format may have changed.
Fri, Apr 5
Patch updated.
Mar 14 2024
Mar 5 2024
@Yaron_Koren Yeah, this could also be integrated with the special page, good idea!
Something that came up recently (in the context of lol.fandom.com) was the ability to add rate limits to the Cargo query API, since there have been a few cases of people accidentally issuing too many queries in too short a timeframe. I made a patch for that.
Feb 13 2024
Feb 12 2024
Feb 6 2024
Feb 5 2024
It seems that kqueue is usable on macOS for at least wall-time profiling and simple timers—and unlike other Apple-specific APIs, should be available on other OSes too like BSD, which should facilitate testing. I cobbled together a patch leveraging this that seems to work on macOS.
Feb 3 2024
Jan 30 2024
This should no longer be necessary, as the mentioned tests have been adjusted to not need such functionality.
Jan 23 2024
Dec 20 2023
Having something in place for REST that would allow handlers to specify whether they depend on a session SGTM irregardless—but we should consider the case where a handler unknowingly ends up depending on the session because of some deep dependency.
Dec 19 2023
Nov 23 2023
Nov 13 2023
Nov 2 2023
Oct 25 2023
What page(s) does this happen on reliably?
Oct 17 2023
Thanks @Alex44019 and @cscott for raising this one. I remember discussing it with the team a while back, but the Parsoid extension API was considerably less fleshed out back then.
Oct 15 2023
Oct 13 2023
Might be worth to manually patch the affected plugin in CI—Phan seems to have been in development limbo for most of this year, there is very little activity both in terms of code changes and responding to issues.
Oct 11 2023
Oct 9 2023
Rebased this since it got a question about its status, just wanted to note per earlier discussions on the patch that T296023 probably needs to be resolved first to unblock this.
Perhaps one option could be to add a new method to WikiPageFactory that returns an optionally cached WikiPage instance for a given PageIdentity. That could then be used as a replacement without a performance cost.
Sep 27 2023
Thanks for the CC.
Sep 13 2023
Aug 15 2023
Possibly. I think it's worth disabling the JIT (ie making sure that opcache.jit_buffer_size is unset or 0, which is the default) though just to rule it out as a cause—it's been known to cause oddball issues when it is enabled that simply do not occur when it is off, and its maintenance status in general is dubious.
Might be worth an upstream report if a minimal reproducer can be isolated.
Jul 26 2023
@Clement_Goubert Yeah, we currently set a limit of 1 CPU per worker. We have not experimented with pinning.
We were consistently throttled until we set limits == FPM worker count. Per the description (and Dan Luu's insightful foray[1]) into the topic, I don't think there is much that can be done besides adjusting or removing the limits or tweaking the CFS period that k8s uses. Removing the limits is probably fine given that the size of the worker pool is a natural upper bound on concurrency with pm = static.
Jul 25 2023
We've encountered spurious memcached timeouts (likely due to packet loss) with MW on k8s since forever. Are there any memcached errors logged as part of the same request?
Jul 21 2023
Jul 18 2023
Thanks, this is great!
Jul 17 2023
I think this is not a PHP 8.0 specific issue, it'd likely happen on earlier versions as well. We just happened to notice it because we were on the lookout for core dumps while investigating unrelated JIT issues.
Thanks a lot, Tim :)- using your advice, I inspected a more recent dump and found that it was a request where PHP was exceeding its configured memory limit while it was parsing a rather complex page. Going by that, I managed to narrow it down to a consistent reproducer:
--TEST-- Memory limit exceeded during sandbox init --INI-- memory_limit=2M --FILE-- <?php $buf = str_repeat('a', 1000000); $sandboxes = []; for ($i = 0; $i < 100; $i++) { $sandboxes[] = new LuaSandbox(); } ?> --EXPECTF-- Fatal error: Allowed memory size of 2097152 bytes exhausted%s(tried to allocate %d bytes) in %s on line %d
Jul 16 2023
Jul 15 2023
Thank you, I forgot to circle back and close this task.
Jul 14 2023
Jul 12 2023
I wonder if OpenTelemetry metrics could be an alternative here.[1] T340551 makes it seem likely that the OTEL Collector will be deployed as an infrastructure component, so it could potentially be leveraged for exporting metrics in Prometheus format[2] while avoiding the use of APCu or a dedicated storage backend. What do you think?
Jun 13 2023
Thanks! Sorry, it seems I missed one spot so I made a fast follow.
Jun 8 2023
Jun 2 2023
It seems that the libmustache library used by php-mustache for actual mustache rendering purposes does not yet support referencing section data in some cases, i.e. given data like
$data = [ 'foo' => 'bar' ];
then
{{#foo}}{{.}} should be bar {{/foo}}
won't render correctly. Vector 2022 heavily uses this, so I made https://github.com/jbboehr/libmustache/pull/25 to hopefully try and fix this.
May 21 2023
Tagging Wikimedia-Hackathon-2023 to showcase a basic PoC created during this event.
May 20 2023
May 19 2023
Apr 25 2023
Apr 17 2023
Apr 14 2023
Mar 29 2023
That should be fine for now. After that, we could either:
- Configure PageForms to ignore Phan stubs in other extensions via a config stanza such as $cfg['exclude_file_regex'] = '@^../../extensions/Cargo/.phan/stubs/@';, or
- Reimplement the hooks change in Cargo without stubs. This will require people to have a checkout of the AdminLinks extension to run phan locally and will also need a corresponding integration/config patch as noted by Sam.
Mar 27 2023
Sorry about that.
Mar 21 2023
AIUI PHP's max_execution_time is a CPU-time limit, rather than a wall time limit. It also cannot interrupt pending queries.
Mar 16 2023
And indeed it always seems to do so (at least on MW 1.40 CLI):
% php maintenance/run.php shell.php Psy Shell v0.11.12 (PHP 8.0.28 — cli) by Justin Hileman > $services = MediaWiki\MediaWikiServices::getInstance(); = MediaWiki\MediaWikiServices {#26}
FWIW, on MW 1.39 it seems like the double parse may be avoided if the parser output doesn't depend on any revision/page specific bits (i.e. no {{REVISIONID}}) and friends, as generate-html does not actually appear to change whether the ParserOutput generated from wikitext has HTML or not.
Mar 10 2023
Hi there, just wanted to note that the hydrawiki org is no longer used for any actively utilized extensions. Relevant extensions have been migrated to the Wikia org on GitHub under the same names.
Feb 27 2023
Sorry about the delay in following up, I was busy with some other work.
Feb 23 2023
Feb 20 2023
Feb 18 2023
@Umherirrender Thanks, that's very useful context. npm dedupe seems the best approach in this case indeed.
@Umherirrender One issue that I see is that grunt-stylelint explicitly warns consumers to depend on stylelint as well:
Note that this installs both grunt-stylelint and the stylelint tool itself, which is a peer dependency. If you do not explicitly depend on stylelint in your package.json file and do not have it available, grunt-stylelint will not work. Modern versions of npm will warn you of such unmet peer dependencies.
Feb 12 2023
One concern I had when I last thought about this was i18n support. Localization messages can currently be customized locally via MediaWiki:* pages, use a MediaWiki-specific plural/gender rule syntax, and may even support wikitext (if the caller so desires). Language fallbacks and conversion are also something configured and managed in MediaWiki. Outside of the most basic of logic-less templates that can afford taking in prerendered i18n messages as parameters, it seems likely to me that an SSR service would end up needing to render i18n messages dynamically - which opens up a whole new can of worms with regards to supporting the above that'd either require additional crosstalk with MediaWiki or extra service-side logic.
Feb 3 2023
WikiPage instances are expensive to instantiate because initializing them always requires a DB query. If IContextSource::getWikiPage calls are to be replaced by instantiations via WikiPageFactory, then every extension that needs access to the WikiPage instance corresponding to the current page will trigger a new, effectively redundant, DB query. I think this cost needs to be considered here.
Feb 1 2023
Jan 27 2023
Yeah, should be fine now!
Jan 20 2023
Yeah, should be good now! Sorry, I've been meaning to close the task after the changeset was merged but I forgot about it.
Jan 18 2023
Dec 12 2022
Could these extensions use ParserOutput's mechanism already? Not sure whether there's a benefit in using fields on Parser itself here.