[15:01:46] Krinkle: looks like the share of getAction() on https://performance.wikimedia.org/arclamp/svgs/daily/2022-07-03.excimer-wall.all.svgz is down to 0.2% (from 0.8%) [20:34:59] mszabo: [20:34:59] https://performance.wikimedia.org/arclamp/svgs/daily/2022-06-26.excimer-wall.index.svgz?x=195.8&y=1413&s=getAction [20:35:04] https://performance.wikimedia.org/arclamp/svgs/daily/2022-07-03.excimer-wall.index.svgz?s=getAction&x=221.1&y=1381 [20:35:39] looks like it moved from main -> getAction to now lazyinit from a performAction/InputBox hook [20:36:18] I'm a bit confused [20:36:49] zoomed in further [20:36:52] https://performance.wikimedia.org/arclamp/svgs/daily/2022-06-26.excimer-wall.index.svgz?x=202.6&y=1397&s=getAction [20:36:53] https://performance.wikimedia.org/arclamp/svgs/daily/2022-07-03.excimer-wall.index.svgz?s=getAction&x=246.6&y=1317 [20:37:22] It seems at least from this particular comparison that the majority of cost that is seemingly gone now is WikiPage::pageData fetch and Rdbms connection [20:37:39] which I'm guessing, and I could be wrong, aren't actually avoided but are attributed to a different callstack now [20:41:36] Hm.. okay, I think I remember now what I was running into. [20:41:49] performAction is where the "real" action gets computed, in a direct call to ActionFactory->getAction [20:41:54] it doesn't use the context or getAction cache [20:43:15] The whole getAction vs getActionName is rather confusing and even slightly recursive [20:45:43] Okay, so the part that I run into, is in initializeArticle(), we call setTitle/setWikiPage to resolve redirects and other special cases [20:46:12] That invalidates the context's action name cache (as it should), and so until that point we ideally avoid trying to compute it all as it won't be official/real anyway [20:47:58] performRequest also does similar clearing of context state [22:34:34] OK, put up https://gerrit.wikimedia.org/r/c/mediawiki/core/+/810976 to clean it up a bit [22:34:47] Thanks again mszabo :) [23:38:36] thanks for the review Krinkle [23:45:09] I'm just fixing the integration test failures in the last patch in the series, then will upload another patchset [23:48:14] unless you want to give +2 right now [23:57:39] * Krinkle is converting a personal blog from Jekyll to WordPress [23:57:43] I'll wait :)