Please open a ticket about this.
On Monday, 7 October 2013 06:21:55 UTC-5, sherdim wrote:
>
> The source of the problem is in the gluon/cache.py
>>
> When I have revert this only file to the version of 2012-09-18 -
> cache.disk is working again
>
> below the method from that file, which have became errorous in the last
> versions:
>
> def _open_shelf_with_lock(self):
> """Open and return a shelf object, obtaining an exclusive lock
> on self.locker first. Replaces the close method of the
> returned shelf instance with one that releases the lock upon
> closing."""
> def _close(self):
> try:
> shelve.Shelf.close(self)
> finally:
> portalocker.unlock(self.locker)
> self.locker.close()
>
> storage, locker, locker_locked = None, None, False
> try:
> locker = open(self.locker_name, 'a')
> portalocker.lock(locker, portalocker.LOCK_EX)
> locker_locked = True
> storage = shelve.open(self.shelve_name)
> storage.close = _close.__get__(storage, shelve.Shelf)
> storage.locker = locker
> except Exception:
> logger.error('corrupted cache file %s, will try to delete and
> recreate it!' % (self.shelve_name))
> if storage:
> storage.close()
> storage = None
>
> try:
> os.unlink(self.shelve_name)
> storage = shelve.open(self.shelve_name)
> storage.close = _close.__get__(storage, shelve.Shelf)
> storage.locker = locker
> if not CacheAbstract.cache_stats_name in storage.keys():
> storage[CacheAbstract.cache_stats_name] = {
> 'hit_total': 0,
> 'misses': 0,
> }
> storage.sync()
> except (IOError, OSError):
> logger.warn('unable to delete and recreate cache file %s'
> % self.shelve_name)
> if storage:
> storage.close()
> storage = None
> if locker_locked:
> portalocker.unlock(locker)
> if locker:
> locker.close()
> return storage
>
>
>
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.