#20470: Querying crashes with RuntimeError (dictionary changed size during
iteration)
----------------------------------------------+--------------------
Reporter: jpaalasm | Owner: nobody
Type: Bug | Status: new
Component: Database layer (models, ORM) | Version: 1.5
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 0 | UI/UX: 0
----------------------------------------------+--------------------
We have defined the following model.
{{{
class SignalAnalysisTask(models.Model):
continuous_signal = models.ForeignKey(ContinuousSignal,
related_name='signal_analysis_tasks')
closed = models.BooleanField(default=False, db_index=True)
ticket = models.OneToOneField(AnalysisTicket, null=True, blank=True,
related_name='analysis_task')
latest_fragment = models.ForeignKey(SignalFragment, null=True,
blank=True, related_name='analysis_task_latest_fragments')
}}}
When the below query is performed with the model, Django crashes with
"RuntimeError: dictionary changed size during iteration". See the full
traceback. Django is configured to run with Apache and mod_wsgi on Linux.
{{{
open_tasks = SignalAnalysisTask.objects.filter(closed=False)
open_tasks_with_new_data =
open_tasks.exclude(latest_fragment=F('continuous_signal__last_signal_fragment'))
open_tasks_with_new_data =
open_tasks_with_new_data.order_by("continuous_signal__start_time")
}}}
Traceback:
{{{
Traceback (most recent call last):
File "/usr/lib/finsor/virtualenvs/signalstorage/local/lib/python2.7
/site-packages/django/core/handlers/base.py", line 115, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/finsor/virtualenvs/signalstorage/local/lib/python2.7
/site-packages/bedsenseweb/utils/viewutils.py", line 27, in check
return view_func(request, *args, **kwargs)
File "/usr/lib/finsor/virtualenvs/signalstorage/local/lib/python2.7
/site-packages/bedsenseweb/tickets/views.py", line 21, in acquire
ticket = models.create_new_ticket()
File "/usr/lib/finsor/virtualenvs/signalstorage/local/lib/python2.7
/site-packages/bedsenseweb/tickets/models.py", line 41, in
create_new_ticket
open_tasks_with_new_data =
open_tasks_with_new_data.order_by("continuous_signal__start_time")
File "/usr/lib/finsor/virtualenvs/signalstorage/local/lib/python2.7
/site-packages/django/db/models/query.py", line 791, in order_by
obj = self._clone()
File "/usr/lib/finsor/virtualenvs/signalstorage/local/lib/python2.7
/site-packages/django/db/models/query.py", line 907, in _clone
query = self.query.clone()
File "/usr/lib/finsor/virtualenvs/signalstorage/local/lib/python2.7
/site-packages/django/db/models/sql/query.py", line 264, in clone
obj.where = copy.deepcopy(self.where, memo=memo)
File "/usr/lib/python2.7/copy.py", line 174, in deepcopy
y = copier(memo)
File "/usr/lib/finsor/virtualenvs/signalstorage/local/lib/python2.7
/site-packages/django/utils/tree.py", line 61, in __deepcopy__
obj.children = copy.deepcopy(self.children, memodict)
File "/usr/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/lib/python2.7/copy.py", line 230, in _deepcopy_list
y.append(deepcopy(a, memo))
File "/usr/lib/python2.7/copy.py", line 174, in deepcopy
y = copier(memo)
File "/usr/lib/finsor/virtualenvs/signalstorage/local/lib/python2.7
/site-packages/django/utils/tree.py", line 61, in __deepcopy__
obj.children = copy.deepcopy(self.children, memodict)
File "/usr/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/lib/python2.7/copy.py", line 230, in _deepcopy_list
y.append(deepcopy(a, memo))
File "/usr/lib/python2.7/copy.py", line 174, in deepcopy
y = copier(memo)
File "/usr/lib/finsor/virtualenvs/signalstorage/local/lib/python2.7
/site-packages/django/utils/tree.py", line 61, in __deepcopy__
obj.children = copy.deepcopy(self.children, memodict)
File "/usr/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/lib/python2.7/copy.py", line 230, in _deepcopy_list
y.append(deepcopy(a, memo))
File "/usr/lib/python2.7/copy.py", line 174, in deepcopy
y = copier(memo)
File "/usr/lib/finsor/virtualenvs/signalstorage/local/lib/python2.7
/site-packages/django/utils/tree.py", line 61, in __deepcopy__
obj.children = copy.deepcopy(self.children, memodict)
File "/usr/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/lib/python2.7/copy.py", line 230, in _deepcopy_list
y.append(deepcopy(a, memo))
File "/usr/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/lib/python2.7/copy.py", line 237, in _deepcopy_tuple
y.append(deepcopy(a, memo))
File "/usr/lib/python2.7/copy.py", line 190, in deepcopy
y = _reconstruct(x, rv, 1, memo)
File "/usr/lib/python2.7/copy.py", line 334, in _reconstruct
state = deepcopy(state, memo)
File "/usr/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/lib/python2.7/copy.py", line 257, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/usr/lib/python2.7/copy.py", line 190, in deepcopy
y = _reconstruct(x, rv, 1, memo)
File "/usr/lib/python2.7/copy.py", line 334, in _reconstruct
state = deepcopy(state, memo)
File "/usr/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/lib/python2.7/copy.py", line 257, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/usr/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/lib/python2.7/copy.py", line 256, in _deepcopy_dict
for key, value in x.iteritems():
RuntimeError: dictionary changed size during iteration
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/20470>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.