# Проблемы и способы устранения

💥 - проблема изучается и ищется вариант решения  
✅ - решение найдено и зафиксировано  
📛 - на текущий момент решение отсутствует

# ✅ Зацикливается установка на 5ом шаге

При установке на Ubuntu 20.04 на 5ом шаге установка зацикливается. Проблема состоит в некорректном ответе DNS при инициализации rbbitmq.

---

<p class="callout success">Необходимо создать (отредактировать) resolv.conf и прописать только одну строчку:  
`nameserver 127.0.0.53`</p>

# ✅ Ошибка загрузки DLL в глобальных модулях при обновлении библиотек

При обновлении пакетов, если были установлены новые внешние пакеты, в глобальных модулях возникают ошибки следующего вида:

`ERROR 2020-07-31 12:05:33,589 [14] EleWise.ELMA.Logging.Logger - Error at load types from assembly HMS.Configuration, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null System.IO.FileLoadException: Could not load file or assembly 'DiadocApi, Version=2.2.0.0, Culture=neutral, PublicKeyToken=d18fd4c7ad3c243e' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)`  
`File name: 'DiadocApi, Version=2.2.0.0, Culture=neutral, PublicKeyToken=d18fd4c7ad3c243e'`

---

Варианта проблемы может быть два:

- Самостоятельно в конфигурации заказчиком используются вручную или еще как установленные пакеты (библиотеки) и на них в глобальных модулях, объектах и т.д. используются ссылки (using).
- Дополнительные модули (компоненты) сторонних разработчиков ELMA (партнеров), в которых внешние библиотеки (пакеты) прописываются для точек расширения и методов.

<p class="callout success">В первом случае следует самостоятельно следить за пересборкой глобальных модулей, скриптов объектов, документов, пользовательских расширений и отчетов. Лучше отказаться от использования таких библиотек и использовать системные сборки и сборки из основного дистрибутива из пространства имен EleWise.ELMA.</p>

<p class="callout success">Во втором случае должна присутствовать "обертка" в модулях сторонних разработчиков, которая будет скрывать прямые ссылки на элементы внешних сборок.</p>

# ✅ System.Data.SqlClient.SqlException (0x80131904): Invalid column name 'Status'

При попутке обновления страницы в мониторе процессов с ошибками возникает следующее окно с ошибкой:

[![image-1596520973170.png](https://kb.randmgroup.ru/uploads/images/gallery/2020-08/scaled-1680-/yZx0SAncL6cJKBI5-image-1596520973170.png)](https://kb.randmgroup.ru/uploads/images/gallery/2020-08/yZx0SAncL6cJKBI5-image-1596520973170.png)

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

В логах сервера видим следующее:

`ERROR 2020-08-04 09:00:05,925 [114] EleWise.ELMA.Workflow.Processes.Web.Controllers.WorkflowQueueController - System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> NHibernate.Exceptions.GenericADOException: could not execute query<br></br>[ SELECT top(20) tv.Id as Id613_0_, tv.Uid as Uid613_0_, tv.ElementUid as ElementUid613_0_, tv.CreationDate as Creation4_613_0_, tv.Attempt as Attempt613_0_, tv.LastExecuteDate as LastExec6_613_0_, tv.NextExecuteDate as NextExec7_613_0_, tv.LastError as LastError613_0_, tv.SkipExecution as SkipExec9_613_0_, tv.SkipConnectorUid as SkipCon10_613_0_, tv.Timeout as Timeout613_0_, tv.LastExceptionData as LastExc12_613_0_, tv.ServerConnectionUid as ServerC13_613_0_, tv.Instance as Instance613_0_, tv.Author as Author613_0_, tv.BackgroundOperation as Backgro16_613_0_ FROM (SELECT wqi.Id, wqi.Uid, wqi.Instance, wqi.ElementUid, wqi.CreationDate, wqi.Attempt, wqi.LastExecuteDate, wqi.NextExecuteDate, wqi.LastError, wqi.Author, wqi.SkipExecution, wqi.SkipConnectorUid, wqi.Timeout, wqi.LastExceptionData, 0 OnceExecuteStatus, wqi.ServerConnectionUid, wqi.BackgroundOperation<br></br>FROM WorkflowQueueItem wqi WITH(NOLOCK)<br></br>LEFT JOIN WorkflowInstance wi WITH(NOLOCK) ON wi.Id = wqi.Instance<br></br>LEFT JOIN WorkflowProcess wp WITH(NOLOCK) ON wi.Process = wp.Id<br></br>LEFT JOIN ProcessHeader ph WITH(NOLOCK) ON wp.Header = ph.Id<br></br>WHERE Attempt > 0 ) tv ORDER BY Status ]<br></br>[SQL: SELECT top(20) tv.Id as Id613_0_, tv.Uid as Uid613_0_, tv.ElementUid as ElementUid613_0_, tv.CreationDate as Creation4_613_0_, tv.Attempt as Attempt613_0_, tv.LastExecuteDate as LastExec6_613_0_, tv.NextExecuteDate as NextExec7_613_0_, tv.LastError as LastError613_0_, tv.SkipExecution as SkipExec9_613_0_, tv.SkipConnectorUid as SkipCon10_613_0_, tv.Timeout as Timeout613_0_, tv.LastExceptionData as LastExc12_613_0_, tv.ServerConnectionUid as ServerC13_613_0_, tv.Instance as Instance613_0_, tv.Author as Author613_0_, tv.BackgroundOperation as Backgro16_613_0_ FROM (SELECT wqi.Id, wqi.Uid, wqi.Instance, wqi.ElementUid, wqi.CreationDate, wqi.Attempt, wqi.LastExecuteDate, wqi.NextExecuteDate, wqi.LastError, wqi.Author, wqi.SkipExecution, wqi.SkipConnectorUid, wqi.Timeout, wqi.LastExceptionData, 0 OnceExecuteStatus, wqi.ServerConnectionUid, wqi.BackgroundOperation<br></br>FROM WorkflowQueueItem wqi WITH(NOLOCK)<br></br>LEFT JOIN WorkflowInstance wi WITH(NOLOCK) ON wi.Id = wqi.Instance<br></br>LEFT JOIN WorkflowProcess wp WITH(NOLOCK) ON wi.Process = wp.Id<br></br>LEFT JOIN ProcessHeader ph WITH(NOLOCK) ON wp.Header = ph.Id<br></br>WHERE Attempt > 0 ) tv ORDER BY Status ] ---> System.Data.SqlClient.SqlException: Invalid column name 'Status'.`

---

Получено решение от СП вендора:

<p class="callout success">Создать резервную копию базы данных. После этого выполнить следующий запрос в БД:  
`delete from BlobStoreHolder where [Key] like '%WorkflowQueueItems%'<br></br>`Он удалит все закешированные данные по таблице, в которой возникает ошибка.</p>

<p class="callout warning">Обязательно надо перезапустить сервер.  
Для процессов, которые прерваны, но имеют счетчик ошибок 9+ придется ручками Выполнить обработку, чтобы они ушли из списка:</p>

[![image-1596521847871.png](https://kb.randmgroup.ru/uploads/images/gallery/2020-08/scaled-1680-/wJPBnE3QAa5bk2pn-image-1596521847871.png)](https://kb.randmgroup.ru/uploads/images/gallery/2020-08/wJPBnE3QAa5bk2pn-image-1596521847871.png)

# 💥Aspose.Cells возвращает дату в формате d/M/yyyy или d/M/yy

Поле обновления на 3.15.21+ установлена новая версия компонента Aspose.Total 20+. В результате формат даты в ячейках Excel по умолчанию устанавливается или в d/M/yy, или в d/M/yyyy

# ✅ Ошибка JSON на странице "Очередь исполнения"

При переходе с версии 3.13 (и возможно более ранних) на 3.15 может возникнуть вот такая проблема:

[![image-1598868529415.png](https://kb.randmgroup.ru/uploads/images/gallery/2020-08/scaled-1680-/wpU5Apy22hV4dYGS-image-1598868529415.png)](https://kb.randmgroup.ru/uploads/images/gallery/2020-08/wpU5Apy22hV4dYGS-image-1598868529415.png)

А в логах видим:

`ERROR [CallContextUid=366d0238-be7b-46e0-b0a2-c74447312d0b] 2020-08-31 12:28:32,965 [82] EleWise.ELMA.Workflow.Processes.Web.Controllers.WorkflowQueueController - System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> NHibernate.Exceptions.GenericADOException: could not execute query<br></br>[ SELECT top(15) tv.Id as Id509_0_, tv.Uid as Uid509_0_, tv.ElementUid as ElementUid509_0_, tv.CreationDate as Creation4_509_0_, tv.Attempt as Attempt509_0_, tv.LastExecuteDate as LastExec6_509_0_, tv.NextExecuteDate as NextExec7_509_0_, tv.LastError as LastError509_0_, tv.SkipExecution as SkipExec9_509_0_, tv.SkipConnectorUid as SkipCon10_509_0_, tv.Timeout as Timeout509_0_, tv.LastExceptionData as LastExc12_509_0_, tv.ServerConnectionUid as ServerC13_509_0_, tv.Instance as Instance509_0_, tv.Author as Author509_0_, tv.BackgroundOperation as Backgro16_509_0_ FROM (SELECT wqi.Id, wqi.Uid, wqi.Instance, wqi.ElementUid, wqi.CreationDate, wqi.Attempt, wqi.LastExecuteDate, wqi.NextExecuteDate, wqi.LastError, wqi.Author, wqi.SkipExecution, wqi.SkipConnectorUid, wqi.Timeout, wqi.LastExceptionData, 0 OnceExecuteStatus, wqi.ServerConnectionUid, wqi.BackgroundOperation<br></br>FROM WorkflowQueueItem wqi WITH(NOLOCK)<br></br>LEFT JOIN WorkflowInstance wi WITH(NOLOCK) ON wi.Id = wqi.Instance<br></br>LEFT JOIN WorkflowProcess wp WITH(NOLOCK) ON wi.Process = wp.Id<br></br>LEFT JOIN ProcessHeader ph WITH(NOLOCK) ON wp.Header = ph.Id<br></br>WHERE Attempt = 0 ) tv ORDER BY Status ]<br></br>[SQL: SELECT top(15) tv.Id as Id509_0_, tv.Uid as Uid509_0_, tv.ElementUid as ElementUid509_0_, tv.CreationDate as Creation4_509_0_, tv.Attempt as Attempt509_0_, tv.LastExecuteDate as LastExec6_509_0_, tv.NextExecuteDate as NextExec7_509_0_, tv.LastError as LastError509_0_, tv.SkipExecution as SkipExec9_509_0_, tv.SkipConnectorUid as SkipCon10_509_0_, tv.Timeout as Timeout509_0_, tv.LastExceptionData as LastExc12_509_0_, tv.ServerConnectionUid as ServerC13_509_0_, tv.Instance as Instance509_0_, tv.Author as Author509_0_, tv.BackgroundOperation as Backgro16_509_0_ FROM (SELECT wqi.Id, wqi.Uid, wqi.Instance, wqi.ElementUid, wqi.CreationDate, wqi.Attempt, wqi.LastExecuteDate, wqi.NextExecuteDate, wqi.LastError, wqi.Author, wqi.SkipExecution, wqi.SkipConnectorUid, wqi.Timeout, wqi.LastExceptionData, 0 OnceExecuteStatus, wqi.ServerConnectionUid, wqi.BackgroundOperation<br></br>FROM WorkflowQueueItem wqi WITH(NOLOCK)<br></br>LEFT JOIN WorkflowInstance wi WITH(NOLOCK) ON wi.Id = wqi.Instance<br></br>LEFT JOIN WorkflowProcess wp WITH(NOLOCK) ON wi.Process = wp.Id<br></br>LEFT JOIN ProcessHeader ph WITH(NOLOCK) ON wp.Header = ph.Id<br></br>WHERE Attempt = 0 ) tv ORDER BY Status ] ---> System.Data.SqlClient.SqlException: Invalid column name 'Status'.<br></br>`

---

<p class="callout success">В результате обновления изменились параметры сортировки по полю Статус. Необходимо просто выбрать колонку сортировку "мышкой" по колонке Статус или какой-то другой и ошибка уйдет.</p>

[![image-1598870528011.png](https://kb.randmgroup.ru/uploads/images/gallery/2020-08/scaled-1680-/rZUMkNWhepRZJa46-image-1598870528011.png)](https://kb.randmgroup.ru/uploads/images/gallery/2020-08/rZUMkNWhepRZJa46-image-1598870528011.png)

# ✅ Column 'File' in table 'DocumentVersion' is of a type that is invalid for use as a key column in an index.

При обновлении системы может возникнуть следующая ошибка построения индекса:

> \*EleWise.ELMA.Runtime.Db.DbStructureException: Ошибка обновления структуры БД ---&gt; System.Data.DataException: Не удалось выполнить запрос  
> CREATE NONCLUSTERED INDEX \[IX\_DocumentVersion\_File\] ON \[DocumentVersion\]  
> (  
> \[File\] ASC  
> )  
> \---&gt; System.Data.SqlClient.SqlException: Column 'File' in table 'DocumentVersion' is of a type that is invalid for use as a key column in an index.

---

Необходимо восстановить базу из резервной и выполнить перед запуском сервера ELMA следующий запрос:

```SQL
alter table [ELMA-DB].[dbo].[DocumentVersion]
alter column [File] nvarchar(250)
```

# ✅ Npgsql.PostgresException: 42501: permission denied to create extension "uuid-ossp"

При обновлении системы до 3.15.27+ в облаке Mail.RU возникает указанная ошибка:

`Ошибка инициализации конфигурации ELMA ---> Npgsql.PostgresException: 42501: permission denied to create extension "uuid-ossp"`

При этом после миграции из другого облака расширение было уже установлено и функции uuid\_\* в базе существуют.

---

Начиная с версии 3.15.27 CR сделана доработка. Необходимо в configuration.config в секции `main connectionStringName="MainDB"` добавить параметр `skipCreateUuidExtension="true"`

# ✅ Таймауты и блокировки на MS SQL

При увеличении объема базы данных, а так же снижения производительности самого сервера БД начинают возникать таймауты и блокировки.

---

<p class="callout success">Необходимо выполнить два запроса к базе данных:</p>

```SQL
ALTER DATABASE MyDatabase  
SET ALLOW_SNAPSHOT_ISOLATION ON  

ALTER DATABASE MyDatabase  
SET READ_COMMITTED_SNAPSHOT ON  
```