alexkmbk / RegEx1CAddin

Native API component for executing regular expressions on 1C: Enterprise platform / Внешняя Native API компонента для выполнения регулярных выражений на платформе 1С:Предприятие 8
The Unlicense
173 stars 32 forks source link

Падение на Linux на 22 платформе (всех) #18

Open DitriXNew opened 1 year ago

DitriXNew commented 1 year ago

Падение очень интересное - сервер перезагружаем, компонента подключается успешно, все хорошо. Делаем первый вызов - все работает отлично. Делаем второй - устанавливаются аттрибуты Global и т.д., а вот на вызове уже метода сравнения - падает. Делаем третий раз - или выдается ошибка "Error calling constructor (AddIn.Component.RegEx)"

If AttachAddIn("CommonTemplate.addfun_RegExp", "Component") Then
        Regex = New("AddIn.Component.RegEx");

или зависает 1С. И все. Причем - установка компоненты отрабатывает.

alexkmbk commented 1 year ago

@DitriXNew На клиент-сервере пока не тестировал, но на файловой базе, на учебной версии 8.3.22.1709 под Ubuntu отрабатывает без ошибок и на клиенте и в серверном контексте и на клиенте в асинхронном режиме.

DitriXNew commented 1 year ago

@alexkmbk ну вот у меня в клиент сервере на debian 10, на 8.3.22.1709 и на поздних - вот такое странное поведение. Что можно скинуть чтобы понять причину? Тех журнал поможет?

alexkmbk commented 1 year ago

@alexkmbk ну вот у меня в клиент сервере на debian 10, на 8.3.22.1709 и на поздних - вот такое странное поведение. Что можно скинуть чтобы понять причину? Тех журнал поможет?

На счет тех журнала не уверен, но если удасться поймать какое-либо исключение было бы здорово. У меня ещё пока просто нет машины под рукой на которой можно было бы развернуть этот тестовый сценарий.

DitriXNew commented 1 year ago

Оказывается оно успешно падает и на винде, на файловой 8.3.22.1750 изображение Т.е. объект создается, но вот код: Regex.Global = True; Вызывает ошибку. А на 21 платформе - проблем нет. В журнале регистраций - пусто. Что логично.

alexkmbk commented 1 year ago

@DitriXNew У меня не воспроизводится на 8.3.22.1750 x64 на файловой базе под Windows 11, как в клиентском так и в серверном контексте.

DitriXNew commented 1 year ago

@alexkmbk да, это уже смешно, перенес базу на новый сервер, где тоже 1750 и там все работает корректно. На скуле. Сейчас на контуре запустил тесты на 8.3.22.1750, 8.3.22.1851 и 8.3.21.1709. На всех 22 - упало, а на 21 прошло. Открыл историю теста, а он оказывает иногда проходит, т.е. падения не 100%. Но там контур, он постоянно базы пересоздает. изображение

Ладно, что тут гадать, закрываю тогда тикет, если будет что-то более конкретное, тогда приду снова

alexkmbk commented 1 year ago

@DitriXNew Если будет желание можете попробовать потестировать эту версию (под Windows). Она просто пересобрана на новом тулсете Visual Studio и на другой машине с памятью on-die ECC. RegEx1CAddin_15.zip

DitriXNew commented 1 year ago

@alexkmbk на проде под виндой - все хорошо, а вот в контуре, тоже на винде в файловых - проблема плавающая, 90% случаев падает, и изредка проходит. Это я про сборку что в архиве.

alexkmbk commented 1 year ago

@alexkmbk на проде под виндой - все хорошо, а вот в контуре, тоже на винде в файловых - проблема плавающая, 90% случаев падает, и изредка проходит. Это я про сборку что в архиве.

Большое спасибо что нашли время потестировать и за фидбек! Кстати, уже в 23 платформе дожны появиться встроенные регулярки, и вроде бы даже с поддержкой групп (хотя из анонса это было не очевидно). Как думаете, есть ли смысл пытаться все равно решить проблему?

DitriXNew commented 1 year ago

На самом деле конкретно нам - это не особо критично пока, так как в проде компонента работает, хотя и тоже падает, но этак раз в неделю, так что это мелочь. На счет 23 платформы - пока рано говорить, она просто мега баганутая, особенно с этими их списками в виде меток. Так что думаю что еще пол годика надо будет сидеть на том что есть.

Но в любом случае - ваша компонента нам очень сильно помогла, помогла не писать кучу костылей, так что теплая память о ней сохранится даже при переходе на 8.3.23 :)

alexkmbk commented 1 year ago

Но в любом случае - ваша компонента нам очень сильно помогла, помогла не писать кучу костылей, так что теплая память о ней сохранится даже при переходе на 8.3.23 :)

Спасибо :)

ADoroshkevich commented 1 year ago

@DitriXNew Если будет желание можете попробовать потестировать эту версию (под Windows). Она просто пересобрана на новом тулсете Visual Studio и на другой машине с памятью on-die ECC. RegEx1CAddin_15.zip

Добрый день! У нас так же возникает проблема на Windows. Новая версия к сожалению не помогла. По поводу 22 платформы 1С - там нет всех нужных функций, поэтому кажется что есть смысл победить баг)

Помимо описанной проблемы у нас также возникает ошибка аллоцирования памяти, если в одном rphost запускать несколько сеансов с вызовом компоненты. Если каждый сеанс в отдельном rphost, то всё работает корректно.

Ошибка возникает не каждый раз. но несколько раз в день стабильно

alexkmbk commented 1 year ago

@ADoroshkevich Спасибо за обратную связь! Похоже на проблемы с thread safety.

alexkmbk commented 1 year ago

@ADoroshkevich @DitriXNew В качестве способа обхода проблемы, можно попробовать задать значение четвертого параметра метода ПодключитьВнешнююКомпоненту как ТипПодключенияВнешнейКомпоненты.НеИзолированно (именно НеИзолированно) Мне удалось воспроизвести стабильное падение платформы при параллельном нагрузочном тестировании в разных сеансах на сервере и установка этого параметра позволила избежать падения. Для тестов использовалась новая! сборка компоненты (изменения только под Windows): RegEx1CAddin_15.zip

ADoroshkevich commented 1 year ago

@ADoroshkevich @DitriXNew В качестве способа обхода проблемы, можно попробовать задать значение четвертого параметра метода ПодключитьВнешнююКомпоненту как ТипПодключенияВнешнейКомпоненты.НеИзолированно (именно НеИзолированно) Мне удалось воспроизвести стабильное падение платформы при параллельном нагрузочном тестировании в разных сеансах на сервере и установка этого параметра позволила избежать падения. Для тестов использовалась новая! сборка компоненты (изменения только под Windows): RegEx1CAddin_15.zip

Добрый день! К сожалению не помогло

alexkmbk commented 1 year ago

@ADoroshkevich @DitriXNew В качестве способа обхода проблемы, можно попробовать задать значение четвертого параметра метода ПодключитьВнешнююКомпоненту как ТипПодключенияВнешнейКомпоненты.НеИзолированно (именно НеИзолированно) Мне удалось воспроизвести стабильное падение платформы при параллельном нагрузочном тестировании в разных сеансах на сервере и установка этого параметра позволила избежать падения. Для тестов использовалась новая! сборка компоненты (изменения только под Windows): RegEx1CAddin_15.zip

Добрый день! К сожалению не помогло

А вы пробовали новую сборку которую я выложил в предыдущем сообщении?

ADoroshkevich commented 1 year ago

@ADoroshkevich @DitriXNew В качестве способа обхода проблемы, можно попробовать задать значение четвертого параметра метода ПодключитьВнешнююКомпоненту как ТипПодключенияВнешнейКомпоненты.НеИзолированно (именно НеИзолированно) Мне удалось воспроизвести стабильное падение платформы при параллельном нагрузочном тестировании в разных сеансах на сервере и установка этого параметра позволила избежать падения. Для тестов использовалась новая! сборка компоненты (изменения только под Windows): RegEx1CAddin_15.zip

Добрый день! К сожалению не помогло

А вы пробовали новую сборку которую я выложил в предыдущем сообщении?

Да, именно её - 15-ую

alexkmbk commented 1 year ago

@ADoroshkevich @DitriXNew В качестве способа обхода проблемы, можно попробовать задать значение четвертого параметра метода ПодключитьВнешнююКомпоненту как ТипПодключенияВнешнейКомпоненты.НеИзолированно (именно НеИзолированно) Мне удалось воспроизвести стабильное падение платформы при параллельном нагрузочном тестировании в разных сеансах на сервере и установка этого параметра позволила избежать падения. Для тестов использовалась новая! сборка компоненты (изменения только под Windows): RegEx1CAddin_15.zip

Добрый день! К сожалению не помогло

А вы пробовали новую сборку которую я выложил в предыдущем сообщении?

Да, именно её - 15-ую

Просто предыдущая сборка тоже была 15-я, но эта уже новая ))

ADoroshkevich commented 1 year ago

@ADoroshkevich @DitriXNew В качестве способа обхода проблемы, можно попробовать задать значение четвертого параметра метода ПодключитьВнешнююКомпоненту как ТипПодключенияВнешнейКомпоненты.НеИзолированно (именно НеИзолированно) Мне удалось воспроизвести стабильное падение платформы при параллельном нагрузочном тестировании в разных сеансах на сервере и установка этого параметра позволила избежать падения. Для тестов использовалась новая! сборка компоненты (изменения только под Windows): RegEx1CAddin_15.zip

Добрый день! К сожалению не помогло

А вы пробовали новую сборку которую я выложил в предыдущем сообщении?

Да, именно её - 15-ую

Просто предыдущая сборка тоже была 15-я, но эта уже новая ))

Сутки - полёт нормальный, ни одного падения Спасибо огромное!

ADoroshkevich commented 1 year ago

К сожалению падения возобновились(

alexkmbk commented 1 year ago

К сожалению падения возобновились(

Провел большое количество тестов, и прихожу к выводу что вероятно проблема не на стороне компоненты, поскольку падение платформы с режимом подключения компоненты "Изолированно" (при нагрузочном параллельном тестировании) происходит даже при простой инициализации объекта с отключенным функционалом, где код инициализации такой же как в примере от 1С. Ну то есть удается воспроизвести падение даже по сути на компоненте-заглушке, без вызова её методов. Но надо сказать что у меня падение просиходит исключительно при нагрузочном тестировании когда в цикле вызывается большое количество созданий экземпляров объекта компоненты одновременно в двух сеансах в серверном контексте и только в режиме подключения "Изолированно". Может быть в будущих версиях платформы это исправят, но на текущий момент у меня пока нет идей что можно с этим сделать. Поэтому, могу дать рекомендацию или пока не обновляться на новые версии платформы, а далее или переходить уже на штатный механизм регулярок либо может быть в будущих версиях платформы это пофиксят.

Но если у кого-то есть решение этой проблемы, присылайте пожалуйста пулл реквесты, буду рад их замержить.

ADoroshkevich commented 1 year ago

Алексей, обновились на 8.3.23.1739 - ваша компонента работает отлично! Ошибок не наблюдаем уже неделю. Спасибо огромное за ваш труд!

bapho-bush commented 1 year ago

Есть возможность собрать дампы падения? Чем более полный, тем лучше. Интересно посмотреть что с процессом в этот момент происходит.