Menu

#996 "Выгрузить-Загрузить файл с данными" - возникла ошибка

v4.2
closed-postponed
None
5
2015-08-02
2015-03-30
No

при загрузке archive.datafile с очисткой системы получил сообщение
"Процесс "Пример 10-2" не может быть выгружен т.к. от него зависит процесс "Пример 10-1"
21:28:31,148 ERROR [ru.runa.wfe.service.interceptors.EjbExceptionSupport] (http--127.0.0.1-8080-7) ejb call error: DefinitionServiceBean.undeployProcessDefinition(Actor{id=1, name=Administrator, code=-1}, Пример 10-2, null): ru.runa.wfe.execution.ParentProcessExistsException
at ru.runa.wfe.definition.logic.DefinitionLogic.undeployProcessDefinition(DefinitionLogic.java:188) [wfe-core-4.2.0-SNAPSHOT.jar:4.2.0-SNAPSHOT-${svn.revision}]
at ru.runa.wfe.service.impl.DefinitionServiceBean.undeployProcessDefinition(DefinitionServiceBean.java:127) [wfe-service-4.2.0-SNAPSHOT.jar:]
Разве при загрузке с очисткой системы эта ошибка должна быть? Насколько понял из-за этой ошибки процесс "Пример 10-2" не был заменен на процесс из архива?

1 Attachments

Discussion

1 2 3 > >> (Page 1 of 3)
  • Andrei Mikheev

    Andrei Mikheev - 2015-03-30
    • assigned_to: Alexeev Vitaly
     
  • Andrei Mikheev

    Andrei Mikheev - 2015-03-30

    добавил еще attachment

     
  • Alexeev Vitaly

    Alexeev Vitaly - 2015-03-30

    [r6164] бранч для работ по тикету

     

    Related

    Commit: [r6164]

  • vromav

    vromav - 2015-03-31

    Возникает ParentProcessExistsException, который вызывается в ru.runa.wfe.definition.logic.DefinitionLogic.undeployProcessDefinition(User, String, Long)

    Насколько понял, при undeploy definition процесса, выполняется проверка "не является ли запущенный процесс этого definition БП, порожденным в parent процессе"

    Эту проверку не надо делать в случае загрузки datafile с включенной опцией полной очистки системы.

     
  • Alexeev Vitaly

    Alexeev Vitaly - 2015-04-01

    У бага сложная воспроизводимость из-за:

    if (nodeProcessDAO.getNodeProcessByChild(process.getId()) != null) 
    

    Иными словами, если корневой процесс удален раньше дочерних, что чаще всего и случается, то никакой ошибки не возникает.
    Решение видится в сортировке массива ru.runa.wfe.definition.dto.WfDefinition через интерфейс Comparable, что наверное изначально и планировалось, но не было до конца реализовано. Сейчас проверка дает только эквивалентность по имени.

     
  • Alexeev Vitaly

    Alexeev Vitaly - 2015-04-01

    [r6172] - сортировка списка WfDefinition перед полной очисткой

     

    Related

    Commit: [r6172]

  • Alexeev Vitaly

    Alexeev Vitaly - 2015-04-01
    • status: open --> pending-fixed
     
  • vromav

    vromav - 2015-04-12

    Собрал ear из бранча wfe.996, но не смог проверить кейс загрузки datafile

    т.к. сейчас попытка зайти в пункт "Запустить процесс" или экспорт процесса из DevStudio на сервер приводит к переполнению стека!

     

    Last edit: vromav 2015-04-12
    • Alexeev Vitaly

      Alexeev Vitaly - 2015-04-12

      Скорее всего проблема какая-то локальная. Сервер из wfe.996 и gpd из транка - таких проблем не заметил, хороший баг вывалился бы сразу.

       
  • vromav

    vromav - 2015-04-12
    • status: pending-fixed --> open
     
  • vromav

    vromav - 2015-04-12

    Скорее всего проблема какая-то локальная.

    локальная или нет, проблема проявляется на уже существующей БД

    1). Удалил БД из тестового сервера, переполнение не возникает, но при экспорте процессов из DS (trunk), получаю ошибку:

    "javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,30059]
    Message: The element type "value" must be terminated by the matching end-tag "</value>"."

    2). Сделал импорт archive.datafile в систему, с очисткой, все проблемы пропали.

    Ссылка на тестовый сервер (с БД), на которой возникают проблемы (около 430Мб):
    https://cloud.mail.ru/public/29sSK3EkpZiZ/jboss7_996.zip

     
    • Alexeev Vitaly

      Alexeev Vitaly - 2015-04-14

      [r6217] - исключение из xml-сериализации нового поля, необходимого для компарации

      Мой косяк. Новое поле в класс добавил, а в схеме его нет. Добавил его в игнор, эксцепшна больше быть не должно.

       

      Related

      Commit: [r6217]

  • Alexeev Vitaly

    Alexeev Vitaly - 2015-04-14

    [r6215] - упрощение логики компарации WfDefinition

     

    Related

    Commit: [r6215]

  • Alexeev Vitaly

    Alexeev Vitaly - 2015-04-14
    • status: open --> pending-fixed
     
  • vromav

    vromav - 2015-04-15

    Исправлено только это "javax.xml.stream.XMLStreamException: ParseError at [row,col]" (возникало ранее при экспорте из DevStudio)

    Более важная проблема, связанная с переполнением стека осталась, и судя по коммиту r6217, похоже даже не решалась.

    StackOverflow получал как на существующей БД - при попытке зайти в пункт "Запустить процесс", так и на "чистой" БД после загрузки archive.datafile

    08:49:30,261 ERROR [ru.runa.wfe.service.interceptors.EjbExceptionSupport] (http--127.0.0.1-8080-1) ejb call error: DefinitionServiceBean.getLatestProcessDefinitions(Actor{id=1, name=Administrator, code=-1}, BatchPresentation{type=DEFINITION, name=label.batch_presentation_default_name}): java.lang.StackOverflowError
    at java.util.HashMap$EntryIterator.<init>(HashMap.java:845) [rt.jar:1.7.0_01]

    ..

    Caused by: java.lang.StackOverflowError
    at java.util.HashMap$EntryIterator.<init>(HashMap.java:845) [rt.jar:1.7.0_01]
    at java.util.HashMap$EntryIterator.<init>(HashMap.java:845) [rt.jar:1.7.0_01]

    Еще одна проблема на которую натыкался, это "...Definition 7 does not exists..." при импорте процесса в DevStudio с сервера WFE. Выполнял экспорт/импорт процесса, и в какой-то момент получил ошибку:

    09:56:06,627 DEBUG [apicall] (http--127.0.0.1-8080-7) 1 ms: ExecutorServiceBean.getExecutor(Actor{id=1, name=Administrator, code=-1}, 1)
    09:56:06,631 ERROR [ru.runa.wfe.service.interceptors.EjbExceptionSupport] (http--127.0.0.1-8080-7) ejb call error: DefinitionServiceBean.getProcessDefinitionFile(Actor{id=1, name=Administrator, code=-1}, 7, par): ru.runa.wfe.definition.DefinitionDoesNotExistException: Definition 7 does not exists.
    at ru.runa.wfe.definition.dao.DeploymentDAO.checkNotNull(DeploymentDAO.java:66) [wfe-core-4.2.0-SNAPSHOT.jar:4.2.0-SNAPSHOT-${svn.revision}]
    at ru.runa.wfe.definition.dao.DeploymentDAO.checkNotNull(DeploymentDAO.java:42) [wfe-core-4.2.0-SNAPSHOT.jar:4.2.0-SNAPSHOT-${svn.revision}]

    При этом на сервере отсутствовал Definition с id равным 7 (как в ошибке)

    Возможно DefinitionDoesNotExistException не связан с общей темой тикета.

     

    Last edit: vromav 2015-04-15
    • Alexeev Vitaly

      Alexeev Vitaly - 2015-04-16

      StackOverflow не могу воспроизвести локально, в т.ч. и с использованием приаттаченного состояния системы. Прошу описать алго создания, экспортирования и запуска одного БП изолированно, который даст стабильное воспроизведение.

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

       
  • vromav

    vromav - 2015-04-15
    • status: pending-fixed --> open
     
  • Alexeev Vitaly

    Alexeev Vitaly - 2015-04-16
    • status: open --> pending
     
  • vromav

    vromav - 2015-04-16

    StackOverflow не могу воспроизвести локально, в т.ч. и с использованием приаттаченного состояния системы.

    Слил на другую систему приаттаченый сервер, заменил ear на текущий wfe.996

    Запустил сервер, вошел в web интерфейс, нажал на пункт "Запустить процесс" - StackOverflow.

    Сделал все тоже самое, но заменил ear на trunk версию - проблемы нет.

    Прошу описать алго создания, экспортирования и запуска одного БП изолированно, который даст стабильное воспроизведение.

    У меня оно и так стабильно воспроизводиться уже на 2-х системах. Попробую выяснить из-за чего конкретно проблема.

     
  • vromav

    vromav - 2015-04-16

    Есть предположение, что в trunk были какие-то изменения, которые попросту еще не вошли в wfe.996

     
  • vromav

    vromav - 2015-04-16

    Смержил r6217 из wfe.996 с trunk wfe
    Проблема воспроизводится

     

    Last edit: vromav 2015-04-16
    • Alexeev Vitaly

      Alexeev Vitaly - 2015-04-16

      Как именно она воспроизводится? Какой минимальный кейс? Что должно быть в БП? Как он должен экспортироваться? Какие настройки должны быть на wfe? Какая конкретно последовательность действий инициирующих проявление ошибки?

       
  • vromav

    vromav - 2015-04-16

    Как именно она воспроизводится? Какой минимальный кейс?

    А разве я это не описал?

    "Слил на другую систему приаттаченый сервер, заменил ear на текущий wfe.996
    Запустил сервер, вошел в web интерфейс, нажал на пункт "Запустить процесс" - StackOverflow."

    Ок, максимально упрощаю задачу, смотри скринкаст и выполняй следующие действия:

    • запустить сервер с чистой БД (ear из wfe.996)
    • загрузить два приаттаченых сюда определения процессов (один простой, один с композицией)

    В итоге повиснешь в

    private boolean isSubprocessOf(Map<String, SubprocessDefinition=""> supprocesses)

    Проблема исследована с помощью дебага приаттаченого сюда ранее сервера со всеми процессами, настройками и т.д.

    Воспроизводимость была и есть стабильная, проверено на нескольких машинах. У тебя просто не может не повториться.

     
    • Alexeev Vitaly

      Alexeev Vitaly - 2015-04-17

      На приаттаченных сэмплах есть воспроизведение, будет фикс.

       
  • vromav

    vromav - 2015-04-16
    • status: pending --> open
     
1 2 3 > >> (Page 1 of 3)