leginon-org / leginon-redmine-archive

1 stars 0 forks source link

kill application change dictionary size during iteration #5632

Open leginonbot opened 4 months ago

leginonbot commented 4 months ago

Author Name: Anchi Cheng (@anchi2c) Original Redmine Issue: 5632, https://emg.nysbc.org/redmine/issues/5632 Original Date: 2018-03-26 Original Assignee: Anchi Cheng


Exception in thread data binder handler thread: Traceback (most recent call last): File "/Users/acheng/miniconda/lib/python2.7/threading.py", line 801, in __bootstrap_inner self.run() File "/Users/acheng/miniconda/lib/python2.7/threading.py", line 754, in run self.target(*self.args, **self.__kwargs) File "/Users/acheng/myami/leginon/manager.py", line 42, in handleData method(args) File "/Users/acheng/myami/leginon/manager.py", line 563, in unregisterNode self.removeNode(nodename) File "/Users/acheng/myami/leginon/manager.py", line 590, in removeNode self.removeNodeDistmaps(name) File "/Users/acheng/myami/leginon/manager.py", line 606, in removeNodeDistmaps for othernodename in self.distmap[eventclass]: RuntimeError: dictionary changed size during iteration

leginonbot commented 4 months ago

Original Redmine Comment Author Name: Anchi Cheng (@anchi2c) Original Date: 2018-03-26T18:09:46Z


make a copy of distmap before looping should be enough since killed node are handled in the loop.

leginonbot commented 4 months ago

Original Redmine Comment Author Name: Anchi Cheng (@anchi2c) Original Date: 2018-03-26T20:08:33Z


Changed to use list(dict) to copy keys.