aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Merge "rdbms: Don't forward DB connection handle to transaction callbacks"jenkins-bot2025-02-266-22/+17
|\
| * rdbms: Don't forward DB connection handle to transaction callbacksMáté Szabó2025-02-126-22/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Why: - When a transaction lifecycle callback such as onTransactionPreCommitOrIdle() is invoked by rdbms, rdbms passes in the DB connection handle the callback was scheduled on. - However, the DB connection handle may have since been reset to a different DB domain on the same physical cluster due to connection reuse. - We could implement bookkeeping to keep track of the expected DB domain for each pending callback and ensure the passed-in DB handle matches that before invoking the callback, but nobody seems to be making use of the passed-in DB handle except for two call sites in core. - As such, it seems more prudent to remove this functionality. What: - Stop passing the DB connection handle to rdbms transaction lifecycle callbacks. Bug: T386190 Change-Id: I9125bfb8b5e2cac4aab3525ffd229ea49beccc17
* | Merge "DomainEvents: More clearly model null edits and dummy revisions"jenkins-bot2025-02-2613-66/+252
|\ \
| * | DomainEvents: More clearly model null edits and dummy revisionsdaniel2025-02-2613-66/+252
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Why: - Listeners that want to skip processing if the page content didn't change should generally not skip reconciliation requests. PageUpdatedEvent should offer getters that make this straightforward. What: - Add isNominalContentChange that will return false for dummy revisions but true for null edits. This is the preferred way for listeners to determine whether they can skip redundant processing of page content. - Rename isContentChange to isEffectiveContentChange, to distinguish it from isNominalContentChange. - Rename isRevisionChange to isRevisionHistoryChange, to make it clear that the change affects the sequences of revisions. - Add test cases to PageUpdaterTest asserting the expected update propagation for null edits and dummy revisions. - Change ingress objects so that: - the message cache is updated for null edits - module caches are not cleared for dummy revisions Bug: T383552 Change-Id: Idf6625d3e737e4a225648b0fd81cc929b095d315
* | | Merge "Revert "user: Make UserArrayFromResult::$current protected""jenkins-bot2025-02-261-2/+1
|\ \ \
| * | | Revert "user: Make UserArrayFromResult::$current protected"Thiemo Kreuz (WMDE)2025-02-251-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 7d13edebd6ac9fd4d40cb91378dfd4254f6e4d11. Reason for revert: Not needed any more. Now properly fixed in the CentralAuth subclass. Bug: T387148 Change-Id: I763f68fa8a9d2da7ac108987c46c0d7207595e72 Depends-On: I7f12fd1aad54bd6a423a77b77e301dd8f515f969
* | | | Merge "Clarify use of MediaWikiServices hook"jenkins-bot2025-02-261-0/+12
|\ \ \ \ | |_|/ / |/| | |
| * | | Clarify use of MediaWikiServices hookGergő Tisza2025-02-201-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | MediaWikiServices is the only hook where global configuration settings can be safely changed; document this, and also try to clarify which services are safe to use. (The hook container service has already been created at this point, since that's what is used to run MediaWikiServices itself; and ConfigFactory does not and cannot have any dependencies. Everything else should be considered unsafe unless explicitly documented otherwise.) Bug: T286515 Bug: T288819 Change-Id: Ic0f34988cc47a06095c7cb39307e8f5602bd53e9
* | | | Merge "Special:Block [Codex]: Added empty state for active blocks"jenkins-bot2025-02-262-4/+24
|\ \ \ \
| * | | | Special:Block [Codex]: Added empty state for active blockshmonroy2025-02-242-4/+24
| | | | | | | | | | | | | | | | | | | | | | | | | Bug: T387051 Change-Id: I10791c2de60acb6c738f311cadd9a14edb58c325
* | | | | Merge "rdbms: Remove usages of passed-in DB handle from transaction callbacks"jenkins-bot2025-02-262-6/+2
|\ \ \ \ \ | | |_|_|/ | |/| | |
| * | | | rdbms: Remove usages of passed-in DB handle from transaction callbacksMáté Szabó2025-02-122-6/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Why: - When a transaction lifecycle callback such as onTransactionPreCommitOrIdle() is invoked by rdbms, rdbms passes in the DB connection handle the callback was scheduled on. - However, the DB connection handle may have since been reset to a different DB domain on the same physical cluster due to connection reuse. - We could implement bookkeeping to keep track of the expected DB domain for each pending callback and ensure the passed-in DB handle matches that before invoking the callback, but nobody seems to be making use of the passed-in DB handle except for two call sites in core. - As such, it seems more prudent to remove this functionality. What: - Update the only places that use the DB handle passed to transaction lifecycle callbacks to not use it. Bug: T386190 Change-Id: If682ec26d3599add9dbe06c7a386c95162b5184a
* | | | | Merge "DomainEvents: remove the concept of invocation modes"jenkins-bot2025-02-265-80/+56
|\ \ \ \ \
| * | | | | DomainEvents: remove the concept of invocation modesdaniel2025-02-265-80/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Why: - We only want to support a single invocation mode for now. What: - Remove handling of invocation modes from EventSubscriberBase and EventDispatchEngine. Bug: T387012 Change-Id: Ie1df95f50cdb763fceda5751d6defa665fd114ff
* | | | | | Localisation updates from https://translatewiki.net.Translation updater bot2025-02-268-48/+142
| | | | | | | | | | | | | | | | | | | | | | | | Change-Id: I357515aef92ea5e98a578a1610113e61785e583a
* | | | | | Merge "Factor out block log boxes and add block list link"jenkins-bot2025-02-266-80/+131
|\ \ \ \ \ \
| * | | | | | Factor out block log boxes and add block list linkTim Starling2025-02-216-80/+131
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Factor out LogEventsList::getBlockLogWarningBox() * When the user is blocked multiple times, add Special:BlockList link Bug: T384916 Change-Id: I4d538ab59e55dc96dde5dd00dd8016c028bfe6d0
* | | | | | | Merge "SpecialBlock [Codex]: Improve form reset logic and add tests"jenkins-bot2025-02-266-37/+168
|\ \ \ \ \ \ \
| * | | | | | | SpecialBlock [Codex]: Improve form reset logic and add testsMusikAnimal2025-02-256-37/+168
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a param to the store's resetForm() to not clear internal refs that are not tied to a specific form field. We call resetForm() with this option set after a successful form submission. Add rigorous tests for this flow to ensure no data is leaked from one block into another. Bug: T384822 Change-Id: Id9853e10fdfc55ca2e8287cb4bdf20e13b7229eb
* | | | | | | | Merge "linker: Render expired temporary account names differently"jenkins-bot2025-02-2512-13/+308
|\ \ \ \ \ \ \ \
| * | | | | | | | linker: Render expired temporary account names differentlyMáté Szabó2025-02-2012-13/+308
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Why: - We would like to make the user links associated with expired temporary accounts visually distinguishable from non-expired ones using strikethrough styling and an information tooltip. - The designs call for using Codex tooltips for the latter. Using the Vue directive for this would require us to take a dependency on Codex and Vue for every page that renders user links, and render a small Vue.js app for each expired temporary user link, which does not seem practical. - We can, however, use Codex styles and implement our own simple tooltip functionality without taking on unnecessary dependencies. - This requires adding a new RL module to every page that uses userLink(), so we should update userLink() to do this for us instead of having to update every core and extension page that needs this. What: - Add a strikethrough to expired temporary account links as per the design specification. - Render a tooltip, hidden by default, for expired temporary account links that is styled using Codex styles. - Implement a simple jQuery tooltip handler for expired temporary account links. - Avoid caching expired temporary account link in UserLinkRenderer to ensure each of them receives a unique ID. - Add required ResourceLoader modules directly to the output in userLink(). Bug: T358469 Change-Id: I4f70ff15becbc4991c4f1b0307a14d5354c79dc1
* | | | | | | | | Merge "output: Use associative arrays to store modules"jenkins-bot2025-02-253-11/+158
|\| | | | | | | |
| * | | | | | | | output: Use associative arrays to store modulesMáté Szabó2025-02-203-11/+158
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Why: - OutputPage::addModules() and OutputPage::addModuleStyles() currently store added module names in two lists, mModules and mModuleStyles. - The contents of these lists then get passed to array_unique() when OutputPage::getModules() is invoked, to filter out any duplicate module names. - In I4f70ff15becbc4991c4f1b0307a14d5354c79dc1, we would like to modify UserLinkRenderer::userLink() to automatically add the requisite ResourceLoader modules to the output, instead of every page where userLink() is called needing to do so manually. This can cause these modules to be added thousands of times when a large list with many user links is rendered, e.g. on RecentChanges. - Running `php maintenance/run.php benchmarks/benchmarkEval output.php`, where output.php holds: ``` $out = ( new RequestContext() )->getOutput(); for ( $j = 1; $j <= 2000; $j++ ) { $out->addModules( 'ext.foo' ); } $out->getModules(); ``` takes about 4-5ms on my system. - Turning the properties into associative arrays and getting rid of the array_unique() call drops this to < 0.2ms. - These properties are exposed via public property accessors that have been deprecated since MW 1.38 and have no usages in codesearch.[1] Since we're changing how the properties work, this is a good time to remove the deprecated public property accessors. What: - Use associative arrays to store module names in OutputPage. - Document that addModules() and addModuleStyles() take a string|string[] rather than a string or an arbitrary array. - Add unit tests for the behavior. - Drop the deprecated public property accessors for mModules and mModuleStyles. [1] https://codesearch.wmcloud.org/search/?q=mModule%5BSs%5D Bug: T358469 Change-Id: I86c557a4ce7207359d100538c0d4b1ffa75fcbf9
* | | | | | | | | Merge "LinkBatch: Introduce addUser() helper"jenkins-bot2025-02-257-13/+101
|\| | | | | | | |
| * | | | | | | | LinkBatch: Introduce addUser() helperMáté Szabó2025-02-207-13/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Why: - After I4f70ff15becbc4991c4f1b0307a14d5354c79dc1, it will become necessary to prefetch the expiration status of temporary accounts when rendering user links via UserLinkRenderer for a large list of users. - We would ideally like to accomplish this without requiring every user of UserLinkRenderer to take a direct dependency on TempUserDetailsLookup, which exposes this functionality. - Since most users of UserLinkRenderer / Linker::userLink() already use LinkBatch to prefetch page existence for the user and user talk pages that UserLinkRenderer will link to, encapsulating the TempUserDetailsLookup interaction within LinkBatch seems like a decent middle ground. What: - Add LinkBatch::addUser(), which takes a UserIdentity and adds its user and user talk pages to the batch while also triggering a batch lookup of expiration status for users added this way when execute() is called. Bug: T358469 Change-Id: Ic837961296cc4bf166dde79c7f073cc50ce925da
* | | | | | | | | Merge "Enable $wgAllowAuthenticatedCrossOrigin by default"developmentjenkins-bot2025-02-254-7/+7
|\ \ \ \ \ \ \ \ \
| * | | | | | | | | Enable $wgAllowAuthenticatedCrossOrigin by defaultLucas Werkmeister2025-02-184-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bug: T322944 Change-Id: I6de31143e67e14d14aeaf7df04f1cbe257cf56bb
* | | | | | | | | | Localisation updates from https://translatewiki.net.Translation updater bot2025-02-2515-72/+184
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change-Id: I69472adef5c1d04c7c28679f7c48371f07372f94
* | | | | | | | | | Merge "Add Y/n prompt at the end of interactive install"jenkins-bot2025-02-252-0/+25
|\ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | Add Y/n prompt at the end of interactive installaddshore2025-02-252-0/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Split out from I8b6b4138158e64fbe63a63e5e784a9b5a7574270 Bug: T48076 Change-Id: I6ac5550434850973e544c69a11a0d199ab2d422c
* | | | | | | | | | | Merge "Bump wikimedia/parsoid to 0.21.0-a17"jenkins-bot2025-02-241-1/+1
|\ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | Bump wikimedia/parsoid to 0.21.0-a17Arlo Breault2025-02-241-1/+1
| | |_|_|_|_|_|_|_|_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bug: T386999 Depends-On: Ibc00394e070414ebfda782ff25a920c30741e841 Change-Id: If94450aa8d25d82dfd836a0303a22a0a97bdf84e
* | | | | | | | | | | Merge "user: Add UserOptionsManager::GLOBAL_CREATE"jenkins-bot2025-02-244-37/+141
|\ \ \ \ \ \ \ \ \ \ \ | |_|_|_|_|_|_|_|_|/ / |/| | | | | | | | | |
| * | | | | | | | | | user: Add UserOptionsManager::GLOBAL_CREATETim Starling2025-02-244-37/+141
| | |/ / / / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Provide an interface allowing extensions to add global preferences. Add test for all the $global values. Bug: T386592 Change-Id: Id982656e228efaa97068b90f5137a0495c86fae5
* | | | | | | | | | Merge "language: Simplify MessageParser::getParser() calling convention"jenkins-bot2025-02-242-38/+83
|\ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | language: Simplify MessageParser::getParser() calling conventionTim Starling2025-02-242-38/+83
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of getParser(), which is documented as requiring the caller to manage relevant state, add acquireParser() and releaseParser(). Add test. Change-Id: I112a0b6a1ff2e1dfaed7fe8e011872235d126f46
* | | | | | | | | | | Merge "Declare $wgAllowAuthenticatedCrossOrigin non-experimental"jenkins-bot2025-02-243-10/+2
|\ \ \ \ \ \ \ \ \ \ \ | |/ / / / / / / / / / |/| | | / / / / / / / | | |_|/ / / / / / / | |/| | | | | | | |
| * | | | | | | | | Declare $wgAllowAuthenticatedCrossOrigin non-experimentalLucas Werkmeister2025-02-183-10/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The feature is enabled and working in Wikimedia production – I think that’s good enough to call it properly supported. Bug: T322944 Change-Id: I8fc310d4ab4fc3e17cbeaadfc8eadb4d2120ebda
* | | | | | | | | | Merge "PageUpdatedEvent: include EditResult on null-edits"jenkins-bot2025-02-244-7/+64
|\ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | PageUpdatedEvent: include EditResult on null-editsdaniel2025-02-244-7/+64
| | |_|/ / / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Why: - PageUpdater creates an EditResult on null-edits, the PageUpdatedEvent should also have it. What: - Call DerivedPageDataUpdater::prepareUpdate for null edits Bug: T386938 Change-Id: Ie6e59e0b089a973f338bafb646893e3334d2ea14
* | | | | | | | | | Merge "block: Fix incorrect bl_id sql conditional value"jenkins-bot2025-02-241-1/+1
|\ \ \ \ \ \ \ \ \ \ | |/ / / / / / / / / |/| | | | | | | | |
| * | | | | | | | | block: Fix incorrect bl_id sql conditional valueDayllan Maza2025-02-241-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Follow-Up: I2ce1a82f3fbb3cf18aa2d17986d46dbdcc70c761 Bug: T387121 Change-Id: I1011934ae539077ac9f8551ee0a0df061927219c
* | | | | | | | | | user: Make UserArrayFromResult::$current protectedDaimona Eaytoy2025-02-241-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The property used to be public, but it was made private in Id90b6838429eca4b. Unfortunately, CentralAuth extends this class and references the `$current` property directly. So, make it protected and add a note about CentralAuth being naughty, to prevent this from happening again. Follow-up to Id90b6838429eca4b. Bug: T387148 Change-Id: Ie65381a4fe642ba79f7b845c448e9731dc22647a
* | | | | | | | | | Merge "Code cleanup in UserArray & UserArrayFromResult"jenkins-bot2025-02-243-80/+34
|\ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | Code cleanup in UserArray & UserArrayFromResultthiemowmde2025-02-243-80/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Just a few modernizations, utilizing more recent PHP features. Notable: * Much more strict language-level types. E.g. it's not allowed to call newFromNames with a single string any more. (Was never allowed and doesn't make any sense anyway.) * Drop unnecessary @covers tags in the test for the reasons explained in I2678992. Motivated by I15d9134. Depends-On: Ia88a8e724bb35781286528fa6403b2fe8ee3cfab Change-Id: Id90b6838429eca4bd662546e89fb1a91a8ae7c4f
* | | | | | | | | | | Merge "user: Avoid array_fill_keys in fetchRegistrationBatch"jenkins-bot2025-02-241-5/+3
|\ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | user: Avoid array_fill_keys in fetchRegistrationBatchUmherirrender2025-02-221-5/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | An array is already filled to get unique values, reuse the array. Change-Id: If662794e8fd84359e8eb07c0b7ba09043fd68a62
* | | | | | | | | | | | Merge "maintenance: Document channel for Maintenance::output as string"jenkins-bot2025-02-242-2/+2
|\ \ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | | maintenance: Document channel for Maintenance::output as stringUmherirrender2025-02-222-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It is passed to Maintenance::outputChanneled, already documented as string Change-Id: Ice0222d642fef703a5cc39ef0d238bd2c31d4d40
* | | | | | | | | | | | | Merge "PageUpdater: allow dummy revisions to be minor"jenkins-bot2025-02-248-12/+46
|\ \ \ \ \ \ \ \ \ \ \ \ \ | |_|_|_|/ / / / / / / / / |/| | | | | | | | | | | |