Skip to content

WIP: Fix NEO ipv6 address usage with WCFS

Hello,

I encountered a problem when reading from the root object of a NEO storage which has been opened by using an ipv6 address:

>>> from wendelin.lib.zodb import dbopen
>>> root = dbopen("neo://cluster-name@[::]:2051")
>>> # "abc" points to a ZBigArray
>>> root["abc"][0]

I inserted a dirty print in the first line of wcfs join function:

print(zurl)

which returns:

neo://:::2051/cluster-name

while I would expect

neo://[::]:2051/cluster-name


Following the wc code [1] I understood that the conversion of the URL happens in zstor_2zurl. I think zstor_2zurl needs explicit changes to add square brackets for ivp6 hosts.

My initial draft only adjusts the NEO part, maybe we also need to change the ZEO part?

WIP: Adding tests, running tests.

Best, Levin

/cc @kirr


[1] root["abc"][0] leads to __getitem__ which leads to _fileh property which leads to fileh_open, which leads to pywconnOf which finally calls zstor_2zurl.

Merge request reports