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 ...@@ -11,7 +11,7 @@ from ucoinpy.api import bma
from ucoinpy import PROTOCOL_VERSION from ucoinpy import PROTOCOL_VERSION
from ucoinpy.documents.certification import SelfCertification from ucoinpy.documents.certification import SelfCertification
from ucoinpy.documents.membership import Membership from ucoinpy.documents.membership import Membership
from cutecoin.tools.exceptions import PersonNotFoundError,\ from ..tools.exceptions import Error, PersonNotFoundError,\
MembershipNotFoundError MembershipNotFoundError
from PyQt5.QtCore import QMutex from PyQt5.QtCore import QMutex
...@@ -51,6 +51,8 @@ class cached(object): ...@@ -51,6 +51,8 @@ class cached(object):
except KeyError: except KeyError:
value = self.func(inst, community) value = self.func(inst, community)
inst._cache[community.currency][self.func.__name__] = value inst._cache[community.currency][self.func.__name__] = value
finally:
inst._cache_mutex.unlock()
inst._cache_mutex.unlock() inst._cache_mutex.unlock()
return value return value
...@@ -341,14 +343,12 @@ class Person(object): ...@@ -341,14 +343,12 @@ class Person(object):
:return: True if a changed was made by the reload. :return: True if a changed was made by the reload.
''' '''
self._cache_mutex.lock() self._cache_mutex.lock()
try:
if community.currency not in self._cache: if community.currency not in self._cache:
self._cache[community.currency] = {} self._cache[community.currency] = {}
change = False change = False
try:
before = self._cache[community.currency][func.__name__] before = self._cache[community.currency][func.__name__]
except KeyError:
change = True
value = func(self, community) value = func(self, community)
...@@ -363,6 +363,12 @@ class Person(object): ...@@ -363,6 +363,12 @@ class Person(object):
change = before != value change = before != value
self._cache[community.currency][func.__name__] = value self._cache[community.currency][func.__name__] = value
except KeyError:
change = True
except Error:
return False
finally:
self._cache_mutex.unlock() self._cache_mutex.unlock()
return change return change
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment