In this case it seems the uploader field is None. The server has no problem with that, but the lab controller proxy code isn't setting allow_none=True. It gets None back from the server and tries to marshal it for the client and then blows up. We could probably just set allow_none=True for the proxy: --- a/LabController/proxy/src/bkr/labcontroller/main.py +++ b/LabController/proxy/src/bkr/labcontroller/main.py @@ -127,7 +127,7 @@ def main_loop(conf=None, foreground=False): stop_on_exception=False) login.daemon = True login.start() - server = ForkingXMLRPCServer(("", 8000)) + server = ForkingXMLRPCServer(("", 8000), allow_none=True) server.register_instance(proxy) try: server.serve_forever() but will this break old clients which can't understand XML-RPC nil?
*** Bug 834389 has been marked as a duplicate of this bug. ***
I think we can bite the bullet and set allow_none=True. It works back to Python 2.4 (RHEL5).
On Gerrit: http://gerrit.beaker-project.org/1214 Verified that this works correctly for RHEL5 and RHEL6 clients.
>>> server.task_to_dict("/CoreOS/abrt/Sanity/cli-sanity") {'excluded_osmajor': [], 'creation_date': '2010-05-28 08:59:23', 'bugzillas': [], 'runfor': ['abrt'], 'path': '/mnt/tests/CoreOS/abrt/Sanity/cli-sanity', 'owner': None, 'rpm': 'rh-tests-abrt-Sanity-cli-sanity-1.0-0.noarch.rpm', 'id': 1232, 'update_date': '2011-09-06 06:24:14', 'priority': None, 'version': '1.0-0', 'description': 'does sanity on abrt-cli', 'repo': 'None', 'uploader': None, 'oldrpm': None, 'destructive': False, 'types': ['Sanity'], 'excluded_arch': [], 'name': '/CoreOS/abrt/Sanity/cli-sanity', 'license': 'GPLv3', 'nda': False, 'required': ['abrt', 'abrt-cli'], 'max_time': 1200, 'valid': True}
Beaker 0.9.1 has been released.