-
Notifications
You must be signed in to change notification settings - Fork 146
Xrootd https remote #4822
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
base: master
Are you sure you want to change the base?
Xrootd https remote #4822
Conversation
- Fix http.exthandler path prefix (use /ssi to match client URL) - Ensure config generation and server startup use same working directory - Add better error handling and debugging output to startup scripts - Remove suppression of openssl errors to aid debugging Co-Authored-By: Claude Opus 4.5 <[email protected]>
The spack-installed OpenSSL has a corrupted config file path. Work around this by setting OPENSSL_CONF=/dev/null when generating the self-signed certificate, since -subj provides all necessary information. Co-Authored-By: Claude Opus 4.5 <[email protected]>
Use direct exit code check with 'if command; then' instead of checking $? indirectly, as recommended by shellcheck. Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Generate unique ports based on MD5 hash of build directory to avoid conflicts when multiple CI jobs run in parallel on the same machine - Pass XRD and HTTP ports as arguments to generateXRootDHttpConfig.sh - Set XRootDHttpsHost environment variable in tests with correct port - Improve start script to check for daemon/nobody user availability when running as root, and show log on startup failure - Fix shellcheck SC2181 by using direct exit code check Co-Authored-By: Claude Opus 4.5 <[email protected]>
XRootD requires SSL keys to have restricted permissions (600), but when running as root with -R to switch to daemon/nobody user, that user needs read access to the key. - Set key to 600 in config script (XRootD requirement for non-root) - Change ownership of cert directory to target user in start script when running as root with user switching Co-Authored-By: Claude Opus 4.5 <[email protected]>
When XRootD loads plugins, it doesn't use RTLD_GLOBAL, so the XrdSsiProviderServer symbol from the SSI plugin isn't visible via dlopen(NULL). Fix by: - Pass SSI library path as 'ssilib=' parameter to HTTP handler - Use RTLD_NOLOAD to get handle to already-loaded library - Fall back to loading the library if not pre-loaded This allows the HTTP handler to find the SSI provider symbol regardless of how XRootD loads its plugins. Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Rename XrootdHttpsRemote to XrootdHttpRemote to reflect support for both HTTP and HTTPS protocols - Add m_UseHttps flag (default true) to configure protocol at runtime - Add DoXRootDHttp environment variable for plain HTTP mode in BP5Reader - HTTP mode is needed for NERSC Spin deployment where Spin Ingress terminates TLS and forwards plain HTTP to containers Docker files for Spin deployment (scripts/docker/spin-xrootd/): - Dockerfile: Builds x86_64 image with ADIOS2, XRootD, CURL, and HTTP-to-SSI bridge handler - xrootd-http.cfg: XRootD config for HTTP mode on port 8080 - docker-entrypoint.sh: Container startup script - build.sh: Build script for cross-platform builds on ARM Macs Co-Authored-By: Claude Opus 4.5 <[email protected]>
cae889f to
626cd7b
Compare
- Set ownership of SSL certs to xrootd user (194:194) so non-root container can read the private key - Set ownership of /var/spool/xrootd, /run/xrootd, /var/log/xrootd, and /data directories for xrootd user - Required for NERSC Spin deployment with security policies requiring non-root containers with dropped capabilities Co-Authored-By: Claude Opus 4.5 <[email protected]>
626cd7b to
48c57ee
Compare
|
The docker stuff here will need to change after this is merged and we've can build ADIOS from an official source, but including it in this PR because it was necessary for testing. |
|
@eisenhauer is this intended to run in the CI? |
Clarifying. The docker scripts are not for CI, but just to help build what we would need to have an ADIOS/XRootD server in a docker image for deployment to environments like NERSC Spin. The new transports would be built and tested in CI if we had a build that had both xrootd and libcurl. I haven't looked to see if we do. (And actually I guess this would be like the other situation where we might have to add CURL to the spack after this is integrated?) |
|
sounds good! I suggest to make these scripts also podman compatible (so they can build without root) |
No description provided.