Проблема "Group", механика KeyValues

Kailo

Участник
Сообщения
194
Реакции
896
Симптомы: После установки какого-либо плагина перестают работать админки на сервере.
Суть: Это случается когда список администраторов загружаются из файла admins.cfg (если у вас есть админы в admins_simple.ini, они будут работать). Один из ключей этой структуры именуется "group". Если в каком-либо плагине имеется следующий код, система багается.
PHP:
CreateKeyValues("Group");

Рассуждения о причинах (данное рассуждение не претендует на правду):
По своей сути KV регистронезависимы. Когда создается секция с именем, её имя кэшируется где-то в системе, и далее из кэша берется.
Получаем следующие:
При первом запуске список администраторов загрузиться нормально. Далее будет запущен плагин который повредил кэш KV, при смене карты и перезагрузки списка администраторов загрузка провалиться и администраторы не будут успешно загружены.
Update:
Скорее всего дело в следующем: т.к. KV структура имеет "ключи", то соответственно должен быть алгоритм поиска в множестве ключей (если интересно погуглите "Map" (англ.), и как организуются алгоритмы поиска в множестве строк). Соответственно оптимизированный алгоритм под регистронезависимость имеет баг (вероятно это проблема только 1го символа).
Update2: Небольшая поправка. SB получает список админов, и перезаписывает admins.cfg, при этом меняется "group" на "Group". И при загрузке не распознается (Может это механика KV такая? Он регистронезависим кроме первого символа?)

Решение:
Заменить в плагине "Group" на "group". Рестартнуть сервер, т.к. даже при загрузке исправленного плагина, администраторы продолжают не работать (что подтверждает предположение о кэше KV).

P.S. Лично встречал такое пару раз, надеюсь помогу хоть кому-нибудь этой информацией.
 
Последнее редактирование:

Lominad

Участник
Сообщения
195
Реакции
33
Очень помог. Теперь ясно в чем дело
 
Сверху Снизу