= Сообщение: 1736 из 1947 ========================================= RU.BINKD = От : Pavel Gulchouck 2:463/68 27 May 22 17:08:06 Кому : Nil A 27 May 22 17:08:06 Тема : .bsy файлы - кто будет вычищать? FGHI : area://RU.BINKD?msgid=2:463/68+6290dfa4 На : area://RU.BINKD?msgid=2:5015/46+628c5e44 = Кодировка сообщения определена как: CP866 ================================== Ответ: area://RU.BINKD?msgid=2:5015/46+629116a1 ============================================================================== Hi 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, если не ошибаюсь). Интересно, но не взлетело.