Explorar el Código

removed key_list in memcache

version-14
Rushabh Mehta hace 12 años
padre
commit
7c012c378d
Se han modificado 2 ficheros con 12 adiciones y 38 borrados
  1. +1
    -30
      webnotes/memc.py
  2. +11
    -8
      webnotes/sessions.py

+ 1
- 30
webnotes/memc.py Ver fichero

@@ -31,38 +31,9 @@ class MClient(memcache.Client):
def set_value(self, key, val): def set_value(self, key, val):
self.set(self.n(key), val) self.set(self.n(key), val)
self.add_to_key_list(key)
def get_value(self, key): def get_value(self, key):
return self.get(self.n(key)) return self.get(self.n(key))
def delete_value(self, key): def delete_value(self, key):
self.delete(self.n(key))
def add_to_key_list(self, key):
key_list = self.get_value('key_list') or []
if key not in key_list:
key_list.append(key)
self.set(self.n("key_list"), key_list)
def delete_keys(self, startswith=None):
"""flush keys from known key_list"""
if not startswith:
for key in self.get_value('key_list'):
self.delete_value(key)

self.delete_value('key_list')
else:
deleted = []
keys = self.get_value('key_list') or []
for key in keys:
if key.startswith(startswith):
self.delete(self.n(key))
deleted.append(key)
for d in deleted:
keys.remove(d)
self.set_value("key_list", keys)
# in any case, delete it explicitly
self.delete(self.n(startswith))
self.delete(self.n(key))

+ 11
- 8
webnotes/sessions.py Ver fichero

@@ -36,22 +36,25 @@ import webnotes.model.doctype
@webnotes.whitelist() @webnotes.whitelist()
def clear(user=None): def clear(user=None):
"""clear all cache""" """clear all cache"""
clear_cache(user)
clear_cache(webnotes.session.user)
webnotes.response['message'] = "Cache Cleared" webnotes.response['message'] = "Cache Cleared"




def clear_cache(user=None): def clear_cache(user=None):
"""clear cache""" """clear cache"""
webnotes.cache().delete_keys("bootinfo:")
cache = webnotes.cache()


# clear doctype cache
webnotes.model.doctype.clear_cache() webnotes.model.doctype.clear_cache()


webnotes.cache().delete_keys("session:")

if webnotes.session:
webnotes.cache().delete_keys("bootinfo:" + webnotes.session.user)
if webnotes.session.sid:
webnotes.cache().delete_keys("session:" + webnotes.session.sid)
if user:
cache.delete_value("bootinfo:" + user)
if webnotes.session and webnotes.session.sid:
cache.delete_value("session:" + webnotes.session.sid)
else:
for sess in webnotes.conn.sql("""select user, sid from tabSessions""", as_dict=1):
cache.delete_value("sesssion:" + sess.sid)
cache.delete_value("bootinfo:" + sess.user)
def clear_sessions(user=None, keep_current=False): def clear_sessions(user=None, keep_current=False):
if not user: if not user:


Cargando…
Cancelar
Guardar