Показать сообщение отдельно
  #5  
Старый 27.05.2022, 18:42
Pavel Gulchouck
Guest
 
Сообщений: n/a
По умолчанию .bsy файлы - кто будет вычищать?

Pavel Gulchouck написал(а) к Nil A в May 22 17:08:06 по местному времени:

Нi Nil!

24 May 22, Nil A ==> Evgeny Chevtaev:

EC>> # Remove old .bsy/.csy files (If some are left after a system crash).
EC>> It would # be wise to set this to 12h on almost any system. (Note that
EC>> binkd always # touches .bsy's/.csy's for active sessions) # #
EC>> kill-old-bsy is OFF by default. # kill-old-bsy 12h

EC>> Это разве не оно? В binkd.conf параметр имеется, значит всё давно
EC>> придумано.

NA> Точно, почти оно. Только 12 часов залипания - это по сегодняшним меркам уже народ занервничает, хоть и фидо, хоть и "любительская сеть"
NA> ;-)
NA> А можно было бы и без времени сделать, если смотреть на PID внутри.
NA> Только вопрос, все ли туда PID пишут, но хаски и бинк пишут.

Софт должен ориентироваться на стандарт (в данном случае BSO), а не на фактическое поведение другого софта. Потому что поведение софта может меняться в пределах стандарта, софта может быть много разного, и это путь к граблям.
По стандарту BSO внутри bsy пида может не быть. И это естестенно, ведь трудно атомарно создать бзишку с пидом.

Кроме того, отсутствие процесса с прочитанным пидом не означает, что бзишку можно удалять. Ведь процесс, создавший бзишку, может быть на другом сервере (или на другой виртуалке - например, в докере) с другим пространством пидов. BSO на сетевом диске, мейлер и тоссер на разных компах - не такая уж редкая конфигурация.

И кроме того, между событиями "прочитали пид из бзишки" и "удалили бзишку" могут быть другие события - например:
- мы прочитали пид из бзишки;
- процесс, установивший бзишку, успешно завершился, удалив за собой эту бзишку;
- мы проверили существование процесса с указанным pid - его нет, считаем бзишку залипшей;
- новый процесс запустился и установил свою бзищку на этот же адрес;
- мы удалили эту новую бзишку и начали что-то делать с почтой параллельно с новым процессом.

В результате могут получиться коллизии и потеря почты.
В некоторых системах вообще нельзя открывать чужую бзишку на чтение, потому что владелец в это время не сможет удалить открытый кем-то файл.

Было бы хорошо лочить бзишку на время сессии. Это можно сделать аккуратно и правильно почти на всех системах, но нужна гарантия, что так себя ведёт весь используемый софт, т.е. это получится уже не BSO, а немного другой тип outbound. В нынешних условиях вряд ли реально.

В каком-то софте вместо бзишек использовались named mutex semaphores (TheBrake! Mailer, если не ошибаюсь). Интересно, но не взлетело.

NA> Стоп, а что они туда пишут под виндой? ;-)

Lucky carrier,
Паша
aka gul@gul.kiev.ua
--- GoldED+/LNX 1.1.5-b20160827
Ответить с цитированием