Marklogic 8 - ошибка задачи расписания: FOTY0013 Функции не могут быть разбиты - PullRequest
0 голосов
/ 03 января 2019

Запрос успешно работает на qconsole.Но настройте расписание задачи.ошибки буферизации ошибки: FOTY0013 Функции не могут быть разбиты ...

import module namespace json="http://marklogic.com/xdmp/json" at 
 "/MarkLogic/json/json.xqy";

  xdmp:set-request-time-limit(3600),
  let $custom :=
  let $config := json:config("custom")
  let $_ := map:put($config,"whitespace","ignore")
  let $_ := map:put($config,"array-element-names","TR")
  return $config
  let $res := cts:uris(..code..)
 for $uri in $res
 (..code..)
 let $_ := if(xdmp:filesystem-file-exists($dirPath))
    then ()
    else xdmp:filesystem-directory-create(
        $dirPath,
        <options xmlns="xdmp:filesystem-directory-create">
            <create-parents>true</create-parents>
        </options>
    )
let $_ := xdmp:save(
    fn:concat($dirPath,$accStr,".json"),
    json:transform-to-json(fn:doc($uri),$custom)
)

в задаче расписания ошибка ошибки буфера: FOTY0013 Функции не могут быть разбиты ...

2019-01-03 13:52:00.180 Notice: TaskServer:   $custom = map:map(<map:map 
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" .../>...XDMP-ATOMIZEFUNC: 
(err:FOTY0013) Functions cannot be atomized...)
2019-01-03 13:52:00.180 Notice: TaskServer:   $dtfmt = "20190103"
2019-01-03 13:52:00.180 Notice: TaskServer:   $sdate1 = "2018-12- 
27T13:52:00.175667-05:00"

Ответы [ 2 ]

0 голосов
/ 05 января 2019

XDMP-ATOMIZEFUNC может возникать при создании сообщения журнала ошибок при попытке создания сообщения об ошибке и сериализации содержимого переменной, которая содержит или содержит функции. У $json:config есть несколько свойств, которые являются функциями, и он не может распылять $json:config, чтобы распечатать содержимое этой переменной в сообщении журнала ошибок, как вы можете видеть, что это было сделано для $dtfmt и $sdate1 переменных.

Распыление

Результатом атомизации является либо последовательность атомарных значений, либо ошибка типа [err: FOTY0012].

Определение: атомизация последовательности определяется как результат вызова функции fn:data для последовательности, как определено в [Функции и операторы XQuery 1.0 и XPath 2.0 (второе издание)] .

Вы можете увидеть ту же ошибку, выполнив этот код в QConsole:

xquery version "1.0-ml";
import module namespace json="http://marklogic.com/xdmp/json" at 
 "/MarkLogic/json/json.xqy";

let $custom :=
  let $config := json:config("custom")
  let $_ := map:put($config,"whitespace","ignore")
  let $_ := map:put($config,"array-element-names","TR")
  return $config

return $custom

Вы не предоставили достаточно кода или сообщения об ошибке, чтобы сказать наверняка, но XDMP-ATOMIZEFUNC , скорее всего, не является основной причиной вашей проблемы. Посмотрите дальше в журнале ошибок для начала исключения, чтобы увидеть, какова реальная ошибка. Он должен иметь модуль и номер строки.

0 голосов
/ 04 января 2019

Трудно сказать без дополнительной информации, как минимальный воспроизводимый полный пример.Вы можете попробовать добавить версию XQuery в пролог, чтобы заставить ваш код QCOnsole и код задачи запускать одну и ту же версию xquery, я думаю, что значения по умолчанию разные.

...