mirror of
https://github.com/apple/container.git
synced 2026-10-13 17:49:16 +00:00
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:
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)",
|
||||
|
||||
Reference in new issue
Block a user