Dear all,
my scenario is a RestXQ:
- download resources and store them in temporary directory.
- do it with fork-join in order to obtain smaller latency
- compress to zip archive and return the archive data.
I've noticed often the archive arrives empty. So after investigation
I've found that query [1] isnon predictable. It is often optimized to
"count(0)".
I can manage to produce results from time to time but not consistently
with [2].
[3] Seems the safer solution.
The behavior is the same with 9.x and 10.
Since I do not feel very comfortable, is there someone who can tell me
if I'm doing it wrong or if there is a secure solution or if I should
abandon fork-join tout-court?
Thanks a lot.
Regards,
Marco.
[1]
let $ops := (
for $i in (1 to 5)
let $url := "http://www.google.com"
return function(){
(file:write(file:create-temp-file("ttt",string($i)),fetch:content-type($url)))
}
)
let $download := xquery:fork-join($ops)
return count($ops)
[2]
let $ops := (
for $i in (1 to 5)
let $url := "http://www.google.com"
return function(){
(file:write(file:create-temp-file("ttt",string($i)),fetch:content-type($url)),1)
}
)
let $download := xquery:fork-join($ops)
return count($ops)
[3]
let $ops := xquery:fork-join(
for $i in (1 to 5)
let $url := "http://www.google.com"
return function(){
(1,
file:write(file:create-temp-file("ttt",string($i)),fetch:content-type($url)))
}
)
return count($ops)