error page when google search fails is unusable
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Launchpad itself |
Fix Released
|
Critical
|
Unassigned |
Bug Description
Connectivity problems between Launchpad and Google can cause a TimeoutError. The user is shown a special page to explain the problem. This page does not inform the user of exact matches that might be made from the search nor help the user take the next step.
The error page does not include a search form with the search terms pre-filled, nor are there instruction to reload the page. the only action the user may take in the UI is to visit the front page. Regardless of the failure to locate matching pages from Google, other search for users, projects, bugs, and questions may match the search terms. I might be better let the view handle the error, and have the standard search page handle the display of problem.
Related OOPSes: OOPS-979A991, OOPS-979C1034, OOPS-979C1040, OOPS-979E960, OOPS-979F907, OOPS-979F908, OOPS-979G980, OOPS-979H874, OOPS-1539A1074, OOPS-1539B1178 (HTTPError: HTTP Error 500: Internal Server Error)
The same problem that caused the above HttpError, caused this another one, that is LP to oops when google returns an empty xml, as seen in OOPS-979B1022, OOPS-979C1028 and OOPS-979H877 (IndexError: list index out of range). LP should, as it should in the related HttpError above, recover gracefully.
Also: OOPS-1552A1017 (URLError: <urlopen error (110, 'Connection timed out')>)
Related branches
- Benji York (community): Approve (code)
-
Diff: 423 lines (+123/-45)15 files modifiedbuildout.cfg (+1/-1)
lib/canonical/config/schema-lazr.conf (+2/-2)
lib/canonical/launchpad/scripts/runlaunchpad.py (+1/-1)
lib/canonical/launchpad/testing/tests/test_googleservice.py (+1/-1)
lib/canonical/testing/layers.py (+1/-1)
lib/lp/app/browser/root.py (+3/-5)
lib/lp/app/browser/tests/launchpad-search-pages.txt (+1/-11)
lib/lp/services/configure.zcml (+1/-1)
lib/lp/services/googlesearch/__init__.py (+11/-4)
lib/lp/services/googlesearch/configure.zcml (+7/-7)
lib/lp/services/googlesearch/doc/google-searchservice.txt (+6/-7)
lib/lp/services/googlesearch/doc/google-service-stub.txt.disabled (+1/-1)
lib/lp/services/googlesearch/tests/googleserviceharness.py (+2/-2)
lib/lp/services/googlesearch/tests/test_google.py (+84/-0)
lib/lp/services/googlesearch/tests/test_googleharness.py (+1/-1)
description: | updated |
description: | updated |
description: | updated |
tags: | added: oops |
description: | updated |
description: | updated |
description: | updated |
summary: |
- google search timeouts are not usable + error page when google search fails is unusable |
Changed in launchpad: | |
importance: | Low → Critical |
Changed in launchpad: | |
assignee: | nobody → Curtis Hovey (sinzui) |
milestone: | none → 11.04 |
status: | Triaged → In Progress |
Changed in launchpad: | |
status: | Fix Committed → In Progress |
tags: |
added: qa-ok removed: qa-needstesting |
Changed in launchpad: | |
milestone: | 11.03 → 11.04 |
tags: |
added: qa-ok removed: qa-needstesting |
Changed in launchpad: | |
status: | Fix Committed → Fix Released |
Changed in launchpad: | |
assignee: | Curtis Hovey (sinzui) → nobody |
I wonder how long you would typically need to retry?
Are we taking seconds? minutes? hours? $random?
As you state in the bug report, taking the user back to the search page with the input pre-filled, and inviting him to search again makes sense, if we're talking about random or seconds in timeouts.
If it's normally more than that, then an error page may be more appropriate, although we may be able to tweak the wording and the way to display it.