Един-единствен малък GIF файл, често използван в чатовете от членовете на общността на сайта, в крайна сметка добави 377 GB към квотата за архивиране на уебсайта, което доведе до повреда на файловата система под Linux и до провал на процеса на архивиране. GIF-ът с реакцията „щастливият танц“ на Дженифър Анистън от сериала „Приятели“ е с размер само 1.6 MB, а в този случай той беше дублиран 246 173 пъти в резервното копие.

Този проблем беше предизвикан от прекомерната употреба на GIF-а с щастливия танц, както и от прилагането на политика за сигурност на файловете. На свой ред поправянето му не беше съвсем лесно, информират служители от Discourse.

Discourse е компания и софтуерен проект с отворен код, който разработва една от най-широко използваните съвременни платформи за общностни дискусии, обслужваща понастоящем над 22 000 онлайн общности. Платформата ѝ за чат в реално време позволява на потребителите да вмъкват емоджита и GIF-ове в дискусиите си, за да оживят дебатите. Но функцията за „сигурно качване“ на платформата означава, че когато даден файл се премества между контексти на сигурност (например от лично съобщение към публична публикация), системата създава ново копие с рандомизиран SHA1. Оригиналното съдържание е идентично, но Discourse го третира като нов файл. Така популярна картинка или GIF с реакция ще се разпространява в публикации, репостове и лични съобщения, а всеки контекст създава още едно копие на файла.

Първият опит на Discourse да поправи системата, затрупана от дубликати, беше да проследява оригиналното съдържание по неговия хеш. След това, по време на архивирането, да групира качванията по хеша и да изтегля само първия файл във всяка група. За всички дубликати бяха създадени твърди връзки.

Това изглеждаше като елегантно решение, докато един от по-големите клиенти на Discourse не насочи вниманието на всички към ограничението на файловата система ext4 от около 65 000 твърди връзки на инод (съкратено от index node или структура от метаданни за размера, собственика и разрешенията на файлове). В случая, за който става дума, архивирането проработи с това първо решение, но вместо едно изтегляне за всички 246 173 дубликата системата получи едно изтегляне плюс ~181 000 резервни изтегляния след достигане на ограничението, обяснява блогът на фирмата.

Абсурдно дублираният файл, който създаде 377 GB излишни данни, беше Рейчъл от сериала „Приятели“, която изпълняваше своя „танц на щастието“. Явно проблемният сайт е бил доста весел, като реакционният GIF „се използваше постоянно в публикации, лични съобщения, навсякъде“, отбелязаха от Discourse.

За радост Discourse успя да измисли решение за своето предишно решение. Всъщност новото решение започва като старото, като създава твърди връзки. Но когато файловата система извежда съобщение за грешка EMLINK (твърде много твърди връзки), тя ще копира файла локално и ще третира новия файл като „първичен“, докато отново не достигне лимита. Тази нова мярка „работи на всяка файлова система, без да е необходима конфигурация“, казва Discourse с известно задоволство.

Блогът на Discourse завършва като подчертава поуките, извлечени от объркващата лудост по дублирането на анимирани GIF файлове, и иронично отбелязва, че „сега знам, че Дженифър Анистън може да подложи инфраструктурата на стрес тест“.

Снимка: Unsplash

Виж още: Тази причудлива джаджа от „Шкода“ ще помага на велосипедистите да избегнат сблъсък с хора, погълнати от музика