Часто встречающиеся проблемы и пути их устранения#

Использование функционала Archiving можно разделить на 3 категории: Init, поток, ТКД. Поэтому типовые проблемы далее будут разделены на перечисленные группы.

Работа с инициализирующей выгрузкой#

  1. Инит завершил работу в статусе 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 - ММТ зона, где расположен модуль прикладной фабрики.

  2. Инит закончил работу в статусе 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.

  3. После запуска Init КАП получил больше/меньше записей, чем в БД.

    Если в процессе Init Фоновый Процесс был завершен успешно (со статусом DONE), но количество объектов, указанных в строке состояния, отличается от количества в БД - удостоверьтесь, что сверка происходит с нужным Staind-In контуром.

  4. Источники на 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 — любые актуальные версии в соответствии с платформенными зависимостями.

  5. Задача закончила работу со статусом DONE 0/0 (0.00%).

    Возможна ситуация, когда Фоновый Процесс завершает работу со статусом DONE, но при этом выгрузка данных не происходит, а прогресс равен 0/0 (0.00%).

    Это означает, что на шаге запроса количества партиций от Archiving к Прикладной фабрике Прикладная фабрика вернула 0 или данные не были запрошены. В такой ситуации рекомендуется:

    1. Проверить параметры фоновой задачи:

      • убедитесь, что в параметрах фоновой задачи указаны типы данных, объекты по которым присуствуют в БД источника (если таблицы пустые, то ФП отработал правильно);

      • проверьте имена параметов type_X. Они должны идти по порядку от type_0 до type_N-1, где N - количество типов данных в фоновой задаче. Если это не так - исправить.

    2. Проверить, что при Init Прикладная фабрика на запрос количества данных (getBatchCount) возращает количество данных больше 0. Если это не так, вернитесь к шагу 1.

  6. 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 — любые актуальные версии в соответствии с платформенными зависимостями.

  7. 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.

Работа с потоком#

  1. Поток прикладного журнала запущен. Данные не доходят до КАП.

    При включении потока данные уходят в Прикладной журнал, появляются в интерфейсе, но не доходят до КАП и Archiving.

    Этапы анализа проблемы:

    1. Удостоверьтесь, что плагин EXPORT_FD4 включен в зоне ПЖ, через которую работает Прикладная фабрика. Для этого:

      1. Зайдите в интерфейс Прикладного Журнала.

      2. Выберите зону ПЖ, в которой работает ПФ.

      3. В меню слева выберите Плагины (ПФ работает через ММТ) или Плагины Kafka (ПФ работает через Kafka);

      4. Убедитесь, что плагин EXPORT_FD4 есть в списке и включен:

      5. Если плагина нет, обратитесь в поддержку ПЖ, чтобы добавить плагин EXPORT_FD4 для зоны и типа данных, в которых работает прикладная фабрика. Если плагин присутствует, но выключен, его необходимо включить. На форме Плагины плагин EXPORT_FD4 может присутствовать в списке, но включить его нельзя. В таком случае он не активен, что равносильно его отсутствию в данной зоне ПЖ.

      6. Если Плагин присутствует в зоне и включен, переходите к следующему пункту.

  2. Проверьте, что плагин EXPORT_FD4 включен для типа данных прикладной фабрики. Для этого:

    1. Зайдите в интерфейс Прикладного Журнала.

    2. Выберите зону ПЖ, в которой работает ПФ.

    3. В фильтре сделайте выборку от 00:00 даты, когда производится проверка, до 23:59 даты, когда производится проверка.

    4. Нажмите Найти. Должны отобразиться журналы, которые обработаны ПЖ за данный период так, как представлено на картинке ниже:

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

    6. Если этой иконки нет, обратитесь в поддержку ПЖ, чтобы добавить в конфигурацию плагина в данной зоне ПЖ тип данных, через который работает Прикладная фабрика. (на картинке выше ORM_CV).

    7. Если иконка есть, но вместо зеленой галочки - знак загрузки:

      • Зайдите в пункт меню Плагины (ПФ работает через ММТ) или Плагины Kafka (ПФ работает через Kafka) и проверьте, работают ли они. Если плагин активен, отключите и затем повторно включите его через 10 секунд.

      • Проверьте, активны ли узлы Archiving. Для этого выполните инструкцию из раздела «Проверка работоспособности тестового окружения».

      • Если плагин активен, его перезагрузка не помогла, а узлы Archiving в рабочем состоянии, обратитесь в службу поддержки Platform V Archiving;

    8. Если иконка есть, и на ней присутствует зеленая галочка, как на картинке выше, то данные успешно отправляются в Archiving. Совместно с службой поддержки Platform V Archiving выполните анализ того, где они пропадают на пути от ПЖ до КАП.

Работа с ТКД#

  1. Данные не попадают в топики.

    Пример текста ошибки:

    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 []
    

    Этапы анализа проблемы:

    1. Убедитесь, что модуль источника запущен.

    2. Проверьте, что зона модуля Kafka/ММТ источника в конфигурации sourceDescription.yaml совпадает с реально используемой зоной источника в перекрытии Platform V Configuration по артефакту транспорт Kafka.

Ошибки обработки журналов со стороны КАП#

Ошибки, вызванные невозможностью применить data-container на стороне КАП и возвращаемые в ответе коммита КАП в топик коммитов.

Общий формат — строка, первая часть (до вертикальной черты) — код ошибки, вторая — информационные параметры. В ПЖ будет отображена точно в переданном виде.

Название

Код

Формат описания

Описание ошибки

Ошибка нарушения последовательности операций

ERROR_WRONG_OPERATION_SEQUENCE

ERROR_WRONG_OPERATION_SEQUENCE|type[%s], key[%s], operation[%s], version[%s], hversion[%s], timestamp[%s]

Ошибка нарушения последовательности получения (перепутан порядок операций удаление-вставка, удаление-изменение и так далее)

Неверная версия

ERROR_WRONG_VERSION

ERROR_WRONG_VERSION|type[%s], key[%s], operation[%s], version[%s], hversion[%s], timestamp[%s]

Ошибка возникает, если передана неверная версия (пропуск версии, понижение версии)

Неверный формат

ERROR_CONTAINER_DATA

ERROR_CONTAINER_DATA|type[%s], key[%s], operation[%s], version[%s], hversion[%s], timestamp[%s], description[%s]

Любое отклонение от утвержденного протоколом формата контейнера, включая ошибку разбора, несоответствие схеме и так далее

Нотация параметров:

  • type — передаваемый Archiving тип;

  • key — передаваемый в контейнере ключ;

  • operation — тип операции из контейнера;

  • version — версия из контейнера;

  • hversion — версия HBase;

  • timestamp — время возникновения ошибки;

  • description — описание ошибки (только для ситуации неверного формата). В случае исключения параметр записывается исключение без stack trace.

Примечание:

Параметры могут отсутствовать или быть недоступны в точке возникновения ошибки - в таком случае они заполняются значением [  ].

Параметры могут иметь значение null — в таком случае они заполняются как ["null"].

Пример разбора ошибки#

  1. Получено сообщение: 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.].

  2. Согласно мнемонике, это ошибка со стороны ЦС (см. таблицу выше) - неверный формат. Далее необходимо проанализировать сообщение по полям (названия полей см. в таблице выше).

  3. Итоговое сообщение об ошибке: description[Part of the data is absent.].