Механизм lockedLoadData должен снизить нагрузку на сервер.
Ранее, когда кэш конфигурации очищался на высоконагруженных сайтах, все клиенты генерировали ту же информацию, что значительно увеличивает загрузку процессора / io.
С lockedLoadData только один клиент будет генерировать кеш, а другие будут его ждать.
Подробнее о том, как это работает.
Первый вызов функции «get data» обратный вызов и если он получает данные, то просто возвращает их (поэтому, если данные в кеше, код работает как предыдущий и не использует никаких блокировок).
Если данные недоступны и блокировка заблокирована, то в цикле мы пытаемся загружать данные до тех пор, пока данные не будут получены или не будет снята блокировка.
Если блокировки нет, мы создаем блокировку и генерируем данные, сохраняем ее в кеше, снимаем блокировку и возвращаем данные
PS: Мы отправили эти изменения как патч для одного из клиентов с нагрузкой до 20kRPM, и он работает как минимум 3 месяца без проблем. Так что, возможно, проблема в ваших настройках / модулях (например, если они сломали механизм кэширования)