zeromq / pyre

Python port of Zyre
GNU Lesser General Public License v3.0
120 stars 52 forks source link

Incompatibility between Pyre and Zyre #123

Open avarf opened 6 years ago

avarf commented 6 years ago

I am working on a project that I need to have a Pyre node and many Zyre nodes in a group. I created the nodes and tested Pyre node to Pyre node and also Zyre node to Zyre node and they are working fine but there is an incompatibility between Pyre and Zyre. As soon as the Zyre node joins the group all the Pyre nodes in the group facing an error and they die. The error is:

Exception in thread Thread-1: Traceback (most recent call last): File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner self.run() File "/usr/lib/python3.5/threading.py", line 862, in run self._target(*self._args, *self._kwargs) File "/home/ali/.local/lib/python3.5/site-packages/pyre/zactor.py", line 57, in run self.shim_handler(self.shim_args, **self.shim_kwargs) File "/home/ali/.local/lib/python3.5/site-packages/pyre/pyre_node.py", line 53, in init self.run() File "/home/ali/.local/lib/python3.5/site-packages/pyre/pyre_node.py", line 519, in run self.recv_beacon() File "/home/ali/.local/lib/python3.5/site-packages/pyre/pyre_node.py", line 454, in recv_beacon beacon = struct.unpack('cccb16sH', frame) struct.error: unpack requires a bytes object of length 22

I tried to find a solution for this but I couldn't find anything online. Does anybody have any idea how I can solve this?

sphaero commented 6 years ago

Yes this might be the case. Pyre hasn't been keeping up with Zyre. Either you only use Pyre, or you use Zyre with its included python binding which I would recommend. The error you get is from difference in the zbeacon(broadcast discovery) frame. It's not hard to fix.

bluca commented 6 years ago

The change in the beacon should only appear when building zyre with draft apis and using the new version of the protcol (which supports crypto), are there other differences?

sphaero commented 6 years ago

I think this issue is a duplicate of #92. Pyre has been behind Zyre development. I switched to using the Zyre python bindings. What would be best is to have a unittest which uses a Zyre node.