EC2109

2 minute readReference

Synopsis

ERROR EC2109: agent reports: [bad root “[path]”: a directory path component is not accessible due to permission problems]

Description

This error message indicates that the user has included in emake root a path that is not accessible by the CloudBees Build Acceleration agent. Note that the agent runs as the root user (as it must, in order to mount filesystems), so the paths used in emake root must be accessible by the root user on each cluster host. Access is not required within those paths, only up to the path itself.

Reasons

Usually this error occurs when the user has specified an emake root that is on an NFS share, but the NFS share is mounted with root squash enabled, and some component of the emake root path has restrictive permissions that allow the user herself to access the directory, but not other users. For example, imagine an NFS share mounted at /net/home with root squash enabled, with directories and permissions as follows:

|| Permissions || Owner || Path || | drwxr-xr-x | root | / | | drwxr-xr-x | root | /net | | drwxr-xr-x | root | /net/home | | drwx—— | build | /net/home/build | | drwx—— | build | /net/home/build/src |

If the user specifies /net/home/build/src as the emake root, error EC2109 will result, because the root user on the cluster host is not able to access that directory – even though the user herself can access that directory on both the emake client host and the cluster host.

Fixes

There are generally three ways to address this issue:

  • Disable root squash on the NFS mount point.

  • Add world/other read and execute permission to the directory components of the offending path (that is, chmod a+rx each component of the path).

  • Use a higher directory as emake root. For example, in the scenario described above, the user could use /net/home/build instead of /net/home/build/src, since the root user will be able to access that path sufficiently to mount a filesystem at that location.