| Commit message (Collapse) | Author | Age | Files | Lines |
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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
|
|\ \ \ |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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
|
|\ \ \ \
| |_|/ /
|/| | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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
|
|\ \ \ \ |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Bug: T387051
Change-Id: I10791c2de60acb6c738f311cadd9a14edb58c325
|
|\ \ \ \ \
| | |_|_|/
| |/| | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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
|
|\ \ \ \ \ |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
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
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Change-Id: I357515aef92ea5e98a578a1610113e61785e583a
|
|\ \ \ \ \ \ |
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
* Factor out LogEventsList::getBlockLogWarningBox()
* When the user is blocked multiple times, add Special:BlockList link
Bug: T384916
Change-Id: I4d538ab59e55dc96dde5dd00dd8016c028bfe6d0
|
|\ \ \ \ \ \ \ |
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
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
|
|\ \ \ \ \ \ \ \ |
|
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | | |
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
|
|\| | | | | | | | |
|
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | | |
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
|
|\| | | | | | | | |
|
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | | |
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
|
|\ \ \ \ \ \ \ \ \ |
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
Bug: T322944
Change-Id: I6de31143e67e14d14aeaf7df04f1cbe257cf56bb
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
Change-Id: I69472adef5c1d04c7c28679f7c48371f07372f94
|
|\ \ \ \ \ \ \ \ \ \ |
|
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | | |
Split out from I8b6b4138158e64fbe63a63e5e784a9b5a7574270
Bug: T48076
Change-Id: I6ac5550434850973e544c69a11a0d199ab2d422c
|
|\ \ \ \ \ \ \ \ \ \ \ |
|
| | |_|_|_|_|_|_|_|_|/
| |/| | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | | |
Bug: T386999
Depends-On: Ibc00394e070414ebfda782ff25a920c30741e841
Change-Id: If94450aa8d25d82dfd836a0303a22a0a97bdf84e
|
|\ \ \ \ \ \ \ \ \ \ \
| |_|_|_|_|_|_|_|_|/ /
|/| | | | | | | | | | |
|
| | |/ / / / / / / /
| |/| | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
Provide an interface allowing extensions to add global preferences.
Add test for all the $global values.
Bug: T386592
Change-Id: Id982656e228efaa97068b90f5137a0495c86fae5
|
|\ \ \ \ \ \ \ \ \ \ |
|
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | | |
Instead of getParser(), which is documented as requiring the caller to
manage relevant state, add acquireParser() and releaseParser().
Add test.
Change-Id: I112a0b6a1ff2e1dfaed7fe8e011872235d126f46
|
|\ \ \ \ \ \ \ \ \ \ \
| |/ / / / / / / / / /
|/| | | / / / / / / /
| | |_|/ / / / / / /
| |/| | | | | | | | |
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
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
|
|\ \ \ \ \ \ \ \ \ \ |
|
| | |_|/ / / / / / /
| |/| | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
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
|
|\ \ \ \ \ \ \ \ \ \
| |/ / / / / / / / /
|/| | | | | | | | | |
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
Follow-Up: I2ce1a82f3fbb3cf18aa2d17986d46dbdcc70c761
Bug: T387121
Change-Id: I1011934ae539077ac9f8551ee0a0df061927219c
|
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | | |
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
|
|\ \ \ \ \ \ \ \ \ \ |
|
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | | |
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
|
|\ \ \ \ \ \ \ \ \ \ \ |
|
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | | |
An array is already filled to get unique values, reuse the array.
Change-Id: If662794e8fd84359e8eb07c0b7ba09043fd68a62
|
|\ \ \ \ \ \ \ \ \ \ \ \ |
|
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | | |
It is passed to Maintenance::outputChanneled,
already documented as string
Change-Id: Ice0222d642fef703a5cc39ef0d238bd2c31d4d40
|
|\ \ \ \ \ \ \ \ \ \ \ \ \
| |_|_|_|/ / / / / / / / /
|/| | | | | | | | | | | | |
|