Benjamin Teke created YARN-11690:
------------------------------------
Summary: Update container executor to use CGROUP2_SUPER_MAGIC in
cgroup 2 scenarios
Key: YARN-11690
URL: https://issues.apache.org/jira/browse/YARN-11690
Project: Hadoop YARN
Issue Type: Sub-task
Components: container-executor
Reporter: Benjamin Teke
Assignee: Benjamin Teke
The container executor function {{write_pid_to_cgroup_as_root}} writes the PID
of the newly launched container to the correct cgroup.procs file. However it
checks if the file is mounted on a cgroup filesystem, and does that check using
the magic number, which differs for v1 and v2. This should handle v1 or v2
filesystems as well.
{code:java}
/**
* Write the pid of the current process to the cgroup file.
* cgroup_file: Path to cgroup file where pid needs to be written to.
*/
static int write_pid_to_cgroup_as_root(const char* cgroup_file, pid_t pid) {
int rc = 0;
uid_t user = geteuid();
gid_t group = getegid();
if (change_effective_user(0, 0) != 0) {
rc = -1;
goto cleanup;
}
// statfs
struct statfs buf;
if (statfs(cgroup_file, &buf) == -1) {
fprintf(LOGFILE, "Can't statfs file %s as node manager - %s\n", cgroup_file,
strerror(errno));
rc = -1;
goto cleanup;
} else if (buf.f_type != CGROUP_SUPER_MAGIC) {
fprintf(LOGFILE, "Pid file %s is not located on cgroup filesystem\n",
cgroup_file);
rc = -1;
goto cleanup;
}
{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]