Як GIF-ка з Рейчел майже зламала Discourse
#bugs
В Discourse помітили, що розміри бекапів виросли до сотень гігабайт. Унікального контенту в даних було мало. Більшість з них ... просто копії.
Проблема
Одна з функцій Discourse дозволяє безпечно завантажувати контент. Коли файл переміщається між різними контекстами - система створює нову копію з ... рандомізованим хешем SHA-1. Файл залишається тим самим, але Discourse розглядає його як новий.
Найчастіше це GIF-ки та картинки. Користувачі надсилають їх один одному як в повідомленях так і в коментарях.
Як пофіксили
Алгоритм фіксу був згрупувати контент по оригінальному хешу, завантажити один файл, а всі дублікати помітити як hardlinks.
Як GIF-ка зламала фікс
В процесі створення hardlinks дуже швидко досягли ліміту - 65000 посилань на одну inode. Деякі файли мали аж по 246173 копії. Який це файл? Виявилося, що це ... GIF з Рейчел з серіалу Друзі - яку дуже часто додавали як реакцію.
Пофіксили фікс шляхом трекінгу ліміту посилань в файловій системі.
Post #800
1.6K
- ❤ 26
- 👍 5