Почему Data.fs.old исчезает?

Я проверяю механизм упаковки, поэтому устанавливается pack-days к нулю, добавленным и удаленным объектами через ZMI для генерации некоторой истории и выполнить zeopack, что до сих пор работает нормально.

Но если после последней упаковки транзакций не было, а срабатывает другая новая упаковка, Data.fs.old удаляется/исчезает, то почему?

Соответственно, какие строки кода это делают? Не могу найти как-то.


person Ida    schedule 16.09.2013    source источник


Ответы (1)


Запуск пакета всегда удаляет файл .old.

Когда тогда в этом нет ничего общего, нет NEW .old файла в этом месте.

Смотрите FileStorage.pack() метод; он удаляет существующий файл .old сразу после получения блокировки упаковки.

Логика такова (с некоторыми отступами и удаленным промежуточным кодом):

oldpath = self._file_name + ".old"
if os.path.exists(oldpath):
    os.remove(oldpath)

# collect pack info
pack_result = self.packer(self, referencesf, stop, gc)

if pack_result is None:
    return

os.rename(self._file_name, oldpath)
person Martijn Pieters    schedule 16.09.2013
comment
Большое спасибо! Кажется, я недостаточно хорошо грепился :) Просто для любопытства, насколько я знаю, что это ничтожно мало, если делать (лучше так) регулярные снимки: поскольку Data.fs.old предназначен для резервного копирования, Это должно остаться даже в этом случае (с момента последней упаковки никаких действий не произошло), ИМХО. Вы видите это вероятным? - person Ida; 16.09.2013
comment
Не совсем; файл .old здесь больше предназначен для защиты; если пакет пойдет не так, у вас старая версия. Если вы сначала упаковывают до 1 дня, то однажды позже упаковывают до двух дней, теперь не будет ничего, чтобы упаковать, но .old не тот же ZODB, что и что вы просто пытались упаковать. Это не будет точной резервной копией. Я бы предпочел удалить .old во всех случаях, чтобы избежать путаницы, и в любом случае использовать repoze для создания правильных инкрементных резервных копий. - person Martijn Pieters; 16.09.2013
comment
Теперь все имеет смысл, спасибо за вашу открытость к обсуждению, спасибо! - person Ida; 16.09.2013
comment
Спасибо вам за то, что задаете вопросы ZODB! :-P Еще 4 вопроса, и тег станет доступным для значков тегов, я был бы горд получить бронзовый значок ZODB. - person Martijn Pieters; 16.09.2013
comment
Ну, если на мой взгляд, будьте уверены, будьте уверены, будьте уверены, я выложу его сразу, без колебаний и никаких исследований, просто чтобы сделать вам одолжение;) - person Ida; 16.09.2013
comment
Вот вы: stackoverflow.com/questions/19026321/ - person Ida; 26.09.2013
comment
Хе-хе, за это время было задано достаточно вопросов, и я уже заработал этот бронзовый значок: stackoverflow.com/help/badges/3294 /зодб - person Martijn Pieters; 26.09.2013
comment
Поздравляю, пионер! :) - person Ida; 26.09.2013