man-group / man-group/mdf

Node serialization fails with Pyro >= 2.20

Open
#9 1 comment 0 reactions 0 assignees View on GitHub
bug
Dominant language
Python
Stars
183
Forks
54
PR merge metrics
No merged PRs in 30d

Description

Tests involving serializing nodes fail on the newer pyro versions:

```
Traceback (most recent call last):
File "/home/travis/build/SleepingPills/mdf/mdf/tests/test_regression.py", line 37, in test_df_differ
diffs = mdf.regression.run(date_range, [df_differ], lhs=None, rhs=None)
File "/home/travis/build/SleepingPills/mdf/mdf/regression/__init__.py", line 281, in run
rhs_modulenames=rhs_modulenames)
File "/home/travis/build/SleepingPills/mdf/mdf/regression/__init__.py", line 239, in get_contexts
lhs_ctx = lhs_server.get_remote_context(ctx)
File "/home/travis/virtualenv/python2.6/lib/python2.6/site-packages/Pyro4/core.py", line 160, in __call__
return self.__send(self.__name, args, kwargs)
File "/home/travis/virtualenv/python2.6/lib/python2.6/site-packages/Pyro4/core.py", line 290, in _pyroInvoke
compress=Pyro4.config.COMPRESSION)
File "/home/travis/virtualenv/python2.6/lib/python2.6/site-packages/Pyro4/util.py", line 159, in serializeCall
data=self.dumpsCall(obj, method, vargs, kwargs)
File "/home/travis/virtualenv/python2.6/lib/python2.6/site-packages/Pyro4/util.py", line 392, in dumpsCall
return serpent.dumps((obj, method, vargs, kwargs))
File "/home/travis/virtualenv/python2.6/lib/python2.6/site-packages/serpent.py", line 62, in dumps
return Serializer(indent, set_literals).serialize(obj)
File "/home/travis/virtualenv/python2.6/lib/python2.6/site-packages/serpent.py", line 211, in serialize
self._serialize(obj, out, 0)
File "/home/travis/virtualenv/python2.6/lib/python2.6/site-packages/serpent.py", line 240, in _serialize
getattr(self, method_name, self.ser_default_class)(obj, out, level) # dispatch
File "/home/travis/virtualenv/python2.6/lib/python2.6/site-packages/serpent.py", line 290, in ser_builtins_tuple
self._serialize(elt, out, level + 1)
File "/home/travis/virtualenv/python2.6/lib/python2.6/site-packages/serpent.py", line 240, in _serialize
getattr(self, method_name, self.ser_default_class)(obj, out, level) # dispatch
File "/home/travis/virtualenv/python2.6/lib/python2.6/site-packages/serpent.py", line 290, in ser_builtins_tuple
self._serialize(elt, out, level + 1)
File "/home/travis/virtualenv/python2.6/lib/python2.6/site-packages/serpent.py", line 240, in _serialize
getattr(self, method_name, self.ser_default_class)(obj, out, level) # dispatch
File "/home/travis/virtualenv/python2.6/lib/python2.6/site-packages/serpent.py", line 436, in ser_default_class
raise TypeError("don't know how to serialize class " + str(obj.__class__) + ". Give it vars() or an appropriate __getstate__")
TypeError: don't know how to serialize class . Give it vars() or an appropriate __getstate__
```

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with mdf/tests/test_regression.py::test_df_differ and the get_contexts entry point in mdf/regression/__init__.py. Reproduce the failure with Pyro 2.20 or newer and inspect how the MDFContext reaches the remote call. Done means the regression test and node serialization work on the affected Pyro versions.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
distributed-systems
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.