Eu tenho um trabalho MarkLogic CoRB. Deve retornar 100 registros. Mas falha para SEVERE: received more than 1 results: 1
.
Eu realmente aprecio qualquer ajuda que você possa fornecer.
uris.xqy:
declare namespace lab = "http://labs.com/record";
declare namespace meta="http://labs.com/lab/record/meta";
let $org := ("Ros* Lab*")
for $uri in cts:uris(
(),
(),
cts:and-query((
cts:collection-query('/Lab'),
cts:field-range-query("updated","<","2023-08-18"),
cts:or-query((
cts:field-word-query("do",$org,"case-insensitive"),
))
))
)
return (count($uri),$uri)
uris-process.xqy:
xquery version "1.0-ml";
declare namespace lab = "http://labs.com/record";
declare namespace meta="http://labs.com/lab/record/meta";
declare variable $URI as xs:string external;
xdmp:set-request-time-limit(3600),
for $uris in $URI
let $doc := fn:doc($uris)
let $meta := <lab:Record><meta:Metadata>
$doc//meta:IDNumber}
{$doc//meta:ReportDate}
{$doc//meta:ReportNumbers}
</meta:Metadata></lab:Record>
let $IDNumber := fn:data($meta//meta:IDNumber)
return
xdmp:save(fn:concat("/XML/",$IDNumber,".xml")$IDNumber ,$meta)
Produz esta exceção:
SEVERE: interrupted: exiting
java.lang.InterruptedException
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:2014)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2088)
at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
at java.util.concurrent.ExecutorCompletionService.poll(ExecutorCompletionService.java:202)
at com.marklogic.developer.corb.Monitor.monitorResults(Monitor.java:97)
at com.marklogic.developer.corb.Monitor.run(Monitor.java:76)
at java.lang.Thread.run(Thread.java:750)
Sep 11, 2023 3:32:41 PM com.marklogic.developer.corb.Manager run
SEVERE: received more than 1 results: 1
Sep 11, 2023 3:32:41 PM com.marklogic.developer.corb.Manager stop
INFO: cleaning up
Sep 11, 2023 3:32:41 PM com.marklogic.developer.corb.Manager main
SEVERE: Error while running CORB
java.lang.ArrayIndexOutOfBoundsException: received more than 1 results: 1
Seu módulo URIs não parece correto.
Você está iterando cada URI com um loop for.
e então, para cada um desses URIs, você retorna uma contagem (de um) e depois o
$uri
, para cada um dos 100 URIs.Então, a primeira coisa retornada no seu trabalho é a contagem de
1
, mas você está retornando outros 199 itens na sequência.Em vez disso, você deseja deixar uma
$uris
variávele então retornar apenas uma sequência que contém a contagem e depois cada um dos $uris.