Description
We recently resolved - #4105 - a problem where a systemd configuration entry (PrivateTmp=true) was found to be the culprit in making idle detection fail.
I'm now encountering a different problem, which appears to require that we set PrivateTmp=true again, to work round a different problem. Obviously these two needs are incompatible.
The new problem arises at GPUGrid, where they are beta-testing a new app which requires the Wrapper app to perform a software installation. The wrapper command is
<task>
<application>/usr/bin/flock</application>
<command_line>$PROJECT_DIR/miniconda.lock -c "/bin/bash ./miniconda-installer.sh -b -u -p $PROJECT_DIR/miniconda &&
$PROJECT_DIR/miniconda/bin/conda install -m -y -p gpugridpy --file requirements.txt "
</command_line>
<setenv>PATH=/usr/bin:/bin</setenv>
<time_limit>1800</time_limit>
<weight>10</weight>
</task>
If PrivateTmp=false
(the new default), this command fails with
21:48:18 (21729): wrapper: running /usr/bin/flock (/var/lib/boinc-client/projects/www.gpugrid.net/miniconda.lock -c "/bin/bash ./miniconda-installer.sh -b -u -p /var/lib/boinc-client/projects/www.gpugrid.net/miniconda &&
/var/lib/boinc-client/projects/www.gpugrid.net/miniconda/bin/conda install -m -y -p gpugridpy --file requirements.txt ")
[21755] INTERNAL ERROR: cannot create temporary directory!
[21759] INTERNAL ERROR: cannot create temporary directory!
21:48:19 (21729): /usr/bin/flock exited; CPU time 0.118700
21:48:19 (21729): app exit status: 0x1
21:48:19 (21729): called boinc_finish(195)
If PrivateTmp=true
, the wrapper task succeeds, and the full BOINC job carries on to a successful conclusion.
Could the systemd crew - @BryanQuigley, @Germano0, @smoe - please put their thinking caps on and suggest how this might be resolved? I'm assuming that the basic problem in the 'false' case is that the system /tmp/ structure is read-only to BOINC?
https://man7.org/linux/man-pages/man5/systemd.exec.5.html has details which may be relevant:
PrivateTmp=
Takes a boolean argument. If true, sets up a new file system
namespace for the executed processes and mounts private /tmp/ and
/var/tmp/ directories inside it that are not shared by processes
outside of the namespace. This is useful to secure access to
temporary files of the process, but makes sharing between
processes via /tmp/ or /var/tmp/ impossible.
Metadata
Metadata
Assignees
Type
Projects
Status