← Back to team overview

gtg-contributors team mailing list archive

[Bug 635048] [NEW] fix rtm backend concurrency issue

 

Public bug reported:

Exception in thread Thread-4:
Traceback (most recent call last):
  File "/usr/lib/python2.6/threading.py", line 532, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.6/threading.py", line 484, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/usr/local/lib/python2.6/dist-packages/GTG/core/datastore.py", line 603, in __start_get_tasks
    self.backend.start_get_tasks()
  File "/usr/local/lib/python2.6/dist-packages/GTG/tools/interruptible.py", line 45, in new
    return fn(*args)
  File "/usr/local/lib/python2.6/dist-packages/GTG/backends/periodicimportbackend.py", line 81, in start_get_tasks
    self._start_get_tasks()
  File "/usr/local/lib/python2.6/dist-packages/GTG/backends/periodicimportbackend.py", line 101, in _start_get_tasks
    self.do_periodic_import()
  File "/usr/local/lib/python2.6/dist-packages/GTG/backends/backend_rtm.py", line 185, in do_periodic_import
    self._process_rtm_task(rtm_task_id)
  File "/usr/local/lib/python2.6/dist-packages/GTG/backends/backend_rtm.py", line 403, in _process_rtm_task
    self.save_state()
  File "/usr/local/lib/python2.6/dist-packages/GTG/backends/backend_rtm.py", line 108, in save_state
    self._store_pickled_file(self.sync_engine_path, self.sync_engine)
  File "/usr/local/lib/python2.6/dist-packages/GTG/backends/genericbackend.py", line 567, in _store_pickled_file
    pickle.dump(data, file)
  File "/usr/lib/python2.6/pickle.py", line 1362, in dump
    Pickler(file, protocol).dump(obj)
  File "/usr/lib/python2.6/pickle.py", line 224, in dump
    self.save(obj)
  File "/usr/lib/python2.6/pickle.py", line 331, in save
    self.save_reduce(obj=obj, *rv)
  File "/usr/lib/python2.6/pickle.py", line 419, in save_reduce
    save(state)
  File "/usr/lib/python2.6/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/usr/lib/python2.6/pickle.py", line 649, in save_dict
    self._batch_setitems(obj.iteritems())
  File "/usr/lib/python2.6/pickle.py", line 663, in _batch_setitems
    save(v)
  File "/usr/lib/python2.6/pickle.py", line 331, in save
    self.save_reduce(obj=obj, *rv)
  File "/usr/lib/python2.6/pickle.py", line 419, in save_reduce
    save(state)
  File "/usr/lib/python2.6/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/usr/lib/python2.6/pickle.py", line 649, in save_dict
    self._batch_setitems(obj.iteritems())
  File "/usr/lib/python2.6/pickle.py", line 663, in _batch_setitems
    save(v)
  File "/usr/lib/python2.6/pickle.py", line 331, in save
    self.save_reduce(obj=obj, *rv)
  File "/usr/lib/python2.6/pickle.py", line 419, in save_reduce
    save(state)
  File "/usr/lib/python2.6/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/usr/lib/python2.6/pickle.py", line 649, in save_dict
    self._batch_setitems(obj.iteritems())
  File "/usr/lib/python2.6/pickle.py", line 663, in _batch_setitems
    save(v)
  File "/usr/lib/python2.6/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/usr/lib/python2.6/pickle.py", line 649, in save_dict
    self._batch_setitems(obj.iteritems())
  File "/usr/lib/python2.6/pickle.py", line 661, in _batch_setitems
    for k, v in items:
RuntimeError: dictionary changed size during iteration

** Affects: gtg
     Importance: Critical
     Assignee: Luca Invernizzi (invernizzi)
         Status: Triaged


** Tags: release-critical

-- 
fix rtm backend concurrency issue
https://bugs.launchpad.net/bugs/635048
You received this bug notification because you are a member of Gtg
contributors, which is subscribed to Getting Things GNOME!.

Status in Getting Things GNOME!: Triaged

Bug description:
Exception in thread Thread-4:
Traceback (most recent call last):
  File "/usr/lib/python2.6/threading.py", line 532, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.6/threading.py", line 484, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/usr/local/lib/python2.6/dist-packages/GTG/core/datastore.py", line 603, in __start_get_tasks
    self.backend.start_get_tasks()
  File "/usr/local/lib/python2.6/dist-packages/GTG/tools/interruptible.py", line 45, in new
    return fn(*args)
  File "/usr/local/lib/python2.6/dist-packages/GTG/backends/periodicimportbackend.py", line 81, in start_get_tasks
    self._start_get_tasks()
  File "/usr/local/lib/python2.6/dist-packages/GTG/backends/periodicimportbackend.py", line 101, in _start_get_tasks
    self.do_periodic_import()
  File "/usr/local/lib/python2.6/dist-packages/GTG/backends/backend_rtm.py", line 185, in do_periodic_import
    self._process_rtm_task(rtm_task_id)
  File "/usr/local/lib/python2.6/dist-packages/GTG/backends/backend_rtm.py", line 403, in _process_rtm_task
    self.save_state()
  File "/usr/local/lib/python2.6/dist-packages/GTG/backends/backend_rtm.py", line 108, in save_state
    self._store_pickled_file(self.sync_engine_path, self.sync_engine)
  File "/usr/local/lib/python2.6/dist-packages/GTG/backends/genericbackend.py", line 567, in _store_pickled_file
    pickle.dump(data, file)
  File "/usr/lib/python2.6/pickle.py", line 1362, in dump
    Pickler(file, protocol).dump(obj)
  File "/usr/lib/python2.6/pickle.py", line 224, in dump
    self.save(obj)
  File "/usr/lib/python2.6/pickle.py", line 331, in save
    self.save_reduce(obj=obj, *rv)
  File "/usr/lib/python2.6/pickle.py", line 419, in save_reduce
    save(state)
  File "/usr/lib/python2.6/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/usr/lib/python2.6/pickle.py", line 649, in save_dict
    self._batch_setitems(obj.iteritems())
  File "/usr/lib/python2.6/pickle.py", line 663, in _batch_setitems
    save(v)
  File "/usr/lib/python2.6/pickle.py", line 331, in save
    self.save_reduce(obj=obj, *rv)
  File "/usr/lib/python2.6/pickle.py", line 419, in save_reduce
    save(state)
  File "/usr/lib/python2.6/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/usr/lib/python2.6/pickle.py", line 649, in save_dict
    self._batch_setitems(obj.iteritems())
  File "/usr/lib/python2.6/pickle.py", line 663, in _batch_setitems
    save(v)
  File "/usr/lib/python2.6/pickle.py", line 331, in save
    self.save_reduce(obj=obj, *rv)
  File "/usr/lib/python2.6/pickle.py", line 419, in save_reduce
    save(state)
  File "/usr/lib/python2.6/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/usr/lib/python2.6/pickle.py", line 649, in save_dict
    self._batch_setitems(obj.iteritems())
  File "/usr/lib/python2.6/pickle.py", line 663, in _batch_setitems
    save(v)
  File "/usr/lib/python2.6/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/usr/lib/python2.6/pickle.py", line 649, in save_dict
    self._batch_setitems(obj.iteritems())
  File "/usr/lib/python2.6/pickle.py", line 661, in _batch_setitems
    for k, v in items:
RuntimeError: dictionary changed size during iteration





Follow ups

References