在Task Server中执行期间查询中断

时间:2018-05-26 19:44:06

标签: marklogic

摘要

我使用Task Server生成一系列(相同的)查询,以便提取几千个文档。但是大多数查询在执行过程中的某个地方被中断。知道为什么,或者如何获得更多相关信息?

详情

主查询(QConsole中的XQuery)获取目录中所有文件的路径(超过9,000)。它创建了100个路径的块,并产生了一个匿名的XQuery函数。这个函数调用xdmp:eval-javascript,并传递100个路径来处理它们。

评估的Javascript代码进行了一些计算,最终插入了2个文档。输入文件都不会导致在同一URI中插入文档。

Javascript代码记录消息"块#1" (在块的顺序编号)开头,然后是"块#1和#34;的结尾。启动消息会出现很多时间,但每个块只有一次结束消息(幸运的是)。

伪码

在QConsole中执行的主要查询(spawing匿名函数,本身评估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 :(得分:2)

  

基于@MadsHansen评论对我自己的问题做出正确回答。谢谢!

这里的技巧是用于死锁检测的消息在ErrorLog.txt中输出(不在TaskServer_ErrorLog.txt,即使我在任务服务器上)。

它们的日志级别为Info,这是默认值。