The stats for RevisionStore::getKnownCurrentRevision use as first makeKey component the string revision-row-1.29.
This works fine for BagOStuff backends. Any theoretical issue might might exist with a backend using - or . for special purposes would have a makeKeyInternal method that escapes or substitutes these as needed.
However, when writing statistics to StatsD, the dot definitely has a special meaning, it creates a metric namespace. For Graphite, that means an extra directory on disk, and thus when querying for metrics in the same namespace, they are not picked up due to not being in the expected directory.
Example:
$key = $this->makeGlobalKey( 'revision-row-1.29', 'foo', 'bar' ); # "revision-row-1.29:foo:bar" $kClass = $this->determineKeyClassForStats( $key ); # => explode( ':', $key )[0] => "revision-row-1.29" $this->stats->increment( "wanobjectcache.$kClass.somemetric" );
This results in wanobjectcache . revision_row_1 . 29 . somemetric, which does not get returned by Graphite when searching for wanobjectcache . * . somemetric.
Sub tasks:
- Fix the bug with regression test.
- Prune or migrate the inaccessible data on graphite1003/graphite2004:/var/lib/carbon/whisper/MediaWiki/wanobjectcache/revision_row_1/29. Ideally in the minutes leading up to rolling out the patch.
- Once rolled out, verify that the wanobjectcache Grafana dashboard provides statistics for revision-row keys from RevisionStore::getKnownCurrentRevision.