containerd / containerd/fifo

[Darwin] Read() does not always return when closing the reader

Open
#43 0 comments 1 reaction 0 assignees View on GitHub
Dominant language
Go
Stars
87
Forks
31
PR merge metrics
No merged PRs in 30d

Description

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, the `TestFifoCloseWhileReadingAndWriting` 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 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`).

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.