КАК ПРОВЕРИТЬ НАЛИЧИЕ ЗАПУЩЕННЫХ ИЛИ ЗАВИСШИХ ЗАДАЧ ПО МАССОВОМУ ПОИСКУ ДУБЛЕЙ В ON-SITE

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

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



Для того чтобы завершить зависшую задачу в 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 комментариев
Показать все комментарии