Часто встречающиеся проблемы и пути их устранения#
Использование функционала Archiving можно разделить на 3 категории: Init, поток, ТКД. Поэтому типовые проблемы далее будут разделены на перечисленные группы.
Работа с инициализирующей выгрузкой#
Инит завершил работу в статусе
ERROR. No api com.sbt.pprbod.data.transport.init.InitDataSampleApi.Пример текста ошибки:
Аварийное завершение задачи с ошибкой(Exception): ПРИКЛАДНАЯ ОШИБКА в модуле: 'arch-journal-cdm-init' в методе 'PREPARE' у класса 'com.sbt.pprbod.data.sample.bgp.InitApplicationTask'Аварийное завершение задачи с ошибкой(Exception): ПРИКЛАДНАЯ ОШИБКА в модуле: 'arch-journal-cdm-init' в методе 'PREPARE' у класса 'com.sbt.pprbod.data.sample.bgp.InitApplicationTask'com.sbt.bgp.exceptions.BGPApplicationException: ПРИКЛАДНАЯ ОШИБКА в модуле: 'arch-journal-cdm-init' в методе 'PREPARE' у класса 'com.sbt.pprbod.data.sample.bgp.InitApplicationTask' at com.sbt.bgp.task.ApplicationTaskEngine.processApplicationException(ApplicationTaskEngine.java:186) at com.sbt.bgp.task.ApplicationTaskEngine.prepare(ApplicationTaskEngine.java:100) at com.sbt.bgp.task.ApplicationTaskEngine.execute(ApplicationTaskEngine.java:47) at com.sbt.bgp.task.AsyncTaskEngineExecutor.lambda$executeAsync$0(AsyncTaskEngineExecutor.java:44) at com.sbt.bgp.access.BGPRunnable.run(BGPRunnable.java:37) at com.sbt.access_system.client.platform.service.TaskSecurityServiceImpl$SecureTask.run(TaskSecurityServiceImpl.java:103) at com.sbt.bgp.access.BGPSecureTaskExecutor.lambda$execute$0(BGPSecureTaskExecutor.java:71) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)Caused by: com.sbt.core.amqp.exceptions.TransportNoRouteException: No api [com.sbt.pprbod.data.transport.init.InitDataSampleApi] services available for route: [MMT_ZONE][*][mega-bas] (zone-node-module).. List of services violations: ZONE NODE MODULE PING ENABLED FILTER VIOLATIONSДля Прикладных фабрик, использующих DataSpace и БПС Сделки (mega-bas), данная ошибка может означать следующее:
В зоне ММТ MMT_ZONE отключен или отсутствует модуль dataspace или mega-bas (БПС Сделки). Обратитесь в поддержку DataSpace или БПС. делки и уточните статус работы их модулей.
У модуля DataSpace или mega-bas (БПС Сделки) отключено API InitDataSampleApi, которое используется для работы с ТС Архивирование или установлен модуль версии, где оно не реализовано. Обратитесь в поддержку DataSpace или БПС Сделки и уточните наличие и работоспособность InitDataSampleApi в соответствующей ММТ зоне.
В параметрах фоновой задачи указаны неверные параметры zone или module. Проверьте корректность значений параметров. Значение параметров: module - идентификатор модуля DataSpace (dataspace-cr-migration-service-module) или БПС Сделки (mega-bas), zone - ММТ зона, где расположен модуль прикладной фабрики (на одну зону ММТ приходится один модуль DataSpace или БПС Сделки).
Для Прикладных фабрик на Platform V Persistence или DTO класса данная ошибка может означать следующее:
Отсутствует связь с модулем Прикладной фабрики, где реализовано API для взаимодействия с ТС Архивирование (com.sbt.pprbod.data.transport.init.InitDataSampleApi). Модуль отключен или отсутствует на полигоне, либо на нем не реализовано InitDataSampleApi. Уточните статус модуля прикладной фабрики на контуре, где запускается инит.
В параметрах фоновой задачи указаны неверные параметры zone или module. Проверьте корректность значений параметров. Значение параметров: module - идентификатор модуля прикладной фабрики, zone - ММТ зона, где расположен модуль прикладной фабрики.
Инит закончил работу в статусе
ERROR. Source '\...\' not found.Пример текста ошибки:
Необработанное исключение BGPApplicationException com.sbt.bgp.exceptions.BGPApplicationException: Задача закончила выполнение с ошибкой в шаге process at com.sbt.bgp.task.ProcessExecutor.execute(ProcessExecutor.java:45) at com.sbt.bgp.task.interaction.thread.ThreadWorker.call(ThreadWorker.java:28) at com.sbt.bgp.computations.api.impl.BGPWorkerApiImpl.lambda$createThreadRunnable$0(BGPWorkerApiImpl.java:60) at com.sbt.bgp.access.BGPRunnable.run(BGPRunnable.java:37) at com.sbt.access_system.client.platform.service.TaskSecurityServiceImpl$SecureTask.run(TaskSecurityServiceImpl.java:103) at com.sbt.bgp.access.BGPSecureTaskExecutor.lambda$execute$0(BGPSecureTaskExecutor.java:71) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.RuntimeException: com.sbt.pprbod.data.ex.DataContainerAcceptException: com.sbt.pprbod.data.ex.DataContainerAcceptException: com.google.common.util.concurrent.UncheckedExecutionException: com.sbt.pprbod.dtoprovider.ex.UnknownModuleException: Source 'SALARY_EMISSION' not found. at com.sbt.pprbod.data.AbstractInitApplicationTask.process(AbstractInitApplicationTask.java:145) at com.sbt.bgp.task.ProcessExecutor.execute(ProcessExecutor.java:36) ... 10 more Caused by: com.sbt.pprbod.data.ex.DataContainerAcceptException: com.sbt.pprbod.data.ex.DataContainerAcceptException: com.google.common.util.concurrent.UncheckedExecutionException: com.sbt.pprbod.dtoprovider.ex.UnknownModuleException: Source 'SALARY_EMISSION' not found.Для всех прикладных фабрик данная ошибка означает, что конфигурация для источника с мнемоникой (идентификатором), указанной в параметре
sourceфоновой задачи, отсуствует в базе данных Archiving. Возможные варианты:Значение параметра
sourceв конфигурации фоновой задачи не совпадает с мнемоникой (идентификатором) источника в конфигурации Archiving (указывается в параметреnameв файле конфигурацииsourceDescription.yamlпри формировании дистрибутива. Проверьте их соответствие.Конфигурация источника не загружена в базу данных Archiving. Проверьте, что успешно завершена фаза конфигурации источника в БД Archiving в процессе DevOps.
После запуска Init КАП получил больше/меньше записей, чем в БД.

Если в процессе Init Фоновый Процесс был завершен успешно (со статусом
DONE), но количество объектов, указанных в строке состояния, отличается от количества в БД - удостоверьтесь, что сверка происходит с нужным Staind-In контуром.Источники на Platform V Persistence. Init закончил работу в статусе
ERROR. java.lang.NoClassDefFoundError: com/sbt/pprb/integration/hibernate/changes/transform/Normalizer.Пример текста ошибки:
Caused by: java.lang.NoClassDefFoundError: com/sbt/pprb/integration/hibernate/changes/transform/Normalizer at com.sbt.pprb.integration.datafabric.hibernate.ChangeVectorBuilder.toChangesVector(ChangeVectorBuilder.java:43) at com.sbt.pprb.integration.datafabric.hibernate.ChangeVectorBuilder.toChangesVector(ChangeVectorBuilder.java:35) at com.sbt.pprb.integration.datafabric.hibernate.HibernateDataProvider.readPartition(HibernateDataProvider.java:150) at com.sbt.pprb.integration.datafabric.InitDataSampleFunctions.loadBatchAsync(InitDataSampleFunctions.java:41) at com.sbt.pprbod.data.utils.InitDataSampleService.loadBatchAsync(InitDataSampleService.java:139) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sbt.core.transport.commons.utils.CBLUtils.changeClassLoaderAndInvoke(CBLUtils.java:21) at com.sbt.core.transport.server.TransportServiceExporter.invoke(TransportServiceExporter.java:377) at com.sbt.core.transport.server.TransportServiceExporter.invokeApiMethod(TransportServiceExporter.java:201) at com.sbt.core.transport.server.TransportServiceExporter.onMessage(TransportServiceExporter.java:141) at com.sbt.core.transport.rpc.impl.RpcExecutorImpl.handleMessageWithSourceMessageChannel(RpcExecutorImpl.java:464) at com.sbt.core.transport.rpc.impl.RpcExecutorImpl.handleWithTrace(RpcExecutorImpl.java:416) at com.sbt.core.transport.rpc.impl.RpcExecutorImpl.handleMessage(RpcExecutorImpl.java:384) at com.sbt.core.transport.rpc.impl.RpcExecutorImpl.handle(RpcExecutorImpl.java:279) at sun.reflect.GeneratedMethodAccessor3932.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:87) at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:72) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) at org.springframework.remoting.support.RemoteInvocationUtils.fillInClientStackTraceIfPossible(RemoteInvocationUtils.java:45) at com.sbt.core.transport.utils.InvokeMethodUtils.createResultException(InvokeMethodUtils.java:59) at com.sbt.core.transport.utils.InvokeMethodUtils.getResultObject(InvokeMethodUtils.java:40) ... 15 common frames omittedДанное исключение возникает у Прикладных фабрик, использующих Platform V Persistence, при использовании некоторых старых версий бибилотек orm-tools и data-fabric-replication.
Установите версии библиотек: orm-tools и data-fabric-replication — любые актуальные версии в соответствии с платформенными зависимостями.
Задача закончила работу со статусом
DONE 0/0 (0.00%).Возможна ситуация, когда Фоновый Процесс завершает работу со статусом
DONE, но при этом выгрузка данных не происходит, а прогресс равен0/0 (0.00%).Это означает, что на шаге запроса количества партиций от Archiving к Прикладной фабрике Прикладная фабрика вернула
0или данные не были запрошены. В такой ситуации рекомендуется:Проверить параметры фоновой задачи:
убедитесь, что в параметрах фоновой задачи указаны типы данных, объекты по которым присуствуют в БД источника (если таблицы пустые, то ФП отработал правильно);
проверьте имена параметов
type_X. Они должны идти по порядку отtype_0доtype_N-1, гдеN- количество типов данных в фоновой задаче. Если это не так - исправить.
Проверить, что при Init Прикладная фабрика на запрос количества данных (
getBatchCount) возращает количество данных больше 0. Если это не так, вернитесь к шагу 1.
Init завершил работу с ошибкой
Normalizer.<init>(Ljavax/persistence/EntityManagerFactory;)VТекст исключения:
Caused by: com.sbt.pprbod.data.transport.exception.BatchLoadException: An error occurred during call 'loadBatchAsync(ru.sbt.bas.bpsr.domain.controlsheet.ControlSheet,0,d766bce2-05a0-4f13-9af9-bcf7b9ad69a7)' and result waiting at com.sbt.pprbod.data.sample.bgp.InitApplicationTask.loadBatch(InitApplicationTask.java:64) at com.sbt.pprbod.data.AbstractInitApplicationTask.process(AbstractInitApplicationTask.java:152) ... 11 more Caused by: com.sbt.core.amqp.exceptions.TransportException: java.lang.NoSuchMethodError: com.sbt.pprb.integration.hibernate.changes.transform.Normalizer.<init>(Ljavax/persistence/EntityManagerFactory;)V at com.sbt.core.transport.utils.InvokeMethodUtils.getResultObject(InvokeMethodUtils.java:44) at com.sbt.core.transport.rpc.impl.AbstractRpcCall.recreateResult(AbstractRpcCall.java:411) at com.sbt.core.transport.rpc.impl.AsyncReply.createAsyncResult(AsyncReply.java:158) at com.sbt.core.transport.rpc.impl.AsyncReply.deliverResult(AsyncReply.java:114) at com.sbt.core.transport.rpc.impl.RpcInvokerImpl.replyResult(RpcInvokerImpl.java:416) at com.sbt.core.transport.rpc.impl.RpcInvokerImpl.processReplyMessage(RpcInvokerImpl.java:345) at com.sbt.core.transport.rpc.impl.RpcInvokerImpl.processReplyMessageWithTrace(RpcInvokerImpl.java:306) at com.sbt.core.transport.rpc.impl.RpcInvokerImpl.handle(RpcInvokerImpl.java:278) at sun.reflect.GeneratedMethodAccessor927.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:87) at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:72) ... 3 more Caused by: java.lang.NoSuchMethodError: com.sbt.pprb.integration.hibernate.changes.transform.Normalizer.<init>(Ljavax/persistence/EntityManagerFactory;)V at com.sbt.pprb.integration.datafabric.hibernate.ChangeVectorBuilder.toChangesVector(ChangeVectorBuilder.java:43) at com.sbt.pprb.integration.datafabric.hibernate.ChangeVectorBuilder.toChangesVector(ChangeVectorBuilder.java:35) at com.sbt.pprb.integration.datafabric.hibernate.HibernateDataProvider.readPartition(HibernateDataProvider.java:150) at com.sbt.pprb.integration.datafabric.InitDataSampleFunctions.loadBatchAsync(InitDataSampleFunctions.java:41) at com.sbt.pprbod.data.utils.InitDataSampleService.loadBatchAsync(InitDataSampleService.java:139) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ...При возникновении данной ошибки проверьте версии библиотек Platform V Persistence, используемых в модуле фабрики: Platform V Persistence, data-fabric-replication — любые актуальные версии в соответствии с платформенными зависимостями.
Init завершился с ошибкой
Not all objects has been replicated.При Init или offline ТКД может возникнуть ошибка, приведенная ниже.
Текст исключения:
Not all objects has been replicated! Last result: ContainerSendingResult{objectsSent=0, objectsWarn=0, objectsError=7}. See adapter logs for details at com.sbt.pprbod.data.AbstractInitApplicationTask.process(AbstractInitApplicationTask.java:189) ... 11 moreНаиболее частая причина возникновения данной ошибки — несоответствие модели данных в Прикладной фабрике и конфигурации Archiving.
Проверьте актуальность метамодели в базе данных конфигураций источников Archiving.
Работа с потоком#
Поток прикладного журнала запущен. Данные не доходят до КАП.
При включении потока данные уходят в Прикладной журнал, появляются в интерфейсе, но не доходят до КАП и Archiving.
Этапы анализа проблемы:
Удостоверьтесь, что плагин EXPORT_FD4 включен в зоне ПЖ, через которую работает Прикладная фабрика. Для этого:
Зайдите в интерфейс Прикладного Журнала.
Выберите зону ПЖ, в которой работает ПФ.
В меню слева выберите Плагины (ПФ работает через ММТ) или Плагины Kafka (ПФ работает через Kafka);
Убедитесь, что плагин EXPORT_FD4 есть в списке и включен:


Если плагина нет, обратитесь в поддержку ПЖ, чтобы добавить плагин EXPORT_FD4 для зоны и типа данных, в которых работает прикладная фабрика. Если плагин присутствует, но выключен, его необходимо включить. На форме Плагины плагин EXPORT_FD4 может присутствовать в списке, но включить его нельзя. В таком случае он не активен, что равносильно его отсутствию в данной зоне ПЖ.
Если Плагин присутствует в зоне и включен, переходите к следующему пункту.
Проверьте, что плагин EXPORT_FD4 включен для типа данных прикладной фабрики. Для этого:
Зайдите в интерфейс Прикладного Журнала.
Выберите зону ПЖ, в которой работает ПФ.
В фильтре сделайте выборку от 00:00 даты, когда производится проверка, до 23:59 даты, когда производится проверка.
Нажмите Найти. Должны отобразиться журналы, которые обработаны ПЖ за данный период так, как представлено на картинке ниже:

Разверните журналы и убедитесь, что на форме есть иконка EXPORT_FD4, как представлено на рисунке ниже:

Если этой иконки нет, обратитесь в поддержку ПЖ, чтобы добавить в конфигурацию плагина в данной зоне ПЖ тип данных, через который работает Прикладная фабрика. (на картинке выше ORM_CV).
Если иконка есть, но вместо зеленой галочки - знак загрузки:
Зайдите в пункт меню Плагины (ПФ работает через ММТ) или Плагины Kafka (ПФ работает через Kafka) и проверьте, работают ли они. Если плагин активен, отключите и затем повторно включите его через 10 секунд.
Проверьте, активны ли узлы Archiving. Для этого выполните инструкцию из раздела «Проверка работоспособности тестового окружения».
Если плагин активен, его перезагрузка не помогла, а узлы Archiving в рабочем состоянии, обратитесь в службу поддержки Platform V Archiving;
Если иконка есть, и на ней присутствует зеленая галочка, как на картинке выше, то данные успешно отправляются в Archiving. Совместно с службой поддержки Platform V Archiving выполните анализ того, где они пропадают на пути от ПЖ до КАП.
Работа с ТКД#
Данные не попадают в топики.
Пример текста ошибки:
In zone Z_APPEAL_1 no any instance of module customer-cases-bps: com.sbt.core.amqp.exceptions.TransportNoRouteException: No api [com.sbt.pprbod.data.transport.tkd.QualityDataTransportApi] services available for route: [Z_APPEAL_1]-[*]-[customer-cases-bps] (zone-node-module).. List of services violations: ZONE NODE MODULE PING ENABLED FILTER VIOLATIONS default wf_str-vat-app1406 ucp-fd-sync true [Service is not supported interaction by rest.] default wf_tkli-pprb3464 gbk-main true [Service is not supported interaction by rest.] default wf_str-vat-app1407 ucp-fd-sync true [Service is not supported interaction by rest.] default wf_tkli-pprb1750 ucp-consents-fd-sync true [] default wf_tkli-pprb3468 gbk-policy-mngr true [] default wf_tklia-pprb02003 gbk-integration true [] default wf_tkli-pprb3468 gbk-main true [Service is not supported interaction by rest.] default wf_tklia-pprb02002 gbk-integration true []Этапы анализа проблемы:
Убедитесь, что модуль источника запущен.
Проверьте, что зона модуля Kafka/ММТ источника в конфигурации
sourceDescription.yamlсовпадает с реально используемой зоной источника в перекрытии Platform V Configuration по артефакту транспорт Kafka.
Ошибки обработки журналов со стороны КАП#
Ошибки, вызванные невозможностью применить data-container на стороне КАП и возвращаемые в ответе коммита КАП в топик коммитов.
Общий формат — строка, первая часть (до вертикальной черты) — код ошибки, вторая — информационные параметры. В ПЖ будет отображена точно в переданном виде.
Название |
Код |
Формат описания |
Описание ошибки |
|---|---|---|---|
Ошибка нарушения последовательности операций |
|
|
Ошибка нарушения последовательности получения (перепутан порядок операций удаление-вставка, удаление-изменение и так далее) |
Неверная версия |
|
|
Ошибка возникает, если передана неверная версия (пропуск версии, понижение версии) |
Неверный формат |
|
|
Любое отклонение от утвержденного протоколом формата контейнера, включая ошибку разбора, несоответствие схеме и так далее |
Нотация параметров:
type— передаваемый Archiving тип;key— передаваемый в контейнере ключ;operation— тип операции из контейнера;version— версия из контейнера;hversion— версия HBase;timestamp— время возникновения ошибки;description— описание ошибки (только для ситуации неверного формата). В случае исключения параметр записывается исключение без stack trace.
Примечание:
Параметры могут отсутствовать или быть недоступны в точке возникновения ошибки - в таком случае они заполняются значением
[ ].Параметры могут иметь значение
null— в таком случае они заполняются как["null"].
Пример разбора ошибки#
Получено сообщение:
ERROR_CONTAINER_DATA|type[com.sbt.bm.ucp.consents.model.dictionary.UcpConsentOperatorType], key[UcpConsentOperatorType_432.1653997258660], operation[null], version[0], hversion[], timestamp[2022-05-31 14:41:31.141], description[Part of the data is absent.].Согласно мнемонике, это ошибка со стороны ЦС (см. таблицу выше) - неверный формат. Далее необходимо проанализировать сообщение по полям (названия полей см. в таблице выше).
Итоговое сообщение об ошибке:
description[Part of the data is absent.].