Comment 0 for bug 574399

Revision history for this message
Anthony Lenton (elachuni) wrote : wsgi-oops still isn't thread-safe

Working with the latest wsgi-oops, we sometimes get the following
Traceback (most recent call last):
  File "/srv/login.staging.ubuntu.com/staging/framework/django.wsgi", line 46, in application
    return oops(environ, start_response)
  File "/usr/lib/python2.5/site-packages/canonical/oops/wsgi.py", line 70, in __call__
    response_trapper = ResponseTrapper(self.serial, environ, start_response)
  File "/usr/lib/python2.5/site-packages/canonical/oops/wsgi.py", line 88, in __init__
    environ['OOPSID'] = self.oops.assign_id()
  File "/usr/lib/python2.5/site-packages/canonical/oops/oops.py", line 66, in assign_id
    self.id = self._oops_id_factory()
  File "/usr/lib/python2.5/site-packages/canonical/oops/serializer.py", line 171, in get_next_oops_id
    day, sequence = self.get_next_sequence()
  File "/usr/lib/python2.5/site-packages/canonical/oops/serializer.py", line 159, in get_next_sequence
    serializer in self._serializers[self._key])
  File "/usr/lib/python2.5/site-packages/canonical/oops/serializer.py", line 158, in <genexpr>
    sequence = max(serializer.get_initial_sequence() for
  File "/usr/lib/python2.5/weakref.py", line 303, in iterkeys
    for wr in self.data.iterkeys():
RuntimeError: dictionary changed size during iteration

You usually see this error pop up a couple of time during load tests.