Comment 3 for bug 2002119

Revision history for this message
Colin Watson (cjwatson) wrote :

OOPS-b3c6038ed758fdf86c1ae39b77fd1f3f is an example OOPS here:

  RequestTimeout: gunicorn worker timeout (pid: 30462)

    Traceback (most recent call last):
  Module zope.publisher.publish, line 146, in publish
    result = publication.callObject(request, obj)
  Module lp.services.webapp.publication, line 446, in callObject
    return mapply(ob, request.getPositionalArguments(), request)
  Module zope.publisher.publish, line 119, in mapply
    return debug_call(obj, args)
   - __traceback_info__: <security proxied zope.browserpage.simpleviewclass.SimpleViewClass from /srv/launchpad.net/production/launchpad-rev-31c78762a8046acf7ab47372e5d588ebb3759d2e/lib/lp/services/temporaryblobstorage/templates/temporaryblobstorage-storeblob.pt instance at 0x7f6aa26aea20>
  Module zope.publisher.publish, line 126, in debug_call
    return obj(*args)
  Module lp.services.webapp.publisher, line 423, in __call__
    self.initialize()
  Module lp.services.temporaryblobstorage.browser, line 44, in initialize
    super().initialize()
  Module lp.app.browser.launchpadform, line 123, in initialize
    self.form_result = form_action.success(data)
  Module zope.formlib.form, line 649, in success
    return self.success_handler(self.form, self, data)
  Module lp.services.temporaryblobstorage.browser, line 50, in continue_action
    uuid = self.store_blob(data["blob"])
  Module lp.services.temporaryblobstorage.browser, line 60, in store_blob
    uuid = getUtility(ITemporaryStorageManager).new(blob)
  Module lp.services.temporaryblobstorage.model, line 134, in new
    expires,
  Module lp.services.librarian.model, line 270, in create
    allow_zero_length=allow_zero_length,
  Module lp.services.librarian.client, line 239, in addFile
    self.state.f.readline().strip(), errors="replace"
  Module socket, line 575, in readinto
    return self._sock.recv_into(b)
  Module gunicorn.workers.base, line 195, in handle_abort
    self.cfg.worker_abort(self)
  Module talisker.gunicorn, line 124, in gunicorn_worker_abort
    'gunicorn worker timeout (pid: {})'.format(worker.pid)
talisker.wsgi.RequestTimeout: gunicorn worker timeout (pid: 30462)

It may just be that if the crash report is large and the client's internet connection is relatively slow then it takes longer than 65 seconds to upload to us, which is the gunicorn worker timeout. We may need to tweak this a bit.