В ходе работы с сервисом Дедупликации на основе глобального поиска может возникнуть проблема с зависанием процесса поиска дублей на уровне сервиса.
Зависание процесса характеризуется отсутствием результатов поиска длительное время и ограничением запуска повторной итерации поиска.

Для того чтобы завершить зависшую задачу в On-Site вам потребуется:

1. Зайти на сервер, где развернут сервис массового поиска дублей.
2. Зайти в docker-контейнер с базой MongoDB. В консоли выполнить команду:
docker exec -it dd-mongodb bash

3. Подключиться к MongoDB. В консоли выполнить команду:
mongo

4. Подключиться к базе, в которой храниться вся информация о задачах массового поиска дублей.
В консоли выполнить команду:
use dup-bulk-deduplication

5. Выбрать все задачи, которые в данный момент находятся в процессе.
В консоли выполнить команду:
db.getCollection('DeduplicationTaskEntity').find({Status: 2}).pretty()

В результате выполнения этой команды можно увидеть один или больше JSONобъектов, которые описывают запущенные задачи по поиску дублей.
JSON(ы) выглядят примерно так:

{ "_id" : UUID("450da7fb-9ac5-49c5-a146-feebc3482b2e"),
"IsActual" : true,
"TokenId" : "3a868426cf95283bd0b51ef7776337ed",
"ElasticIndexName" : "EntityName",
"SourceEntityName" : "IndexName",
"TotalRecordsCount" : NumberLong(0),
"ProcessedRecordsCount" : NumberLong(0),
"MaxDuplicatesPerRecord" : null,

"StartedOn" : ISODate("2021-01-13T09:31:16.269Z"),

"FinishedOn" : null,

"FailReason" : null,

"Status" : 2,

"Rules" : [

{

"_t" : "DeduplicationRuleEntity",

"Columns" : [

"#Column"

]

}

]

}

где,

 

Обычно задачи зависают из-за того, что количество обработанных записей меньше, чем общее количество записей в разделе (ProcessedRecordsCount < TotalRecordsCount), при этом больше нет под-задач на обработку отдельной записи из раздела, то есть часть записей останется не обработанной. На данный момент нет ответа на вопрос, куда пропадают под-задачи на обработку отдельной записи из раздела. Эта проблема находиться в проработке.

6. Необходимо завершить одну (или несколько) зависшую задачу:

  •  Если необходимо завершить ОДНУ какую-то конкретную задачу (в случае, если есть одна зависшая задача, а вторая была недавно запущена и она еще действительно находиться в процессе), то нужно скопировать ID этой задачи и выполнить следующую команду:

getCollection('DeduplicationTaskEntity').updateOne({ _id: UUID("450da7fb9ac5-49c5-a146-feebc3482b2e")}, { $set: { Status: NumberInt(5) } })
 

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

{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
 

  • Если необходимо просто завершить ВСЕ зависшие задачи:
    db.getCollection('DeduplicationTaskEntity').updateMany({ Status: 2}, { $set: { Status: NumberInt(5) } })

    Если все выполнено правильно, то результат выполнения команды будет следущий (где N - количество обновленных задач):
    { "acknowledged" : true, "matchedCount" : N, "modifiedCount" : N }

Нравится

Поделиться

0 комментариев
Показать все комментарии

Добрый день!

Столкнулись с проблемой, что завис процесс дедупликаци. При попытки запустить процесс поиска дублей выдает сообщение:

"Поиск дублей был запущен ранее. Дождитесь когда закончится запущенный поиск дублей, прежде чем начать новый."  Ожидание в несколько дней ничего не дало. Как завершить запущенный поиск дублей? Какой БП отвечает за это поиск?  В журнале БП ничего подобного в статусе Выполняется нет.

 

Нравится

3 комментария

через тех поддержку. иначе никак, если конечно сервис не у вас на серве

Сервис как раз у нас на сервере. Перезапускал контейнера, но реакции ноль

Добрый день.
"Как завершить процесс дедупликации" можно узнать тут:
https://community.terrasoft.ru/articles/kak-proverit-nalichie-zapuschen…

Показать все комментарии

Добрый день.

Может кто сталкивался с дедупликацией на Linux .NET Core.

Есть ли в версии Linux .NET Core дедупликация?. 

Нравится

4 комментария
Лучший ответ

Дедупликация 1.0 - это фича mssql вроде, на postgresql не работает. А дедупликая 2.0 - это вообще отдельный микросервис, который нужно еще настроить.

Сервис должен работать в любом случае.

https://academy.terrasoft.ru/docs/user/ustanovka_i_administrirovanie/ra…

Дедупликация 1.0 - это фича mssql вроде, на postgresql не работает. А дедупликая 2.0 - это вообще отдельный микросервис, который нужно еще настроить.

Сервис должен работать в любом случае.

https://academy.terrasoft.ru/docs/user/ustanovka_i_administrirovanie/ra…

Трефилов Павел Сергеевич,

В том то и дело на стороне Windows Я запускаю и все работает. А на стороне 

.NET Core. Нет вообще даже в меню. Поиска дублей.

 

 

 

Это Windows версия. 

Добрый день!
Проверьте, что у Вас включены все 3 фичи из инструкции и сам сервис настроен. 
Кнопки перехода к поиску могут не отображаться, если выключены фичи.

На Net Core сборках дедупликация работает только через микросервис и при настройке все кнопки отобразятся.

https://academy.terrasoft.ru/docs/user/ustanovka_i_administrirovanie/ra…

Показать все комментарии

Добавляю в игнор лист по кнопке "Не считать дублями".

Но что делать если нажал нечаянно и хочу вернуть обратно?

Нравится

2 комментария

Удалить запись из таблицы AccountDuplicateSearchGroupExclusions.

Василий, решение вашего запроса зависит от механизма дедупликации, который используется на сайте.
Для механизма поиска дублей на хранимых процедурах достаточно удалить записи  из таблиц AccountDuplicateSearchGroupExclusions/ContactDuplicateSearchGroupExclusions для очистки всех записей, которые были помечены как "Не считать дублями".
Для механизма поиска дублей с использованием сервиса дедупликации ( детальнее в статье https://academy.terrasoft.ua/docs/user/ustanovka_i_administrirovanie/ra…) для сброса признаков "Не являются дублями" всех помеченных пачек дублей на сервисе дедупликации необходимо почистить таблицу UniqueEntity в mongodb. 

Показать все комментарии

Сейчас в поиске дублей 2.0 можно указать только колонки, по которым система считает записи одинаковыми. Хотелось бы дополнительно иметь возможность задать условия для исключения.

Например есть раздел Продукты, задано условие, что продукт считать дублем, если у него одинаковый артикул, но прим этом исключить из поиска материалы с артикулом "-".

1 комментарий

Павел, на данный момент такой возможности нет.

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

Показать все комментарии

Добрый день! Реально ли сделать поиск дублей для кастомного раздела через старый механизм? Там, где используется sql процедура для поиска. Новая версия не подходит, т.к. там там нельзя прописать исключения прямо в правилах.

В академии есть инструкция как сделать для раздела контакты, а можно ли сделать подобное для своего раздела?

https://academy.terrasoft.ru/documents/technic-sdk/7-14/dobavlenie-prav…

Нравится

3 комментария

Реально.

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

Для конрагентов вижу, что есть доп таблицы:  AccountDuplicate, AccountDuplicateSearchGroupExclusions, AccountDuplicateSearchResult, представление VwAccountDuplicate. Есть процесс, который запускает поиск по расписанию, дальше не копал.

На первый взгляд выглядит не очень реально для того, что бы это просто так повторить.

Трефилов Павел Сергеевич,

Инструкции нет, как и для всех сложных кейсов в creatio. Анализируйте механизм поиска дублей.

Показать все комментарии

Добрый день.

Подскажите кто-нибудь, правильно ли я понимаю, что для настройки глобального поиска и механизма дедупликации необходимо использовать 3 сервера:

- для ElasticSearch

- для компонентов глобального поиска

- для сервис массового поиска дублей.

Если с первыми двумя пунктами все понятно (разные серверы), то вот с сервисом массового поиска дублей не совсем понятно куда его устанавливать.  В мануалах информации не нашел.

Нравится

2 комментария
Лучший ответ

Добрый день

Столкнулся с точно такой же ситуацией. В мануалах очень плохо описаны такие тонкости. Более есть еще и ошибки - будьте внимательны при настройке сервисов глобального поиска и дедупликации.

По серверам я сделал только 2 сервера. Creatio-ES - для ElasticSearch и Creatio-DD - для сервисов глобального поиска и дедупликации. Есть нюанс. Я выделил только 30 ГБ места на Creatio-DD и сегодня получил предупреждение что свободно только 20% места. Так что думаю лучше выделять больше свободного места.

Добрый день

Столкнулся с точно такой же ситуацией. В мануалах очень плохо описаны такие тонкости. Более есть еще и ошибки - будьте внимательны при настройке сервисов глобального поиска и дедупликации.

По серверам я сделал только 2 сервера. Creatio-ES - для ElasticSearch и Creatio-DD - для сервисов глобального поиска и дедупликации. Есть нюанс. Я выделил только 30 ГБ места на Creatio-DD и сегодня получил предупреждение что свободно только 20% места. Так что думаю лучше выделять больше свободного места.

Поиск дублей ставится на любой сервер, он не связан с другими сервисами.

Показать все комментарии