MapCacheLRU: Properly handle bogus cache keys
They can only be strings or integers. Anything else is wrong. We should be throwing exceptions here so developers find this early when running tests and manual testing. Exceptions (instead of warnings) allow us to get a full useful stacktrace. Change-Id: I823ce33523283509c14a05f816f261d6b400e243
This commit is contained in:
parent
d44c9dfa3a
commit
70c2223843
1 changed files with 5 additions and 2 deletions
|
|
@ -58,7 +58,7 @@ class MapCacheLRU {
|
|||
* @return void
|
||||
*/
|
||||
public function set( $key, $value ) {
|
||||
if ( array_key_exists( $key, $this->cache ) ) {
|
||||
if ( $this->has( $key ) ) {
|
||||
$this->ping( $key );
|
||||
} elseif ( count( $this->cache ) >= $this->maxCacheKeys ) {
|
||||
reset( $this->cache );
|
||||
|
|
@ -75,6 +75,9 @@ class MapCacheLRU {
|
|||
* @return bool
|
||||
*/
|
||||
public function has( $key ) {
|
||||
if ( !is_int( $key ) && !is_string( $key ) ) {
|
||||
throw new MWException( __METHOD__ . ' called with invalid key. Must be string or integer.' );
|
||||
}
|
||||
return array_key_exists( $key, $this->cache );
|
||||
}
|
||||
|
||||
|
|
@ -87,7 +90,7 @@ class MapCacheLRU {
|
|||
* @return mixed Returns null if the key was not found
|
||||
*/
|
||||
public function get( $key ) {
|
||||
if ( !array_key_exists( $key, $this->cache ) ) {
|
||||
if ( !$this->has( $key ) ) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue