Commit bced2e7b authored by Julien Muchembled's avatar Julien Muchembled

storage: revert "remake _getPartition lazy, similarly to fallback decorator"

_getPartition optimization can't be done at class level and properties hide
instance attribute so implement laziness in __getattr__
parent ea5cdd0b
...@@ -30,8 +30,6 @@ def lazymethod(func): ...@@ -30,8 +30,6 @@ def lazymethod(func):
def fallback(func): def fallback(func):
def warn(self): def warn(self):
cls = self.__class__
name = func.__name__
logging.info("Fallback to generic/slow implementation of %s." logging.info("Fallback to generic/slow implementation of %s."
" It should be overridden by backend storage (%s).", " It should be overridden by backend storage (%s).",
func.__name__, self.__class__.__name__) func.__name__, self.__class__.__name__)
...@@ -51,6 +49,15 @@ class DatabaseManager(object): ...@@ -51,6 +49,15 @@ class DatabaseManager(object):
self._wait = wait self._wait = wait
self._parse(database) self._parse(database)
def __getattr__(self, attr):
if attr == "_getPartition":
np = self.getNumPartitions()
value = lambda x: x % np
else:
return self.__getattribute__(attr)
setattr(self, attr, value)
return value
def _parse(self, database): def _parse(self, database):
"""Called during instanciation, to process database parameter.""" """Called during instanciation, to process database parameter."""
pass pass
...@@ -77,11 +84,6 @@ class DatabaseManager(object): ...@@ -77,11 +84,6 @@ class DatabaseManager(object):
def commit(self): def commit(self):
pass pass
@lazymethod
def _getPartition(self):
np = self.getNumPartitions()
return staticmethod(lambda x: x % np)
def getConfiguration(self, key): def getConfiguration(self, key):
""" """
Return a configuration value, returns None if not found or not set Return a configuration value, returns None if not found or not set
...@@ -125,10 +127,8 @@ class DatabaseManager(object): ...@@ -125,10 +127,8 @@ class DatabaseManager(object):
Store the number of partitions into a database. Store the number of partitions into a database.
""" """
self.setConfiguration('partitions', num_partitions) self.setConfiguration('partitions', num_partitions)
cls = self.__class__
assert cls is not DatabaseManager
try: try:
del cls._getPartition del self._getPartition
except AttributeError: except AttributeError:
pass pass
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment