mediawiki-extensions-Echo/tests
Roan Kattouw d90e2d1066 NotifUser: Redo caching strategy for multi-DC compatibility
To use WANObjectCache correctly in a multi-DC-safe way, we need to use
getWithSetCallback() to read data, and call delete() when it changes.
NotifUser's caching of notification counts and timestamps relied
heavily on set() calls, and so wasn't multi-DC-safe.

Changes in this commit:
* Rather than caching counts/timestamps in separate cache keys, and
  using separate cache keys for each section (alert/message/all), put
  all this data in an array and store that in a single cache key.
  This reduces the number of cache keys per user per wiki from 6 to 1.
* Similarly, use a single global cache key per user. The global check
  key for the last updated timestamp is retained, so we now have
  2 global cache keys per user (down from 7)
* Remove preloading using getMulti(), no longer needed
* Move computation of counts and timestamps into separate compute
  functions (one for local, one for global), and wrap them with
  a getter that uses getWithSetCallback().
* Use TS_MW strings instead of MWTimestamp objects internally, to
  simplify comparisons and max() operations.
* Make existing getters wrap around this new getter. They now ignore
  their $cached and $dbSource parameters, and we should deprecate/change
  these function signatures.
* In resetNotificationCounts(), just delete the cache keys. In global
  mode, also recompute the notification counts and put them in the
  echo_unread_wikis table. We could also set() the data into the cache
  at this point, but don't, because you're not supposed to mix set() and
  getWithSetCallback() calls and I don't want to find out what happens
  if you do.

Bug: T164860
Change-Id: I4f86aab11d50d20280a33e0504ba8ad0c6c01842
2018-05-30 17:49:48 -07:00
..
phpunit NotifUser: Redo caching strategy for multi-DC compatibility 2018-05-30 17:49:48 -07:00
qunit build: Update eslint and other linters 2017-10-17 13:53:08 +01:00
rspec rspec: Use environment variables for user+password 2018-04-30 15:46:01 -07:00
selenium Update README file for Selenium tests 2018-02-27 13:57:52 +01:00
bootstrap.php build: Updating mediawiki/mediawiki-codesniffer to 0.9.0 2017-06-22 14:13:28 +00:00
echo.suite.xml Directory reshuffle, add dev tools 2014-08-01 22:38:41 +00:00
NotificationsTest.php build: Update mediawiki/mediawiki-codesniffer to 0.7.1 2016-12-05 15:54:30 -08:00