Skip to content
Snippets Groups Projects
Commit 4a1c5f2c authored by inso's avatar inso
Browse files

Fixed bugs in person caching

- Error when an exception was raised
- Interblocking because of missing finally clause
parent e49c2887
No related branches found
No related tags found
No related merge requests found
......@@ -11,7 +11,7 @@ from ucoinpy.api import bma
from ucoinpy import PROTOCOL_VERSION
from ucoinpy.documents.certification import SelfCertification
from ucoinpy.documents.membership import Membership
from cutecoin.tools.exceptions import PersonNotFoundError,\
from ..tools.exceptions import Error, PersonNotFoundError,\
MembershipNotFoundError
from PyQt5.QtCore import QMutex
......@@ -51,6 +51,8 @@ class cached(object):
except KeyError:
value = self.func(inst, community)
inst._cache[community.currency][self.func.__name__] = value
finally:
inst._cache_mutex.unlock()
inst._cache_mutex.unlock()
return value
......@@ -341,14 +343,12 @@ class Person(object):
:return: True if a changed was made by the reload.
'''
self._cache_mutex.lock()
try:
if community.currency not in self._cache:
self._cache[community.currency] = {}
change = False
try:
before = self._cache[community.currency][func.__name__]
except KeyError:
change = True
value = func(self, community)
......@@ -363,6 +363,12 @@ class Person(object):
change = before != value
self._cache[community.currency][func.__name__] = value
except KeyError:
change = True
except Error:
return False
finally:
self._cache_mutex.unlock()
return change
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment