Ori.livneh has uploaded a new change for review.
https://gerrit.wikimedia.org/r/248598
Change subject: Ensure memcached keys are valid ASCII
......................................................................
Ensure memcached keys are valid ASCII
Stop the flood of memcached key errors of the form:
memcached ERROR: Memcached error for key
"flowdb:flow_ref:url:by-source:v3:0:ruwiki:Сталинская_премия_за_выдающиеся_изобретения_и_коренные_усовершенствования_методов_производственной_работы_(1951):4.7"
on server ":": A BAD KEY WAS PROVIDED/CHARACTERS OUT OF RANGE
Change-Id: I26e531f63ff9abf6794b27c8d2c39633f0846c1e
(cherry picked from commit 7c244e7c340012daa4c2fd09f9cc07b63212b467)
---
M includes/Data/Index/FeatureIndex.php
M tests/phpunit/Data/Index/FeatureIndexTest.php
M tests/phpunit/Data/IndexTest.php
M tests/phpunit/Data/Pager/PagerTest.php
4 files changed, 14 insertions(+), 14 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Flow
refs/changes/98/248598/1
diff --git a/includes/Data/Index/FeatureIndex.php
b/includes/Data/Index/FeatureIndex.php
index 52a3600..6eec95e 100644
--- a/includes/Data/Index/FeatureIndex.php
+++ b/includes/Data/Index/FeatureIndex.php
@@ -693,7 +693,7 @@
// which would lead to differences in cache key if we don't
force that
sort( $attributes );
- return wfForeignMemcKey( self::cachedDbId(), '', $this->prefix,
implode( ':', $attributes ), Container::get( 'cache.version' ) );
+ return wfForeignMemcKey( self::cachedDbId(), '', $this->prefix,
md5( implode( ':', $attributes ) ), Container::get( 'cache.version' ) );
}
/**
diff --git a/tests/phpunit/Data/Index/FeatureIndexTest.php
b/tests/phpunit/Data/Index/FeatureIndexTest.php
index faa8b26..11eb0f6 100644
--- a/tests/phpunit/Data/Index/FeatureIndexTest.php
+++ b/tests/phpunit/Data/Index/FeatureIndexTest.php
@@ -30,7 +30,7 @@
$cache->expects( $this->any() )
->method( 'getMulti' )
->will( $this->returnValue( array(
- "$dbId:foo:5:$wgFlowCacheVersion" => array(
+ "$dbId:foo:" . md5( '5' ) .
":$wgFlowCacheVersion" => array(
array( 'some_row' => 40 ),
array( 'some_row' => 41 ),
array( 'some_row' => 42 ),
@@ -71,7 +71,7 @@
$cache->expects( $this->any() )
->method( 'getMulti' )
->will( $this->returnValue( array(
- "$dbId:foo:5:$wgFlowCacheVersion" => array(
+ "$dbId:foo:" . md5 ( '5' ) .
":$wgFlowCacheVersion" => array(
array( 'some_row' => 40 ),
array( 'some_row' => 41 ),
array( 'some_row' => 42 ),
diff --git a/tests/phpunit/Data/IndexTest.php b/tests/phpunit/Data/IndexTest.php
index d9665fc..23f3c56 100644
--- a/tests/phpunit/Data/IndexTest.php
+++ b/tests/phpunit/Data/IndexTest.php
@@ -49,12 +49,12 @@
$db = FeatureIndex::cachedDbId();
$v = Container::get( 'cache.version' );
- $bag->set( "$db:unique:1:$v", array( array( 'id' => 1, 'name'
=> 'foo', 'other' => 'ppp' ) ) );
- $bag->set( "$db:unique:2:$v", array( array( 'id' => 2, 'name'
=> 'foo', 'other' => 'qqq' ) ) );
- $bag->set( "$db:unique:3:$v", array( array( 'id' => 3, 'name'
=> 'baz', 'other' => 'lll' ) ) );
+ $bag->set( "$db:unique:" . md5( '1' ) . ":$v", array( array(
'id' => 1, 'name' => 'foo', 'other' => 'ppp' ) ) );
+ $bag->set( "$db:unique:" . md5( '2' ) . ":$v", array( array(
'id' => 2, 'name' => 'foo', 'other' => 'qqq' ) ) );
+ $bag->set( "$db:unique:" . md5( '3' ) . ":$v", array( array(
'id' => 3, 'name' => 'baz', 'other' => 'lll' ) ) );
- $bag->set( "$db:secondary:foo:$v", array( array( 'id' => 1 ),
array( 'id' => 2 ) ) );
- $bag->set( "$db:secondary:baz:$v", array( array( 'id' => 3 ) )
);
+ $bag->set( "$db:secondary:" . md5( 'foo' ) . ":$v", array(
array( 'id' => 1 ), array( 'id' => 2 ) ) );
+ $bag->set( "$db:secondary:" . md5( 'baz' ) . ":$v", array(
array( 'id' => 3 ) ) );
$expect = array(
array( 'id' => 1, 'name' => 'foo', 'other' => 'ppp', ),
@@ -101,15 +101,15 @@
// even though, due to uniqueness, there is only one value per
set of keys
$db = FeatureIndex::cachedDbId();
$v = Container::get( 'cache.version' );
- $bag->set( "$db:unique:1:9:$v", array( array( 'id' => 1, 'ot'
=> 9, 'name' => 'foo' ) ) );
- $bag->set( "$db:unique:1:8:$v", array( array( 'id' => 1, 'ot'
=> 8, 'name' => 'foo' ) ) );
- $bag->set( "$db:unique:3:7:$v", array( array( 'id' => 3, 'ot'
=> 7, 'name' => 'baz' ) ) );
+ $bag->set( "$db:unique:" . md5( '1:9' ) . ":$v", array( array(
'id' => 1, 'ot' => 9, 'name' => 'foo' ) ) );
+ $bag->set( "$db:unique:" . md5( '1:8' ) . ":$v", array( array(
'id' => 1, 'ot' => 8, 'name' => 'foo' ) ) );
+ $bag->set( "$db:unique:" . md5( '3:7' ) . ":$v", array( array(
'id' => 3, 'ot' => 7, 'name' => 'baz' ) ) );
- $bag->set( "$db:secondary:foo:$v", array(
+ $bag->set( "$db:secondary:" . md5( 'foo' ) . ":$v", array(
array( 'id' => 1, 'ot' => 9 ),
array( 'id' => 1, 'ot' => 8 ),
) );
- $bag->set( "$db:secondary:baz:$v", array(
+ $bag->set( "$db:secondary:" . md5( 'baz' ). ":$v", array(
array( 'id' => 3, 'ot' => 7 ),
) );
diff --git a/tests/phpunit/Data/Pager/PagerTest.php
b/tests/phpunit/Data/Pager/PagerTest.php
index b24f436..0717521 100644
--- a/tests/phpunit/Data/Pager/PagerTest.php
+++ b/tests/phpunit/Data/Pager/PagerTest.php
@@ -447,7 +447,7 @@
$cache = new BufferedCache( $innerCache );
// preload our answer
- $bag->set( wfWikiId() . ":prefix:1:$wgFlowCacheVersion", array(
+ $bag->set( wfWikiId() . ":prefix:" . md5( '1' ) .
":$wgFlowCacheVersion", array(
array( 'foo' => 1, 'bar' => 9 ),
array( 'foo' => 1, 'bar' => 8 ),
array( 'foo' => 1, 'bar' => 7 ),
--
To view, visit https://gerrit.wikimedia.org/r/248598
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I26e531f63ff9abf6794b27c8d2c39633f0846c1e
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Flow
Gerrit-Branch: wmf/1.27.0-wmf.3
Gerrit-Owner: Ori.livneh <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits