diff --git a/lib/SimpleSAML/Memcache.php b/lib/SimpleSAML/Memcache.php
index 1089afa6e94d8a499eb8c4ca8e87347af14395fb..60d55a1ba189f7a16b24d34cead873dd8b72cfb0 100644
--- a/lib/SimpleSAML/Memcache.php
+++ b/lib/SimpleSAML/Memcache.php
@@ -31,7 +31,9 @@ class SimpleSAML_Memcache {
* @return The data stored with the given key, or NULL if no data matching the key was found.
*/
public static function get($key) {
+ SimpleSAML_Logger::debug("loading key $key from memcache");
+ $latestInfo = NULL;
$latestTime = 0.0;
$latestData = NULL;
$mustUpdate = FALSE;
@@ -69,15 +71,15 @@ class SimpleSAML_Memcache {
continue;
}
-
- if($latestTime === 0.0) {
- /* First data found. */
+ if($latestInfo === NULL) {
+ /* First info found. */
+ $latestInfo = $serializedInfo;
$latestTime = $info['timestamp'];
$latestData = $info['data'];
continue;
}
- if($info['timestamp'] === $latestTime && $info['data'] === $latestData) {
+ if($info['timestamp'] === $latestTime && $serializedInfo === $latestInfo) {
/* This data matches the data from the other server(s). */
continue;
}
@@ -91,18 +93,21 @@ class SimpleSAML_Memcache {
/* Update if data in $info is newer than $latestData. */
if($latestTime < $info['timestamp']) {
+ $latestInfo = $serializedInfo;
$latestTime = $info['timestamp'];
$latestData = $info['data'];
}
}
- if($latestTime === 0.0) {
+ if($latestData === NULL) {
/* We didn't find any data matching the key. */
+ SimpleSAML_Logger::debug("key $key not found in memcache");
return NULL;
}
if($mustUpdate) {
/* We found data matching the key, but some of the servers need updating. */
+ SimpleSAML_Logger::debug("Memcache servers out of sync for $key, forcing sync");
self::set($key, $latestData);
}
@@ -118,6 +123,7 @@ class SimpleSAML_Memcache {
* @param int|NULL $expire The expiration timestamp of the data.
*/
public static function set($key, $value, $expire = NULL) {
+ SimpleSAML_Logger::debug("saving key $key to memcache");
$savedInfo = array(
'timestamp' => microtime(TRUE),
'data' => $value
@@ -143,6 +149,7 @@ class SimpleSAML_Memcache {
*/
public static function delete($key) {
assert('is_string($key)');
+ SimpleSAML_Logger::debug("deleting key $key from memcache");
/* Store this object to all groups of memcache servers. */
foreach(self::getMemcacheServers() as $server) {