Merge pull request #11504 from lifupan/fix_fd_leak

agent: fix the issue of parent writer pipe fd leak
This commit is contained in:
Fupan Li 2025-07-16 18:29:24 +08:00 committed by GitHub
commit 75d23b8884
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 9 additions and 9 deletions

View File

@ -2081,8 +2081,8 @@ mod tests {
}); });
} }
#[test] #[tokio::test]
fn test_linuxcontainer_get_process() { async fn test_linuxcontainer_get_process() {
let _ = new_linux_container_and_then(|mut c: LinuxContainer| { let _ = new_linux_container_and_then(|mut c: LinuxContainer| {
c.processes.insert( c.processes.insert(
1, 1,

View File

@ -179,6 +179,11 @@ impl Process {
p.parent_stdin = Some(pstdin); p.parent_stdin = Some(pstdin);
p.stdin = Some(stdin); p.stdin = Some(stdin);
// Make sure the parent stdin writer be inserted into
// p.writes hashmap, thus the cleanup_process_stream can
// cleanup and close the parent stdin fd.
let _ = p.get_writer(StreamType::ParentStdin);
// These pipes are necessary as the stdout/stderr of the child process // These pipes are necessary as the stdout/stderr of the child process
// cannot be a socket. Otherwise, some images relying on the /dev/stdout(stderr) // cannot be a socket. Otherwise, some images relying on the /dev/stdout(stderr)
// and /proc/self/fd/1(2) will fail to boot as opening an existing socket // and /proc/self/fd/1(2) will fail to boot as opening an existing socket
@ -308,8 +313,8 @@ mod tests {
assert_eq!(max_size, actual_size); assert_eq!(max_size, actual_size);
} }
#[test] #[tokio::test]
fn test_process() { async fn test_process() {
let id = "abc123rgb"; let id = "abc123rgb";
let init = true; let init = true;
let process = Process::new( let process = Process::new(

View File

@ -2623,11 +2623,6 @@ mod tests {
}), }),
..Default::default() ..Default::default()
}, },
TestData {
has_fd: false,
result: Err(anyhow!(ERR_CANNOT_GET_WRITER)),
..Default::default()
},
]; ];
for (i, d) in tests.iter().enumerate() { for (i, d) in tests.iter().enumerate() {