Описание проблемы:
Возникновение бесконечной загрузки во вкладке «Группы» панели администратора PGS.
Для просмотра журнала событий необходимо подключиться к серверу с ролью infrastructure и выполнить следующую команду:
tail -n 100 /var/log/pgs/<domain_env>.<domain_name>/euclid/critical.log
где <domain_env>, <domain_name> — переменные из файла inventory.
Пример отображения ошибки в журнале событий:
RITICAL - 2023-10-31 12:53:04,037 - pgs.euclid - GET /tenants/Default/groups, Internal server error 500 | - ms
Headers: {'X-FORWARDED-FOR':
...
...
Error: None
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/falcon/api.py", line 269, in __call__
responder(req, resp, **params)
File "/usr/local/lib/python3.11/site-packages/falconswaggerautodoc/schema_decorators.py", line 42, in wrapped
f(self, *f_args, **f_kwargs)
File "/opt/Pythagoras/Euclid/endpoints/groups.py", line 91, in on_get
tenant=req.tenant).data}
^^^^
File "/opt/Pythagoras/Euclid/serializers/group_serializers.py", line 64, in data
return [self._serialize_group(group) for group in self.groups]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/Pythagoras/Euclid/serializers/group_serializers.py", line 64, in <listcomp>
return [self._serialize_group(group) for group in self.groups]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/Pythagoras/Euclid/serializers/group_serializers.py", line 47, in _serialize_group
res["users"] = self.serialize_groupmembers(users)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/Pythagoras/Euclid/serializers/group_serializers.py", line 78, in serialize_groupmembers
if "middle_name" in user["attributes"] else ""
~~~~^^^^^^^^^^^^^^
KeyError: 'attributes'
Решение:
1. Выполнить на сервере с ролью keycloack следующую команду:
docker exec $(docker ps -qf name=keycloak)\
/opt/jboss/keycloak/bin/kcadm.sh create clear-user-cache\
-r <realm> -s realm=<realm> --server\
http://localhost:8080/auth --realm master\
--user pgs --password <KEYCLOAK_PASSWORD>
2. Выполнить на сервере с ролью pythagoras следующую команду:
docker exec $(docker ps -q -f name=pgs_aristoteles)\
bash -c "python initializers/RedisInit.py"