#676 messaging plugins fail on DateTime objects
Closed: Fixed Opened by mikem.

xmlrpc DateTime objects can wind up in task arguments, which can be passed to callbacks. These values are not json serializable, which causes some of our hub plugins to error.


Example traceback:

raceback (most recent call last):
  File "/usr/lib/python2.6/site-packages/koji/plugin.py", line 191, in run_callbacks
    func(cbtype, *cb_args, **cb_kwargs)
  File "/usr/lib/koji-hub-plugins/protonmsg.py", line 164, in prep_task_state_change
    queue_msg(address, props, kws)
  File "/usr/lib/koji-hub-plugins/protonmsg.py", line 138, in queue_msg
    body = json.dumps(data)
  File "/usr/lib64/python2.6/json/__init__.py", line 230, in dumps
    return _default_encoder.encode(obj)
  File "/usr/lib64/python2.6/json/encoder.py", line 367, in encode
    chunks = list(self.iterencode(o))
  File "/usr/lib64/python2.6/json/encoder.py", line 309, in _iterencode
    for chunk in self._iterencode_dict(o, markers):
  File "/usr/lib64/python2.6/json/encoder.py", line 275, in _iterencode_dict
    for chunk in self._iterencode(value, markers):
  File "/usr/lib64/python2.6/json/encoder.py", line 309, in _iterencode
    for chunk in self._iterencode_dict(o, markers):
  File "/usr/lib64/python2.6/json/encoder.py", line 275, in _iterencode_dict
    for chunk in self._iterencode(value, markers):
  File "/usr/lib64/python2.6/json/encoder.py", line 306, in _iterencode
    for chunk in self._iterencode_list(o, markers):
  File "/usr/lib64/python2.6/json/encoder.py", line 204, in _iterencode_list
    for chunk in self._iterencode(value, markers):
  File "/usr/lib64/python2.6/json/encoder.py", line 309, in _iterencode
    for chunk in self._iterencode_dict(o, markers):
  File "/usr/lib64/python2.6/json/encoder.py", line 275, in _iterencode_dict
    for chunk in self._iterencode(value, markers):
  File "/usr/lib64/python2.6/json/encoder.py", line 317, in _iterencode
    for chunk in self._iterencode_default(o, markers):
  File "/usr/lib64/python2.6/json/encoder.py", line 323, in _iterencode_default
    newobj = self.default(o)
  File "/usr/lib64/python2.6/json/encoder.py", line 344, in default
    raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <DateTime '20160528T05:11:40' at 7f7c2256fcb0> is not JSON serializable

pr forthcoming...

I can replicate this locally by creating a wrapperRPM task.

PR #677 appears to fix the issue

Metadata Update from @julian8628:
- Issue set to the milestone: 1.15

Commit c496bf99 fixes this issue

This issue has been migrated to Fedora Forge:
https://forge.fedoraproject.org/koji/koji/issues/676

Please continue any further discussion there.

Metadata