Kailo
Участник
- Сообщения
- 194
- Реакции
- 896
Симптомы: После установки какого-либо плагина перестают работать админки на сервере.
Суть: Это случается когда список администраторов загружаются из файла admins.cfg (если у вас есть админы в admins_simple.ini, они будут работать). Один из ключей этой структуры именуется "group". Если в каком-либо плагине имеется следующий код, система багается.
Рассуждения о причинах (данное рассуждение не претендует на правду):
По своей сути KV регистронезависимы. Когда создается секция с именем, её имя кэшируется где-то в системе, и далее из кэша берется.
Получаем следующие:
При первом запуске список администраторов загрузиться нормально. Далее будет запущен плагин который повредил кэш KV, при смене карты и перезагрузки списка администраторов загрузка провалиться и администраторы не будут успешно загружены.
Update:
Скорее всего дело в следующем: т.к. KV структура имеет "ключи", то соответственно должен быть алгоритм поиска в множестве ключей (если интересно погуглите "Map" (англ.), и как организуются алгоритмы поиска в множестве строк). Соответственно оптимизированный алгоритм под регистронезависимость имеет баг (вероятно это проблема только 1го символа).
Update2: Небольшая поправка. SB получает список админов, и перезаписывает admins.cfg, при этом меняется "group" на "Group". И при загрузке не распознается (Может это механика KV такая? Он регистронезависим кроме первого символа?)
Решение:
Заменить в плагине "Group" на "group". Рестартнуть сервер, т.к. даже при загрузке исправленного плагина, администраторы продолжают не работать (что подтверждает предположение о кэше KV).
P.S. Лично встречал такое пару раз, надеюсь помогу хоть кому-нибудь этой информацией.
Суть: Это случается когда список администраторов загружаются из файла 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. Лично встречал такое пару раз, надеюсь помогу хоть кому-нибудь этой информацией.
Последнее редактирование: