There is no way to programatically distinguish popen from fork in the handlers. The new client never aborts the connections in the parent, just kills the problematic threads and takes all the locks, so that the child ends up in the clean state. After the fork the parent just restarts the poller thread and continues with the old connections and sessions still valid, and the child goes through recovery on the on-demand basis. This behavior allows for all the file and filesystem handles (XrdCl::File and XrdCl::Filesystem) to stay valid and usable in both the child and the parent.

In the old client, you can enable/disable fork handlers from C++ if no envvars are set. Perhaps that's the way ATLAS should go.


Reply to this email directly or view it on GitHub.



Use REPLY-ALL to reply to list

To unsubscribe from the XROOTD-DEV list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-DEV&A=1