Похоже, что эти долбогрызы в Valuehost вырубают сервера так же, как юзеры - рабочие машины.
Т.е., пинком.Бороться с их поведением и поведением их flock-а (который остается locked, если машину вырубают с пинка) мне категорически надоело.
А те вещи, которые подвергаются их вандализму, переписывать на базу ну никак не хочется.
В результате:
Написал мелкий класс, который реализует функционал, схожий с логикой SNAPSHOT_ISOLATION в SQL Server, да и в принципе с транзакционным подходом.
Для не знакомых с: SNAPSHOT_ISOLATION - режим изоляции таблиц данных до окончания транзакции без лок-блокировки. Операции чтения из других потоков во время исполнения изменяющей транзакции читают старые = не измененные ещё данные. Если транзакция заваливается, новые данные (не записанные или записанные частично) никак не влияют на старые, т.е. graceful rollback.Из фич: перейти на новый код можно совершенно не затрагивая структуры файлов. "И было им всё, мягко говоря, побоку".
Принцип простой: версионность каждой записи.
Вроде работает. Счас буду гонять на реале.
По итогам (а какие могут быть итоги, если он
в принципе завалиться не может?) может и выложу в ленту. В любом случае будет distributed freely.