-
Notifications
You must be signed in to change notification settings - Fork 149
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
XrdApp: Add XrdClProxyPlugin implementation #487
Conversation
Hi Elvin, Almost there. Plugins generally cannot exist as pure ".so" files. We require that they be versioned. Take a look in XrdServer.cmake or (simpler) XrdSec.cmake to see how versioned plugin libraries are created. In the end you'll have something like libXrdClProxyPlugin-4.so where the "-4" is the version number. OK, this is what we do for the server. Michal, other than the security plugins which are auto-handled, do we do the same for other client-side plugins? Andy |
Hi Andy, The version check is done properly for the XrdClProxyPlugin: When the plugin version doesn't match it is rejected:
If the plugin version does match it is loaded:
To be honest the XrdClProxyPlugin is the first plugin that will be included with xrootd core, so there is no convention yet. Hence, it's up to you whether we should follow the "-4" naming convention, or not ;-) Cheers, |
Hi Michal,
There were two reasons that we adopted the “-n” convention. One was so that we could supports more than one version of a plugin at the same time (i.e. filenames would not conflict and could exist in parallel); the plugin manager automatically loads a compatible version, and b) to make it harder for people to link against the plugin (strictly forbidden by EPEL). As for the latter, I wanted to actual create non-“so” files for plugins since the dlsym doesn’t care what the file name is (e.g. <libname>.pi) but apparently cmake couldn’t handle that kind of thing, sigh. So, for consistency’s sake with server-side plugins it would probably make sense to add the “-n” suffix. Anyway, give it a try and see what happened with the “pinloader”.
Andy
From: simonmichal
Sent: Tuesday, March 28, 2017 6:39 AM
To: xrootd/xrootd
Cc: Andrew Hanushevsky ; Comment
Subject: Re: [xrootd/xrootd] XrdApp: Add XrdClProxyPlugin implementation (#487)
Hi Andy,
The version check is done properly for the XrdClProxyPlugin:
When the plugin version doesn't match it is rejected:
[simonm@idefix XrdCl]$ strings -a $XRD_PLUGIN | grep "@v"
@v:XrdClGetPlugIn v3.9.9
[simonm@idefix XrdCl]$ strings -a libXrdCl.so | grep "@v"
@v:client v4.9.9
[simonm@idefix XrdCl]$ ./xrdcp -f -d 1 root://esvm000//tmp/file1.dat /tmp/dump
[2017-03-28 15:14:19.234129 +0200][Debug ][Utility ] Unable to process user config file: [ERROR] OS Error: No such file or directory
[2017-03-28 15:14:19.234302 +0200][Info ][Utility ] Env: Importing from shell XRD_PLUGIN=/home/simonm/test/xrootd-3.9.9/build/src/libXrdClProxyPlugin.so as PlugIn
[2017-03-28 15:14:19.234335 +0200][Debug ][PlugInMgr ] Initializing plug-in manager...
[2017-03-28 15:14:19.234387 +0200][Debug ][PlugInMgr ] Loading default plug-in from /home/simonm/test/xrootd-3.9.9/build/src/libXrdClProxyPlugin.so...
[2017-03-28 15:14:19.234611 +0200][Debug ][PlugInMgr ] Error while loading /home/simonm/test/xrootd-3.9.9/build/src/libXrdClProxyPlugin.so: Unable to load client plugin /home/simonm/test/xrootd-3.9.9/build/src/libXrdClProxyPlugin.so
[2017-03-28 15:14:19.234625 +0200][Debug ][PlugInMgr ] Failed to load default plug-in from /home/simonm/test/xrootd-3.9.9/build/src/libXrdClProxyPlugin.so
[3.015kB/3.015kB][100%][==================================================][3.015kB/s]
If the plugin version does match it is loaded:
[simonm@idefix XrdCl]$ strings -a $XRD_PLUGIN | grep "@v"
@v:XrdClGetPlugIn v4.9.9
[simonm@idefix XrdCl]$ strings -a libXrdCl.so | grep "@v"
@v:client v4.9.9
[simonm@idefix XrdCl]$ ./xrdcp -f -d 1 root://esvm000//tmp/file1.dat /tmp/dump
[2017-03-28 15:15:05.885847 +0200][Debug ][Utility ] Unable to process user config file: [ERROR] OS Error: No such file or directory
[2017-03-28 15:15:05.885951 +0200][Info ][Utility ] Env: Importing from shell XRD_PLUGIN=/home/simonm/test/xrootd-4.9.9/build/src/libXrdClProxyPlugin.so as PlugIn
[2017-03-28 15:15:05.885971 +0200][Debug ][PlugInMgr ] Initializing plug-in manager...
[2017-03-28 15:15:05.885992 +0200][Debug ][PlugInMgr ] Loading default plug-in from /home/simonm/test/xrootd-4.9.9/build/src/libXrdClProxyPlugin.so...
[3.015kB/3.015kB][100%][==================================================][3.015kB/s]
To be honest the XrdClProxyPlugin is the first plugin that will be included with xrootd core, so there is no convention yet. Hence, it's up to you whether we should follow the "-4" naming convention, or not ;-)
Cheers,
Michal
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good!
I've added as a .so library since it's not a shared library but a module which is loaded dynamically.