Project

General

Profile

Bug #46852

pybind: cannot pickle the rados/rbd `Error` class

Added by Michael Fritch about 1 month ago. Updated about 1 month ago.

Status:
Fix Under Review
Priority:
Normal
Category:
-
Target version:
-
% Done:

0%

Source:
Development
Tags:
Backport:
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature:

Description

the Error class does not have a `message` attribute:

Traceback (most recent call last):
  File "/usr/share/ceph/mgr/cephadm/module.py", line 774, in process
    p.evaluate()
  File "/usr/share/ceph/mgr/cephadm/module.py", line 92, in evaluate
    self.finalize(None)
  File "/usr/share/ceph/mgr/orchestrator/_interface.py", line 559, in finalize
    self._first_promise._finalize(result)
  File "/usr/share/ceph/mgr/orchestrator/_interface.py", line 301, in _finalize
    self.fail(e)
  File "/usr/share/ceph/mgr/orchestrator/_interface.py", line 553, in fail
    super(Completion, self).fail(e)
  File "/usr/share/ceph/mgr/orchestrator/_interface.py", line 347, in fail
    self._exception = e
  File "/usr/share/ceph/mgr/orchestrator/_interface.py", line 195, in _exception
    self._serialized_exception_ = pickle.dumps(e) if e is not None else None
  File "rados.pyx", line 374, in rados.Error.__reduce__
AttributeError: 'ObjectNotFound' object has no attribute 'message'

which can cause the orchestrator to fail in mysterious ways:

$ ceph orch reconfig nfs.foo
Error ENOENT: This Orchestrator does not support `orch`

History

#2 Updated by Sebastian Wagner about 1 month ago

  • Status changed from New to Fix Under Review
  • Assignee set to Michael Fritch
  • Pull request ID set to 36506

Also available in: Atom PDF