Загрузить изображение для проекта: 'Citeck Community'
  1. Citeck Community
  2. ECOSCOM-5357

Script /citeck/assocs takes too long to process

    XMLWordДля печати

Детали задачи

    • Icon: Ошибка Ошибка
    • Решение: Нет решения
    • Icon: Medium Medium
    • Не заполнено
    • Community Core 3.45.4
    • Не заполнено
    • Critical/Crash

    Описание

      Необходимо оптимизировать скрипт /citeck/assocs из ecos-base-core-repo. Сейчас в БД уходят несколько тяжеловесных запросов. Пример одного из таких:

      ect
      assoc.id as id,
      sourceNode.id as sourceNodeId,
      sourceStore.protocol as sourceNodeProtocol,
      sourceStore.identifier as sourceNodeIdentifier,
      sourceNode.uuid as sourceNodeUuid,
      targetNode.id as targetNodeId,
      targetStore.protocol as targetNodeProtocol,
      targetStore.identifier as targetNodeIdentifier,
      targetNode.uuid as targetNodeUuid,
      assoc.type_qname_id as type_qname_id,
      assoc.assoc_index as assoc_index
      from
      alf_node_assoc assoc
      join alf_node sourceNode on (sourceNode.id = assoc.source_node_id)
      join alf_store sourceStore on (sourceStore.id = sourceNode.store_id)
      join alf_node targetNode on (targetNode.id = assoc.target_node_id)
      join alf_store targetStore on (targetStore.id = targetNode.store_id)where
      targetNode.id = ? 

      Если у ноды много ассоциаций, то один или несколько подобных запросов убивают работоспособность стенда.

      1. Открыть проект ecos-community-core
      2. Открыть ecos-base-core-repo/src/main/resources/alfresco/templates/webscripts/ru/citeck/assocs/assocs.get.js
      3. Конструкции вида node.assocs['some_assoc'], node.childAssocs['some_child_assoc'], node.sourceAssocs['some_source_assoc'] возвращают сначала все ассоциации, фильтрация по нужному типу происходит уже внутри скрипта, данную фильтрацию необходимо выполнять на уровне запросов самой БД
      4. Ограничение кол-ва возвращаемых ассоциаций происходит внутри скрипта (ASSOCS_LIMIT), необходимо это ограничение перенести на уровень запросов самой БД
      5. Если возможно, то возвращать ассоциации, дочерние ассоциации и ассоциации источников одним запросом

      Как вариант: взять EcosNodeService, расширить функционал + создать EcosNodeServiceJs для работы в JavaScript.

      Вложенные файлы

        Активность

          Люди

            Не назначен Не назначен
            pavel.tkachenko@citeck.ru Pavel Tkachenko (Неактивный)
            Голоса:
            0 Голосовать за эту задачу
            Наблюдатели:
            1 Начать наблюдение за этой задачей

            Даты

              Создано:
              Обновленo: