]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
mgr/PyModule: put mgr_module_path first in sys.path 26777/head
authorTim Serong <tserong@suse.com>
Mon, 25 Feb 2019 03:47:12 +0000 (14:47 +1100)
committerPrashant D <pdhange@redhat.com>
Wed, 6 Mar 2019 04:28:18 +0000 (23:28 -0500)
commit76e92cecf420321aabd11b7bedbaac83ef8ecbc2
tree5985c692e865151854ea4ed54281f550ef95e104
parentc605b54426d432f903c1c5600c07180edb10f26f
mgr/PyModule: put mgr_module_path first in sys.path

If the various python site packages appear first in sys.path, and there
happens to be a package whose name is the same as an mgr module, mgr will
try to load that thing instead of the expected mgr module.  This results
in a very terse couple of errors:

  mgr[py] Class not found in module 'deepsea'
  mgr[py] Error loading module 'deepsea': (22) Invalid argument

Before this commit, sys.path on my SLE 11 SP1 dev system is:

  /usr/lib/python36.zip
  /usr/lib64/python3.6
  /usr/lib64/python3.6
  /usr/lib64/python3.6/lib-dynload
  /usr/lib64/python3.6/site-packages
  /usr/lib/python3.6/site-packages
  /usr/local/lib64/python3.6/site-packages
  /usr/local/lib/python3.6/site-packages
  /usr/lib64/ceph/mgr

After this commit, /usr/share/ceph/mgr comes before python's site-packages,
and everything works properly:

  /usr/lib/python36.zip
  /usr/lib64/python3.6
  /usr/lib64/python3.6
  /usr/lib64/python3.6/lib-dynload
  /usr/share/ceph/mgr
  /usr/lib64/python3.6/site-packages
  /usr/lib/python3.6/site-packages
  /usr/local/lib64/python3.6/site-packages
  /usr/local/lib/python3.6/site-packages

(If you're interested in seeing what's in sys.path, turn "debug mgr" up
to at least 10, then grep the logs for "Computed sys.path")

Fixes: https://tracker.ceph.com/issues/38469
Signed-off-by: Tim Serong <tserong@suse.com>
(cherry picked from commit 7e34b27676e12c1333c5f34ef1b561c8713cddbd)

Conflicts:
src/mgr/PyModule.cc : Resolved in load
src/mgr/PyModule.cc