From d2d935483fd57798aedce43629229aab887c5b2a Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Sun, 1 Nov 2015 19:19:38 -0800 Subject: [PATCH] Make makeKeyInternal() limit more conservative This should avoid error log entries for long WAN cache keys Change-Id: I401482d25dd5bf47052a3c6729c5f8bc9fd68770 --- includes/libs/objectcache/MemcachedBagOStuff.php | 5 +++-- .../phpunit/includes/objectcache/MemcachedBagOStuffTest.php | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/includes/libs/objectcache/MemcachedBagOStuff.php b/includes/libs/objectcache/MemcachedBagOStuff.php index ef6b3c7a94..162a5315eb 100644 --- a/includes/libs/objectcache/MemcachedBagOStuff.php +++ b/includes/libs/objectcache/MemcachedBagOStuff.php @@ -103,8 +103,9 @@ class MemcachedBagOStuff extends BagOStuff { public function makeKeyInternal( $keyspace, $args ) { // Memcached keys have a maximum length of 255 characters. From that, // subtract the number of characters we need for the keyspace and for - // the separator character needed for each argument. - $charsLeft = 255 - strlen( $keyspace ) - count( $args ); + // the separator character needed for each argument. To handle some + // custom prefixes used by thing like WANObjectCache, limit to 205. + $charsLeft = 205 - strlen( $keyspace ) - count( $args ); $args = array_map( function ( $arg ) use ( &$charsLeft ) { diff --git a/tests/phpunit/includes/objectcache/MemcachedBagOStuffTest.php b/tests/phpunit/includes/objectcache/MemcachedBagOStuffTest.php index 3e3bac37cb..904ddbbf18 100644 --- a/tests/phpunit/includes/objectcache/MemcachedBagOStuffTest.php +++ b/tests/phpunit/includes/objectcache/MemcachedBagOStuffTest.php @@ -42,7 +42,7 @@ class MemcachedBagOStuffTest extends MediaWikiTestCase { ); $this->assertEquals( - 'test:##5820ad1d105aa4dc698585c39df73e19', + 'test:##dc89dcb43b28614da27660240af478b5', $this->cache->makeKey( '𝕖𝕧𝕖𝕟', '𝕚𝕗', '𝕨𝕖', '𝕄𝔻𝟝', '𝕖𝕒𝕔𝕙', '𝕒𝕣𝕘𝕦𝕞𝕖𝕟𝕥', '𝕥𝕙𝕚𝕤', '𝕜𝕖𝕪', '𝕨𝕠𝕦𝕝𝕕', '𝕤𝕥𝕚𝕝𝕝', '𝕓𝕖', '𝕥𝕠𝕠', '𝕝𝕠𝕟𝕘' ) ); -- 2.20.1