Проблема заключается в следующем race condition в режиме watch:
Необходимо добавить файл в архив. Создается readable стрим из содержимого этого файла, который передается в архиватор.
Сейчас для оптимизации работы архиватора мы подсовываем stats этого файла, чтобы добавление файла в архив выполнилось быстрее (специфика реализации архиватора), НО если в файл что-то добавилось пока стрим не закрылся, то размер файла может измениться. В кишках архиватора есть проверка, которая берет stats.size у файла (а мы его явно предварительно передали) и проверяется, что размер добавленного содержимого в архив такой же как и этот stats.size. И вот эта проверка может падать по причине того, что в файл что-то дописалось, размер изменился (соответственно в архив попало больше данных) и не совпадает с переданным stats.size.
Решение: не передаем stats архиватор в режиме вотчинга.
cc @j0tunn
Проблема заключается в следующем race condition в режиме watch:
Необходимо добавить файл в архив. Создается readable стрим из содержимого этого файла, который передается в архиватор. Сейчас для оптимизации работы архиватора мы подсовываем
stats
этого файла, чтобы добавление файла в архив выполнилось быстрее (специфика реализации архиватора), НО если в файл что-то добавилось пока стрим не закрылся, то размер файла может измениться. В кишках архиватора есть проверка, которая беретstats.size
у файла (а мы его явно предварительно передали) и проверяется, что размер добавленного содержимого в архив такой же как и этотstats.size
. И вот эта проверка может падать по причине того, что в файл что-то дописалось, размер изменился (соответственно в архив попало больше данных) и не совпадает с переданнымstats.size
.Решение: не передаем
stats
архиватор в режиме вотчинга.