diff options
author | Nicolas Lacasse <nlacasse@google.com> | 2018-10-17 16:17:35 -0700 |
---|---|---|
committer | Shentubot <shentubot@google.com> | 2018-10-17 16:18:39 -0700 |
commit | e0bb94201f1edb6ce649192fe4a62e1781940b50 (patch) | |
tree | 630a0ba1f14c91e24894904d0c6313dc7f9be93e | |
parent | b2a88ff4713325fca736f6a3bf200be02d2d72a7 (diff) |
Close the gofer socket gracefully in boot:boot_test.
We were closing the FD directly. If the test then created a new socket pair
with the same FD, in-flight RPCs would get directed to the new socket and break
the test.
Instead, we should use unet.Socket.Close(), which allows any in-flight RPCs to
finish.
PiperOrigin-RevId: 217608491
Change-Id: I8c5a76638899ba30f33ca976e6fac967fa0aadbf
-rw-r--r-- | runsc/boot/loader_test.go | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/runsc/boot/loader_test.go b/runsc/boot/loader_test.go index 7d35dcae2..41ff3681b 100644 --- a/runsc/boot/loader_test.go +++ b/runsc/boot/loader_test.go @@ -84,8 +84,13 @@ func startGofer(root string) (int, func(), error) { log.Infof("Gofer is stopping. FD: %d, err: %v\n", goferEnd, err) } }() - // Closing the gofer FD will stop the gofer and exit goroutine above. - return sandboxEnd, func() { syscall.Close(goferEnd) }, nil + // Closing the gofer socket will stop the gofer and exit goroutine above. + cleanup := func() { + if err := socket.Close(); err != nil { + log.Warningf("Error closing gofer socket: %v", err) + } + } + return sandboxEnd, cleanup, nil } func createLoader() (*Loader, func(), error) { |