Как можно смоделировать неотвечающий файловый дескриптор?

Как можно смоделировать неотвечающий файловый дескриптор?

У нас есть приложение, которое пишет в файл журнала. В среде prod каталог файла журнала отображается на NAS:

192.168.1.10:/storage/app/log 2554360832 11844608 2412762112   1% /usr/local/app/log

Мне сообщили, что несколько раз NAS выходил из строя, что приводило к бесконечной блокировке нашего приложения при попытке записи в файл журнала.

Я хотел бы попробовать воспроизвести это, чтобы убедиться, что это именно то, что произошло, а также иметь возможность протестировать исправление. Но у нас нет NAS в нашей среде разработки.

Есть ли способ сделать так, чтобы файловый дескриптор перестал отвечать, и попытка записи в него была бы заблокирована на неопределенный срок?

решение1

Создайте именованный канал, но не открывайте его для чтения:

$ mkfifo /tmp/test-fifo
$ echo a > /tmp/test-fifo

решение2

Откройте один из них, оставив на другом конце пустое место.

  • Именованный канал.
  • Анонимная трубка.
  • Интернет-розетка.
  • ...

Вы также можете запустить службу локально. Вы даже можете запустить их в docker (или поверх контейнеризации или виртуализации). Это предпочтительно, так как вы не будете знать, какие различия существуют в других вариантах.

Связанный контент