История изменений
Исправление firkax, (текущая версия) :
Зачем хранить локфайл в облачном хранилище? Ему самое место в tmpfs.
«pid lock» тем и хорош что использует две атомарные операции: отдельно запись и отдельно чтение, поэтому все готово к сетевым сбоям в процессе работы.
И это очень плохо, нужно чтобы была одна атомарная операция «проверить занятость и захватить если не занято». Без flock это можно через просто создание файла с O_CREAT|O_EXCL, но такой способ страдает от упавшего демона, файл он при этом не удалит (и придётся делать всю эту возню со сравнением pid-ов, которая тоже уязвима в race condition в итоге, хотя и в маловероятном сценарии), а вот лок снимется сам.
Исправление firkax, :
Зачем хранить локфайл в облачном хранилище? Ему самое место в tmpfs.
«pid lock» тем и хорош что использует две атомарные операции: отдельно запись и отдельно чтение, поэтому все готово к сетевым сбоям в процессе работы.
И это очень плохо, нужно чтобы была одна атомарная операция «проверить занятость и захватить если не занято». Без flock это можно через просто создание файла с O_CREAT|O_EXCL, но такой способ страдает от упавшего демона, файл он при этом не удалит (и придётся делать всю эту возню со сравнением pid-ов, которая тоже уязвима в race condition в итоге, хотя и в маловероятном сценарии), в вот лок снимется сам.
Исправление firkax, :
Зачем хранить локфайл в облачном хранилище? Ему самое место в tmpfs.
«pid lock» тем и хорош что использует две атомарные операции: отдельно запись и отдельно чтение, поэтому все готово к сетевым сбоям в процессе работы.
И это очень плохо, нужно чтобы была одна атомарная операция «проверить занятость и захватить если не занято». Без flock это можно через просто создание файла с O_CREAT|O_EXCL, но такой способ страдает от упавшего демона, файл он при этом не удалит (и придётся делать всю эту возню со сравнением pid-ов), в вот лок снимется сам.
Исходная версия firkax, :
Зачем хранить локфайл в облачном хранилище? Ему самое место в tmpfs.