Fix the socket relay error handling and log level (#535)

- Downgrades a warning to the debug level in `BidirectionalRelay`
because the shutdown syscall isn't supported for certain socket types
- Rethrows an error if we can't start a socket relay
This commit is contained in:
Dmitry Kovba authored and GitHub committed 2026-02-18 15:55:50 -08:00
1 parent cb3493b507
commit 36002eed5e
3 files changed
+10 -9

No files matched your search

@@ -24,9 +24,9 @@ import Synchronization
package final class UnixSocketRelay: Sendable {
private let port: UInt32
private let configuration: UnixSocketConfiguration
private let log: Logger?
private let vm: any VirtualMachineInstance
private let q: DispatchQueue
private let queue: DispatchQueue
private let log: Logger?
private let state: Mutex<State>
private struct State {
@@ -44,10 +44,10 @@ package final class UnixSocketRelay: Sendable {
) throws {
self.port = port
self.configuration = socket
self.state = Mutex<State>(.init())
self.vm = vm
self.queue = queue
self.log = log
self.q = queue
self.state = Mutex<State>(.init())
}
deinit {
@@ -224,7 +224,7 @@ extension UnixSocketRelay {
let relay = BidirectionalRelay(
fd1: hostFd,
fd2: guestFd,
queue: q,
queue: queue,
log: log
)
@@ -21,13 +21,13 @@ import Logging
package actor UnixSocketRelayManager {
private let vm: any VirtualMachineInstance
private var relays: [String: UnixSocketRelay]
private let q: DispatchQueue
private let queue: DispatchQueue
private let log: Logger?
init(vm: any VirtualMachineInstance, log: Logger? = nil) {
self.vm = vm
self.relays = [:]
self.q = DispatchQueue(label: "com.apple.containerization.socket-relay")
self.queue = DispatchQueue(label: "com.apple.containerization.socket-relay")
self.log = log
}
}
@@ -45,7 +45,7 @@ extension UnixSocketRelayManager {
port: port,
socket: socket,
vm: vm,
queue: q,
queue: queue,
log: log
)
@@ -54,6 +54,7 @@ extension UnixSocketRelayManager {
try await relay.start()
} catch {
relays.removeValue(forKey: socket.id)
throw error
}
}
@@ -182,7 +182,7 @@ public final class BidirectionalRelay: Sendable {
)
source.cancel()
if shutdown(destinationFd, SHUT_WR) != 0 {
log?.warning(
log?.debug(
"failed to shut down writes",
metadata: [
"errno": "\(errno)",