diff --git a/CHANGES.rst b/CHANGES.rst index c86cc54b..d1f4110d 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,5 +1,9 @@ -X.XX.X (YYYY MM DD) -=================== +1.13.4 (2018 August 9) +===================== + +Bugfixes +-------- +* Enforce ``shelve`` to use ``dbm.dumb``/``dumbdbm`` modules for Python 3.x/2.7 respectively to prevent hiccups on a big amount of generated checkpoint. Was caught on macos X (``ndbm`` backend). Enhancements ------------ diff --git a/datarobot_batch_scoring/writer.py b/datarobot_batch_scoring/writer.py index 3c997618..dd598b79 100644 --- a/datarobot_batch_scoring/writer.py +++ b/datarobot_batch_scoring/writer.py @@ -17,6 +17,11 @@ WriterQueueMsg, ProgressQueueMsg, REPORT_INTERVAL from datarobot_batch_scoring.utils import get_rusage +if six.PY3: + import dbm.dumb as dumb_dbm +else: + import dumbdbm as dumb_dbm + class ShelveError(Exception): pass @@ -83,7 +88,8 @@ def __enter__(self): assert(not self.is_open) self.is_open = True self._ui.debug('ENTER CALLED ON RUNCONTEXT') - self.db = shelve.open(self.file_context.file_name, writeback=True) + raw_db = dumb_dbm.open(self.file_context.file_name) + self.db = shelve.Shelf(raw_db, writeback=True) if not hasattr(self, 'partitions'): self.partitions = [] return self