Ticket #6054 (closed defect: fixed)

Opened 5 months ago

Last modified 4 months ago

[0.12][PATCH] cannot marshal <class 'trac.util.text.Empty'> objects

Reported by: scratcher Assigned to: osimons
Priority: normal Component: XmlRpcPlugin
Severity: blocker Keywords: patch
Cc: Trac Release: 0.12

Description (Last modified by stp)

NULL values in database (sqlite) cause error in XmlRpcPlugin:

2009-10-28 11:47:15,809 Trac[web_ui] ERROR: cannot marshal <class 'trac.util.text.Empty'> objects
2009-10-28 11:47:15,809 Trac[web_ui] ERROR: Traceback (most recent call last):
  File "build\bdist.win32\egg\tracrpc\web_ui.py", line 185, in process_xml_request
    self._send_response(req, xmlrpclib.dumps(result, methodresponse=True), content_type)
  File "C:\Python25\lib\xmlrpclib.py", line 1080, in dumps
    data = m.dumps(params)
  File "C:\Python25\lib\xmlrpclib.py", line 623, in dumps
    dump(v, write)
  File "C:\Python25\lib\xmlrpclib.py", line 635, in __dump
    f(self, value, write)
  File "C:\Python25\lib\xmlrpclib.py", line 695, in dump_array
    dump(v, write)
  File "C:\Python25\lib\xmlrpclib.py", line 635, in __dump
    f(self, value, write)
  File "C:\Python25\lib\xmlrpclib.py", line 716, in dump_struct
    dump(v, write)
  File "C:\Python25\lib\xmlrpclib.py", line 633, in __dump
    raise TypeError, "cannot marshal %s objects" % type(value)
TypeError: cannot marshal <class 'trac.util.text.Empty'> objects

The reason is that NULL values now returned as trac.util.text.Empty object, not None. Attached patch solves the problem.

Attachments

empty_values.patch (0.9 kB) - added by scratcher on 10/28/09 10:09:49.
patch to deal with trac.util.text.Empty objects

Change History

10/28/09 10:09:49 changed by scratcher

  • attachment empty_values.patch added.

patch to deal with trac.util.text.Empty objects

11/24/09 06:11:55 changed by stp

  • description changed.

11/24/09 11:38:54 changed by osimons

  • status changed from new to closed.
  • resolution set to fixed.

(In [7167]) XmlRpcPlugin: Compat code to handle Trac 0.12 Empty objects as None type. Closes #6054.

11/26/09 15:05:04 changed by cboos

  • status changed from closed to reopened.
  • resolution deleted.

Actually, the empty "constant" should be used instead of the Empty class.

Initially Remy made that class hidden, I changed that as I needed to access it from the db layer, but now that I see it's getting used, I should probably remove it again and find another way to access that from the db layer (type(empty)?).

So the fix should rather be something like:

    ...
elif res is None or res is empty:
    ...

11/26/09 15:30:48 changed by osimons

  • status changed from reopened to closed.
  • resolution set to fixed.

(In [7194]) XmlRpcPlugin: 0.12dev compat code revisited - use empty (constant) instead of Empty (class) according to Christian. Closes #6054 again.

11/26/09 20:21:35 changed by cboos

Thanks for the modification, I now made Empty hidden again in [T8860].


Add/Change #6054 ([0.12][PATCH] cannot marshal <class 'trac.util.text.Empty'> objects)




Change Properties
Action