Запросы, прерываемые во время выполнения на сервере задач - PullRequest
0 голосов
/ 26 мая 2018

Сводка

Я использую Сервер задач, чтобы порождать серию (одинаковых) запросов, чтобы избежать потребления нескольких тысяч документов.Но большинство запросов прерывается где-то в середине выполнения.Любая идея, почему или как получить больше информации об этом?

Подробно

Основной запрос (XQuery в QConsole) принимает путь ко всем файлам вкаталог (чуть более 9000).Он создает фрагменты из 100 путей и порождает анонимную функцию XQuery.Эта функция вызывает xdmp: eval-javascript и передает ей 100 путей для их обработки.

Оцениваемый код Javascript выполняет некоторые вычисления и в итоге вставляет 2 документа.Ни один из входных файлов не приводит к вставке документа с тем же URI.

Код Javascript регистрирует сообщение «начало фрагмента № 1» (с порядковым номером фрагмента) в начале, затем «конецкусок № 1 ".Начальные сообщения появляются много раз, но конечное сообщение только один раз на фрагмент (к счастью).

Псевдокод

Основной запрос, выполняемый в QConsole (порождает анонимныйфункция, которая сама оценивает Javascript, потому что она сама импортирует некоторые библиотеки SJS):

let $files := ...
for $i     in 0 to 92
let $chunk := $files[(($i * 100) + 1) to (($i + 1) * 100)]
return
  xdmp:spawn-function(function() {
    xdmp:eval-javascript("
      declareUpdate();
      xdmp.log(`start of chunk ${i}`);
      for ( const f of chunk ) {
        read file
        insert 2 documents
      }
      xdmp.log(`end of chunk ${i}`);
    ")
  })

В журналах показано что-то вроде:

start of chunk #9
start of chunk #1
start of chunk #5
start of chunk #4
start of chunk #3
end of chunk #5
start of chunk #7
start of chunk #4     --> again
start of chunk #8
start of chunk #9     --> again
end of chunk #9
start of chunk #8     --> again
start of chunk #7     --> again
start of chunk #2
...

Как видите, появляется то же самое стартовое сообщениенесколько раз.

Вопрос

Есть идеи, что может вызвать прерывание / прерывание / перезапуск запроса?Или как я могу найти больше информации?

1 Ответ

0 голосов
/ 31 мая 2018

Правильный ответ на мой вопрос, основанный на комментарии @MadsHansen.Спасибо!

Хитрость в том, что сообщения об обнаружении взаимоблокировки выводятся в ErrorLog.txt (а не в TaskServer_ErrorLog.txt, даже если я был на сервере задач).

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

...