Browse Source

removed key_list in memcache

version-14
Rushabh Mehta 12 years ago
parent
commit
7c012c378d
2 changed files with 12 additions and 38 deletions
  1. +1
    -30
      webnotes/memc.py
  2. +11
    -8
      webnotes/sessions.py

+ 1
- 30
webnotes/memc.py View File

@@ -31,38 +31,9 @@ class MClient(memcache.Client):
def set_value(self, key, val):
self.set(self.n(key), val)
self.add_to_key_list(key)
def get_value(self, key):
return self.get(self.n(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 View File

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


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

# clear doctype 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):
if not user:


Loading…
Cancel
Save