--- moin-1.7.orig/MoinMoin/user.py	2007-12-01 16:50:42.000000000 +0200
+++ moin-1.7/MoinMoin/user.py	2007-12-04 16:48:40.000000000 +0200
@@ -72,18 +72,34 @@
         return None
     cfg = request.cfg
     cachekey = '%s2id' % key
+    cachekey_mtime = '%s2id_mtime' % key
+    cache = caching.CacheEntry(request, 'user', cachekey, scope='wiki', use_pickle=True)
+
     try:
         _key2id = getattr(cfg.cache, cachekey)
+        _key2id_mtime = getattr(cfg.cache, cachekey_mtime)
     except AttributeError:
-        arena = 'user'
-        cache = caching.CacheEntry(request, arena, cachekey, scope='wiki', use_pickle=True)
         try:
             _key2id = cache.content()
+            _key2id_mtime = cache.mtime()
         except caching.CacheError:
             _key2id = {}
+            _key2id_mtime = 0
         setattr(cfg.cache, cachekey, _key2id)
+        setattr(cfg.cache, cachekey_mtime, _key2id_mtime)
+
+    try:
+        _key2id_mtime = cache.mtime()
+        if getattr(cfg.cache, cachekey_mtime) != _key2id_mtime:
+            _key2id = cache.content()
+            setattr(cfg.cache, cachekey, _key2id)
+            setattr(cfg.cache, cachekey_mtime, _key2id_mtime)
+    except caching.CacheError:
+        setattr(cfg.cache, cachekey_mtime, 0)
+        
     uid = _key2id.get(search, None)
-    if uid is None:
+    if uid is None or getattr(cfg.cache, cachekey_mtime) == 0:
+        _key2id = {}
         for userid in getUserList(request):
             u = User(request, id=userid)
             if hasattr(u, key):
@@ -93,10 +109,10 @@
                         _key2id[val] = userid
                 else:
                     _key2id[value] = userid
-        arena = 'user'
-        cache = caching.CacheEntry(request, arena, cachekey, scope='wiki', use_pickle=True)
+
         try:
             cache.update(_key2id)
+            setattr(cfg.cache, cachekey_mtime, cache.mtime())
         except caching.CacheError:
             pass
         uid = _key2id.get(search, None)
--- moin-1.7.orig/MoinMoin/userprefs/prefs.py	2007-12-01 16:50:42.000000000 +0200
+++ moin-1.7/MoinMoin/userprefs/prefs.py	2007-12-04 16:48:54.000000000 +0200
@@ -8,7 +8,7 @@
 """
 
 import time
-from MoinMoin import user, util, wikiutil, events
+from MoinMoin import user, util, wikiutil, events, caching
 from MoinMoin.widget import html
 from MoinMoin.userprefs import UserPrefBase
 
@@ -200,6 +200,11 @@
             # set valid to false so the current request won't
             # show the user as logged-in any more
             theuser.valid = False
+
+        # update file cache
+        cache = caching.CacheEntry(self.request, 'user', 'name2id', scope='wiki', use_pickle=True)
+        cache.remove()
+
         self.request.user = theuser
 
         result = _("User preferences saved!")
