摘要
我使用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
...
如您所见,多次出现相同的开始消息。
问题
知道什么可能导致这些查询中断/堕胎/重启?或者我如何找到更多信息?
答案 0 :(得分:2)
基于@MadsHansen评论对我自己的问题做出正确回答。谢谢!
这里的技巧是用于死锁检测的消息在ErrorLog.txt
中输出(不在TaskServer_ErrorLog.txt
,即使我在任务服务器上)。
它们的日志级别为Info
,这是默认值。