Bug 1195053
Summary: | glusterd 3.6.2 failing on FreeBSD; ImportError: cannot import name ENODATA | |||
---|---|---|---|---|
Product: | [Community] GlusterFS | Reporter: | Craig Butler <craig001> | |
Component: | geo-replication | Assignee: | bugs <bugs> | |
Status: | CLOSED NEXTRELEASE | QA Contact: | ||
Severity: | unspecified | Docs Contact: | ||
Priority: | unspecified | |||
Version: | 3.6.2 | CC: | avishwan, bugs, cww, vshankar | |
Target Milestone: | --- | Keywords: | Triaged | |
Target Release: | --- | |||
Hardware: | Unspecified | |||
OS: | FreeBSD | |||
Whiteboard: | ||||
Fixed In Version: | Doc Type: | Bug Fix | ||
Doc Text: | Story Points: | --- | ||
Clone Of: | ||||
: | 1302674 (view as bug list) | Environment: | ||
Last Closed: | 2016-08-19 11:36:32 UTC | Type: | Bug | |
Regression: | --- | Mount Type: | --- | |
Documentation: | --- | CRM: | ||
Verified Versions: | Category: | --- | ||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
Cloudforms Team: | --- | Target Upstream Version: | ||
Embargoed: | ||||
Bug Depends On: | ||||
Bug Blocks: | 1302674 |
Description
Craig Butler
2015-02-22 14:38:49 UTC
From the log above: Traceback (most recent call last): File "/usr/local/libexec/glusterfs/python/syncdaemon/gsyncd.py", line 33, in <module> import resource File "/usr/local/libexec/glusterfs/python/syncdaemon/resource.py", line 26, in <module> from errno import EEXIST, ENOENT, ENODATA, ENOTDIR, ELOOP ImportError: cannot import name ENODATA gsyncd is part of geo-replication, moving the bug to the right component. Only users that install geo-replication on FreeBSD should be affected. In case geo-replication is an optional component on FreeBSD, uninstalling it should prevent this error. The larger issue is not just errno compatibility, what i saw was that it is rather hard to support FreeBSD for geo-replication. Due to some hard met dependencies - geo-replication oddly uses libcxattr.py its own Xattr wrapper implementation around libc {getxattr,setxattr,listxattr} calls All geo-replication is highly dependent on that so for a cross platform based support we need to fix this libcxattr.py For example ~~~ >>> import sys >>> sys.platform 'freebsd10' >>> from ctypes import CDLL >>> from ctypes.util import find_library >>> libc = CDLL(find_library("libc")) >>> getattr(libc, "lgetxattr") Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python2.7/ctypes/__init__.py", line 378, in __getattr__ func = self.__getitem__(name) File "/usr/local/lib/python2.7/ctypes/__init__.py", line 383, in __getitem__ func = self._FuncPtr((name_or_ordinal, self)) AttributeError: Undefined symbol "lgetxattr" >>> >>> getattr(libc, "extattr_get_file") <_FuncPtr object at 0x801f41390> >>> ~~~ So in general geo-replication is not going to work on FreeBSD for the time being with some good changes to make it more portable. Using our libcxattr.py would have had some clear advantages than using more portable python's own 'xattr' implementation. But it isn't too late to ponder upon what it takes to use just the standard 'xattr' implementation. NOTE: OSX implements similar semantics as GNU platforms so geo-replication might just work without any further compatibility issues. GlusterFS-3.6 is nearing its End-Of-Life, only important security bugs still make a chance on getting fixed. Closing this bug since we have cloned bug in mainline BZ 1302674 |