Page MenuHomePhabricator

Circular reference prevents Parser destruction
Closed, ResolvedPublic5 Estimated Story Points

Description

The Cite extension holds a reference to its associated Parser, and inserts its state object as a property of this Parser. Since PHP doesn't have weak references (yet), this structure makes it impossible to garbage-collect either object.

Break this circular reference.

Event Timeline

Change 556352 had a related patch set uploaded (by Awight; owner: Awight):
[mediawiki/extensions/Cite@master] [WIP] Break circular reference between Cite and Parser

https://gerrit.wikimedia.org/r/556352

Change 556352 abandoned by Awight:
[WIP] Break circular reference between Cite and Parser

Reason:
Split into smaller patches.

https://gerrit.wikimedia.org/r/556352

Change 556382 had a related patch set uploaded (by Awight; owner: Awight):
[mediawiki/extensions/Cite@master] Don't keep parser reference in Cite

https://gerrit.wikimedia.org/r/556382

Change 556383 had a related patch set uploaded (by Awight; owner: Awight):
[mediawiki/extensions/Cite@master] Remove Parser state from FootnoteMarkFormatter

https://gerrit.wikimedia.org/r/556383

Change 556384 had a related patch set uploaded (by Awight; owner: Awight):
[mediawiki/extensions/Cite@master] Remove Parser state from ReferencesFormatter

https://gerrit.wikimedia.org/r/556384

Change 556385 had a related patch set uploaded (by Awight; owner: Awight):
[mediawiki/extensions/Cite@master] Remove Parser state from CiteErrorReporter

https://gerrit.wikimedia.org/r/556385

Change 556382 merged by jenkins-bot:
[mediawiki/extensions/Cite@master] Don't keep parser reference in Cite

https://gerrit.wikimedia.org/r/556382

Change 556383 merged by jenkins-bot:
[mediawiki/extensions/Cite@master] Remove Parser state from FootnoteMarkFormatter

https://gerrit.wikimedia.org/r/556383

Change 556384 merged by jenkins-bot:
[mediawiki/extensions/Cite@master] Remove Parser state from ReferencesFormatter

https://gerrit.wikimedia.org/r/556384

Change 556385 merged by jenkins-bot:
[mediawiki/extensions/Cite@master] Remove Parser state from CiteErrorReporter

https://gerrit.wikimedia.org/r/556385

There might not be a way to measure the impact of this change. We aren't measuring the total memory extent of each thread, and garbage collection is (allegedly) disabled, with no recorded metrics that might show us decreased memory pressure.

WMDE-Fisch moved this task from Demo to Done on the WMDE-QWERTY-Sprint-2019-12-11 board.
WMDE-Fisch subscribed.

There might not be a way to measure the impact of this change. We aren't measuring the total memory extent of each thread, and garbage collection is (allegedly) disabled, with no recorded metrics that might show us decreased memory pressure.

Hard to demo as noted above. But the work here is done.