Bug 1498804
Summary: | system search fails with 500 Internal Server Error when "value" parameter is missing: KeyError: 'value' | ||
---|---|---|---|
Product: | [Retired] Beaker | Reporter: | Jan Hutař <jhutar> |
Component: | general | Assignee: | Dan Callaghan <dcallagh> |
Status: | CLOSED CURRENTRELEASE | QA Contact: | Dan Callaghan <dcallagh> |
Severity: | low | Docs Contact: | |
Priority: | unspecified | ||
Version: | develop | CC: | achatter, dcallagh, mjia, rjoost |
Target Milestone: | 24.5 | Keywords: | Patch |
Target Release: | --- | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | If docs needed, set a value | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2017-10-27 06:47:32 UTC | Type: | Bug |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Jan Hutař
2017-10-05 10:00:07 UTC
I can't reproduce this... Following those steps I end up at this URL, which works (should be returning machines which are not virtualised): https://beaker.engineering.redhat.com/?systemsearch-0.table=System%2FLabController&systemsearch-0.keyvalue=&systemsearch-0.operation=is&systemsearch-0.value=lab-02.rhts.eng.bos.redhat.com&systemsearch-1.table=Key%2FValue&systemsearch-1.keyvalue=HVM&systemsearch-1.operation=is&systemsearch-1.value=1&systemsearch-2.table=System%2FHypervisor&systemsearch-2.keyvalue=&systemsearch-2.operation=is&systemsearch-2.value= It could be some kind of bug/race condition in the search bar which ended up producing invalid search terms which the server couldn't parse. Do you have the URL where you saw this 500? Also, we have had a few bug reports in the past where the search URL was manipulated by some Greasemonkey script producing invalid search parameters. For example bug 1432408, bug 1277632. So please check that is not the case here. Oh, I'm sorry, looks like there are missing steps: 3.1 Click Search 3.2 Click "+ Add" to be able to add third criteria So opening this link: https://beaker.engineering.redhat.com/?systemsearch-0.table=System%2FLabController&systemsearch-0.keyvalue=&systemsearch-0.operation=contains&systemsearch-0.value=lab-02.rhts.eng.brq.redhat.com&systemsearch-1.table=Key%2FValue&systemsearch-1.keyvalue=HVM&systemsearch-1.operation=is&systemsearch-1.value=1&systemsearch_column_System%2FArch=System%2FArch&systemsearch_column_System%2FModel=System%2FModel&systemsearch_column_System%2FName=System%2FName&systemsearch_column_System%2FStatus=System%2FStatus&systemsearch_column_System%2FType=System%2FType&systemsearch_column_System%2FUser=System%2FUser&systemsearch_column_System%2FVendor=System%2FVendor and clicking "+ Add" and adding "System/Hypervisor" "is" and keep last field empty as third filter and clicking "Search" reproduces it reliably for me (firefox-56.0-3.fc26.x86_64). Note that reason for having that empty field is to get machines which are not virtualized (i.e. do not have hypervisor set). Okay I gotcha. It looks like the Python side is always expecting the "value" parameter to be present, even if it's just empty string. And indeed it usually is, except under certain circumstances where the JS has added a new row to the search box. In that case the control is not "successful" for whatever reason and the value parameter is ommitted entirely, causing the 500. cherrypy.msg INFO HTTP: Page handler: <bound method Root.index of <bkr.server.controllers.Root object at 0x7f3828ee8d90>> Traceback (most recent call last): File "/usr/lib/python2.6/site-packages/CherryPy-2.3.0-py2.6.egg/cherrypy/_cphttptools.py", line 121, in _run self.main() File "/usr/lib/python2.6/site-packages/CherryPy-2.3.0-py2.6.egg/cherrypy/_cphttptools.py", line 264, in main body = page_handler(*virtual_path, **self.params) File "<string>", line 3, in index File "/usr/lib/python2.6/site-packages/turbogears/controllers.py", line 384, in <lambda> expose = lambda func, *args, **kw: func(*args, **kw) File "<string>", line 3, in index File "/usr/lib/python2.6/site-packages/turbogears/controllers.py", line 361, in expose *args, **kw) File "/usr/lib/python2.6/site-packages/bkr/server/wsgi.py", line 90, in run_with_transaction_noop return func(*args, **kwargs) File "<generated code>", line 0, in _expose File "/usr/lib/python2.6/site-packages/peak/rules/core.py", line 153, in __call__ return self.body(*args, **kw) File "/usr/lib/python2.6/site-packages/turbogears/controllers.py", line 390, in <lambda> fragment, options, args, kw))) File "/usr/lib/python2.6/site-packages/turbogears/controllers.py", line 425, in _execute_func output = errorhandling.try_call(func, *args, **kw) File "/usr/lib/python2.6/site-packages/turbogears/errorhandling.py", line 77, in try_call return func(self, *args, **kw) File "<string>", line 3, in index File "/usr/lib/python2.6/site-packages/turbogears/paginate.py", line 147, in decorated output = func(*args, **kw) File "/usr/lib/python2.6/site-packages/bkr/server/controllers.py", line 288, in index title=u'Systems', *args, **kw) File "/usr/lib/python2.6/site-packages/bkr/server/controllers.py", line 517, in _systems systems = self._system_search(kw,sys_search) File "/usr/lib/python2.6/site-packages/bkr/server/controllers.py", line 396, in _system_search sys_search.append_results(cls_ref,search['value'],col,search['operation']) KeyError: 'value' Beaker 24.5 has been released. |