Возможные проблемы#
Ошибка при запросе к API Jasper. Текст ошибки: The remote certificate is invalid according to the validation procedure или The remote certificate is invalid because of errors in the certificate chain: PartialChain
Описание ошибки
Бывают ситуации, когда в сертификате Системы / сайта имеются корневые и промежуточные сертификаты.
Пример:

Если промежуточные и корневые сертификаты отсутствуют на сервере Linux, то при обращении к API Jasper будет ошибка: The remote certificate is invalid according to the validation procedure или The remote certificate is invalid because of errors in the certificate chain: PartialChain.
Решение
Можно поместить промежуточные и корневые сертификаты внутрь сертификата Системы / сайта:
Откройте в Windows корневой и промежуточные сертификаты.
На вкладке Состав выполните экспорт в формате Base-64:

Откройте в блокноте полученные .cer файлы и скопируйте содержимое.
Отредактируйте сертификат Системы / сайта путём вставки описания корневого и промежуточных сертификатов. Порядок вставки описания: сначала сертификат Системы / сайта, потом промежуточные, потом корневой.
Пример:

Сохраните изменённый сертификат и протестируйте успешное выполнение запроса к API Jasper.
Ошибка в карточке объекта. Текст ошибки: Не удалось проверить интеграции объекта с другими системами
Описание ошибки
Если API Jasper не может подключиться к Rabbit MQ, то в карточке любого объекта возникает ошибка:

Решение
Установите (если отсутствует) очередь сообщений Rabbit MQ с помощью тега
install_rabbitmq.3
.Проверьте статус службы systemctl status rabbitmq-server.service.
Если сервис Rabbit MQ запущен, то перезапустите Jasper с помощью команды:
docker-compose down docker-compose up -d
Ошибка при создании субъектов. Текст ошибки: Существует актуальный субъект с тем же «СНИЛС»
Описание ошибки
Ошибка возникает при создании субъекта через API Jasper, если в Системе уже существует актуальный субъект с таким же значением в поле ИНН, ОГРН, СНИЛС, ОГРНИП.

Важно
Необходимо учитывать, что:
для юридического лица в Системе не может быть 2 субъектов в статусе «Актуальный» с одинаковыми значениями ИНН, ОГРН;
для физического лица/ИП в Системе не может быть 2 субъектов в статусе «Актуальный» с одинаковыми значениями СНИЛС/ОГРНИП.
Решение
Если неправильно задан KeyFieldType, при создании xsd-схемы поставьте тип KeyFieldType на поля ИНН, ОГРН, СНИЛС, ОГРНИП.
Если загружаются данные физического лица ИП, которое в Системе является физическим лицом:
2.1. Откройте файл xml.
2.2. Возьмите из файла xml значение ОГРН ИП.
2.3. Заполните в Системе в карточке физического лица поле [ОГРН ИП] и поставьте флаг в поле [Предприниматель]. Сохраните карточку.
2.4. Загрузите файл xml повторно.
Ошибка при отправке XML с невалидными символами в Jasper. Текст ошибки: Xml документ, переданный клиентом [имя_клиента], содержит недопустимые символы:
Описание ошибки
Ошибка возникает при отправке в Jasper файла xml, в атрибутах которого используются такие символы, как "
, '
, <
, >
, &
.
Решение
Для корректной отправки файла xml замените невалидные символы соответствующей кодировкой:
" "
' '
< <
> >
& &
Ошибка установки. Цикличные SELECT
Описание ошибки
Цикличные SELECT’ы к jasper.__EFMigrationsHistory
Приложен лог Ansible
fatal: [app-1]: FAILED! => changed=false
msg: |-
Attaching to jasper_sts_1, jasper_rabbit_1
[36mrabbit_1 |[0m [40m[32minfo[39m[22m[49m: Gems.RabbitMqConnection.RabbitMqConnectionWithRetry[0]
[36mrabbit_1 |[0m RabbitMQ Client is trying to connect
[36mrabbit_1 |[0m [40m[32minfo[39m[22m[49m: Gems.RabbitMqConnection.RabbitMqConnectionWithRetry[0]
[36mrabbit_1 |[0m RabbitMQ Client acquired a persistent connection to '172.30.204.106'.
[36mrabbit_1 |[0m Hosting environment: Production
[36mrabbit_1 |[0m Content root path: /app
[36mrabbit_1 |[0m Now listening on: http://[::]:5099
[36mrabbit_1 |[0m Application started. Press Ctrl+C to shut down.
[33msts_1 |[0m [14:35:32 INF] Starting host... <s:>
[33msts_1 |[0m [14:35:32 INF] Use built-in private key from idsrv.pfx. Expiration date of the certificate 09/20/2029 11:29:29 <s:IdentityServer.Startup>
[33msts_1 |[0m [14:35:33 INF] Entity Framework Core 3.1.22 initialized 'ApplicationUserDbContext' using provider 'Npgsql.EntityFrameworkCore.PostgreSQL' with options: MigrationsAssembly=IdentityServer MigrationsHistoryTable=jasper.__EFMigrationsHistory PostgresVersion=9.6 <s:Microsoft.EntityFrameworkCore.Infrastructure>
[33msts_1 |[0m [14:35:55 INF] Executed DbCommand (12ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
[33msts_1 |[0m SELECT EXISTS (SELECT 1 FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace WHERE n.nspname='jasper' AND c.relname='__EFMigrationsHistory'); <s:Microsoft.EntityFrameworkCore.Database.Command>
[33msts_1 |[0m [14:36:15 INF] Executed DbCommand (2ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
[33msts_1 |[0m SELECT EXISTS (SELECT 1 FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace WHERE n.nspname='jasper' AND c.relname='__EFMigrationsHistory'); <s:Microsoft.EntityFrameworkCore.Database.Command>
[33msts_1 |[0m [14:36:15 INF] Executed DbCommand (2ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
[33msts_1 |[0m SELECT "MigrationId", "ProductVersion"
[33msts_1 |[0m FROM jasper."__EFMigrationsHistory"
[33msts_1 |[0m ORDER BY "MigrationId"; <s:Microsoft.EntityFrameworkCore.Database.Command>
[33msts_1 |[0m [14:36:15 INF] No migrations were applied. The database is already up to date. <s:Microsoft.EntityFrameworkCore.Migrations>
[33msts_1 |[0m [14:36:15 INF] Entity Framework Core 3.1.22 initialized 'ConfigurationDbContext' using provider 'Npgsql.EntityFrameworkCore.PostgreSQL' with options: MigrationsAssembly=IdentityServer MigrationsHistoryTable=jasper.__EFMigrationsHistory PostgresVersion=9.6 <s:Microsoft.EntityFrameworkCore.Infrastructure>
[33msts_1 |[0m [14:36:35 INF] Executed DbCommand (3ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
[33msts_1 |[0m SELECT EXISTS (SELECT 1 FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace WHERE n.nspname='jasper' AND c.relname='__EFMigrationsHistory'); <s:Microsoft.EntityFrameworkCore.Database.Command>
[33msts_1 |[0m [14:36:55 INF] Executed DbCommand (2ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
[33msts_1 |[0m SELECT EXISTS (SELECT 1 FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace WHERE n.nspname='jasper' AND c.relname='__EFMigrationsHistory'); <s:Microsoft.EntityFrameworkCore.Database.Command>
[33msts_1 |[0m [14:36:55 INF] Executed DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
[33msts_1 |[0m SELECT "MigrationId", "ProductVersion"
[33msts_1 |[0m FROM jasper."__EFMigrationsHistory"
[33msts_1 |[0m ORDER BY "MigrationId"; <s:Microsoft.EntityFrameworkCore.Database.Command>
[33msts_1 |[0m [14:36:55 INF] No migrations were applied. The database is already up to date. <s:Microsoft.EntityFrameworkCore.Migrations>
[33msts_1 |[0m [14:36:55 INF] Entity Framework Core 3.1.22 initialized 'PersistedGrantDbContext' using provider 'Npgsql.EntityFrameworkCore.PostgreSQL' with options: MigrationsAssembly=IdentityServer MigrationsHistoryTable=jasper.__EFMigrationsHistory PostgresVersion=9.6 <s:Microsoft.EntityFrameworkCore.Infrastructure>
[33msts_1 |[0m [14:37:15 INF] Executed DbCommand (2ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
[33msts_1 |[0m SELECT EXISTS (SELECT 1 FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace WHERE n.nspname='jasper' AND c.relname='__EFMigrationsHistory'); <s:Microsoft.EntityFrameworkCore.Database.Command>
Решение
Проблема заключалась в долгом запуске STS, из-за чего не успевал проходить его healthcerk. Проблема решилась увеличением времени старта healthcheck (start_period: 120).
healthcheck:
test: ["CMD-SHELL", "nc -zv localhost 5091"]
interval: 30s
timeout: 10s
retries: 4
start_period: 120s