loggerhead OOPS - error: [Errno 32] Broken pipe
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Launchpad itself |
Fix Released
|
Critical
|
John A Meinel | ||
loggerhead |
Invalid
|
High
|
Unassigned |
Bug Description
we get this raised as an oops 10K times a day.
OOPS-1836CBA1
http://
I suspect this is due to the request taking more than 30 seconds and haproxy/apache terminating the connection on the assumption the server (loggerhead) has gone awol.
This gives us some idea of the magnitude of the 'first hit is slow' problem.
I'm not sure what we should do about this - but perhaps adding a timeout cap to loggerhead is appropriate: we could show an error page, perhaps even use a refresh to try again. We probably want to gather and graph this data, but an oops each time isn't terribly useful (at this scale).
OTOH perhaps we should just focus on driving it down.
error: [Errno 32] Broken pipe
Traceback (most recent call last):
Module launchpad_
app_iter = iter(app(environ, wrapped.
Module launchpad_
result = application(
Module __main__, line 165, in wrapped
Module launchpad_
return app(environ, start_response)
Module paste.translogger, line 68, in __call__
return self.applicatio
Module paste.deploy.
return self.app(environ, start_response)
Module __main__, line 149, in wrapped
Module paste.wsgilib, line 179, in catch_errors
app_iter = application(
Module launchpad_
return self.cookie_
Module paste.auth.cookie, line 305, in __call__
return self.applicatio
Module launchpad_
return self.applicatio
Module paste.httpexcep
return self.applicatio
Module launchpad_
return view.app(environ, start_response)
Module loggerhead.
return c(environ, start_response)
Module loggerhead.
template.
Module loggerhead.
self.
Module simpletal.
self.
Module simpletal.
ourInterpre
Module simpletal.
self.
Module simpletal.
resultVal.
Module simpletal.
ourInterpre
Module simpletal.
self.
Module simpletal.
resultVal.
Module simpletal.
ourInterpre
Module simpletal.
self.
Module simpletal.
self.file.write (args)
Module codecs, line 352, in write
self.
Module loggerhead.
self.flush()
Module loggerhead.
self.
Module launchpad_
return writer(arg)
Module launchpad_
self.
Module paste.httpserver, line 150, in wsgi_write_chunk
self.
Module socket, line 300, in write
self.flush()
Module socket, line 286, in flush
self.
error: [Errno 32] Broken pipe
Related branches
- Robert Collins (community): Approve
- William Grant: Approve (code*)
- Martin Pool (community): Needs Fixing
- Michael Hudson-Doyle: Pending requested
-
Diff: 193 lines (+123/-18)2 files modifiedlib/launchpad_loggerhead/app.py (+21/-17)
lib/launchpad_loggerhead/tests.py (+102/-1)
Changed in launchpad: | |
status: | New → Triaged |
importance: | Undecided → Critical |
description: | updated |
summary: |
- error: [Errno 32] Broken pipe + loggerhead OOPS - error: [Errno 32] Broken pipe |
Changed in loggerhead: | |
assignee: | nobody → John A Meinel (jameinel) |
Changed in launchpad: | |
assignee: | nobody → John A Meinel (jameinel) |
status: | Triaged → In Progress |
tags: |
added: qa-ok removed: qa-needstesting |
Changed in launchpad: | |
status: | Fix Committed → Fix Released |
Alternatively this might be when the client disconnects normally, (e.g. due to hitting refresh before the page loads - and perhaps we should just ignore the error. Perhaps the first thing to do is to gather more data: we don't currently fill out the duration field in the oops, so we can't determine if this is a timeout or not.