Page MenuHomePhabricator

Calculated Age of persons can become outdated until next cache purge
Open, LowPublic

Description

Author: alexei.rudenko

Description:
Pages about persons where age is calculated automatically are saved in the cache until the next cache purge or the page change happens. Calculated value of the age is also saved.

After the date of birth of a person passes the saved age does not change.

Example: Paul McCartney has birthday on 18.06.1942. His wiki page was edited before 18.06.2013 and his age of 70 was saved in cache (which is correct). Then after 18.06.2013 no one changed his page or invalidated cache, that's why his age was 70 while it had to be 71 (which is not correct).

Notes: This can happen for all pages with calculated age. Possible, other calculated fields are also affected.

Possible solution: invalidate cache on some conditions met. For example, invalidate the cache of Paul McCartney's page on 18.06 of every year by settings Expires header.


Version: 1.22.0
Severity: trivial

Details

Reference
bz49803

Event Timeline

bzimport raised the priority of this task from to Low.
bzimport set Reference to bz49803.
bzimport added a subscriber: Unknown Object (MLST).

Age calculations are done in wikitext, and generally the software does not do anything different based on such things. It does not see individual pieces of information displayed in an infobox, but just plain text.

alexei.rudenko wrote:

Is that possible to specify caching settings for the page during its generation based on the expressions in wikitext?

  • Bug 51128 has been marked as a duplicate of this bug. ***

Core time-related magic variables already set parser cache TTL to one hour or one day (depending on the variable). So either this is a problem in an extension (ParserFunctions? Scribunto?), or Wikimedia wikis do something wrong.

Change 73188 had a related patch set uploaded by Brian Wolff:
Make {{#time:...}} expire parser cache after 12 hours.

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

I would note here for reference that this expiry wont affect squid/varnish cache (what the anons see), but usually that's not that big a deal.

(In reply to comment #0)

Pages about persons where age is calculated automatically are saved in the
cache until the next cache purge or the page change happens. Calculated value
of the age is also saved.

After the date of birth of a person passes the saved age does not change.

Example: Paul McCartney has birthday on 18.06.1942. His wiki page was edited
before 18.06.2013 and his age of 70 was saved in cache (which is correct).
Then
after 18.06.2013 no one changed his page or invalidated cache, that's why his
age was 70 while it had to be 71 (which is not correct).

Notes: This can happen for all pages with calculated age. Possible, other
calculated fields are also affected.

Possible solution: invalidate cache on some conditions met. For example,
invalidate the cache of Paul McCartney's page on 18.06 of every year by
settings Expires header.

Hmm, I just looked at the wiki. {{Age}} uses {{CURRENTDAY}} to calculate the person's age, which means the page should have been rechecked once an hour...

The docs suggest that CURRENTDAY returns UTC, so the timeout can be between 0 and 24 hours.

Change 73188 abandoned by Brian Wolff:
Make {{#time:...}} expire parser cache after 12 hours.

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

TheDJ added a comment.Apr 29 2014, 3:01 PM

I saw another report of this problem recently on VP/T. A user was complaining that he often had to do manual purges of these kinds of pages, because users on OTRS or helpdesk were reporting incorrect ages in google etc.

(so because there is no varnish purge). So perhaps we do need a bit of improvement here....

Jackmcbarn created a very related patch at https://gerrit.wikimedia.org/r/#/c/135887/ . It adds the ability to set a TTL per transclusion, which is then exposed through the API.

Change 135887 had a related patch set uploaded by Jackmcbarn:
Add PPFrame::getTTL() and setTTL()

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

Change 135887 merged by jenkins-bot:
Add PPFrame::getTTL() and setTTL()

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

(In reply to Gabriel Wicke from comment #14)

Also related: https://gerrit.wikimedia.org/r/#/c/136617/,
https://gerrit.wikimedia.org/r/#/c/136618/ and
https://gerrit.wikimedia.org/r/#/c/136619/.

All patches mentioned in this report were merged or abandoned - is there more work left to do here (if yes: please reset the bug report status to NEW or ASSIGNED), or can you close this ticket as RESOLVED FIXED?

All patches mentioned in this report were merged or abandoned - is there more work left to do here (if yes: please reset the bug report status to NEW or ASSIGNED), or can you close this ticket as RESOLVED FIXED?

As far as I can tell, no patch to fix the problem as specified was merged. There's some disagreement as to whether it is a problem, and if yes, whether it is a problem that can be solved (without disabling caching or something drastic like that, which we obviously can't do). Setting UNCONFIRMED.