On MacOS, I'm seeing that if I open a writer on a FIFO, closing the reader won't unblock a pending Read() and a Write() from the writer will be received by the reader (After we close the reader):
=== RUN TestFifoCloseWhileReadingAndWriting
fifo_test.go:437:
Error Trace: fifo_test.go:437
Error: An error is expected but got nil.
Test: TestFifoCloseWhileReadingAndWriting
fifo_test.go:441: Read should not succeed
If there are no writers for the FIFO, closing the reader works as expected on both Linux and MacOS, i.e. the pending Read() returns the expected error (ErrReadClosed).
I'm seeing different behaviours on MacOS and Linux, when closing a reader.
When running
make test
with https://github.com/containerd/fifo/pull/42 applied, theTestFifoCloseWhileReadingAndWriting
fails on MacOS but passes on Linux.On MacOS, I'm seeing that if I open a writer on a FIFO, closing the reader won't unblock a pending
Read()
and aWrite()
from the writer will be received by the reader (After we close the reader):If there are no writers for the FIFO, closing the reader works as expected on both Linux and MacOS, i.e. the pending
Read()
returns the expected error (ErrReadClosed
).