diff --git a/VERSION b/VERSION index bc31a9e3..6e620a50 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 1.99.7 (2012-03-28 21:37:42) dev +Version 1.99.7 (2012-03-28 21:53:08) dev diff --git a/gluon/cache.py b/gluon/cache.py index ff326999..5c792020 100644 --- a/gluon/cache.py +++ b/gluon/cache.py @@ -163,7 +163,8 @@ class CacheInRam(CacheAbstract): self.locker.release() def __call__(self, key, f, - time_expire = DEFAULT_TIME_EXPIRE): + time_expire = DEFAULT_TIME_EXPIRE, + destroyer = None): """ Attention! cache.ram does not copy the cached object. It just stores a reference to it. Turns out the deepcopying the object has some problems: @@ -179,6 +180,8 @@ class CacheInRam(CacheAbstract): item = self.storage.get(key, None) if item and f is None: del self.storage[key] + if destroyer: + destroyer(item[1]) self.storage[CacheAbstract.cache_stats_name]['hit_total'] += 1 self.locker.release() @@ -186,6 +189,8 @@ class CacheInRam(CacheAbstract): return None if item and (dt is None or item[0] > time.time() - dt): return item[1] + elif item and (item[0] < time.time() - dt) and destroyer: + destroyer(item[1]) value = f() self.locker.acquire() diff --git a/gluon/dal.py b/gluon/dal.py index 60c52f65..1a2a99f4 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -2737,9 +2737,6 @@ class FireBirdEmbeddedAdapter(FireBirdAdapter): user=credential_decoder(user), password=credential_decoder(password), charset=charset)) - #def connect(driver_args=driver_args): - # return kinterbasdb.connect(**driver_args) - def connect(driver_args=driver_args): return self.driver.connect(**driver_args) self.pool_connection(connect)