MarkLogic v10.0-7版本xdmp:unquote函数抛出SVC-FILSTAT错误咨询
问题根源
MarkLogic v10.0-4版本开始调整了xdmp:unquote函数的默认行为,新增的URI自动识别逻辑会尝试将JSON字符串中符合URI格式的内容判定为本地文件路径,触发底层文件状态检查动作。测试代码中包含http://www.google.com格式的URI字符串,10.0-3版本无此检查逻辑所以运行正常,10.0-7版本触发检查后对应本地路径不存在,就会抛出SVC-FILSTAT错误。
解决方法
- 方案1:调用
xdmp:unquote时显式关闭URI解析参数,不需要调整其他配置,代码修改后兼容所有10.x版本,修改后的代码如下:
xquery version "1.0-ml"; xdmp:unquote('{"language":["http://www.google.com"]}', (), <options xmlns="xdmp:unquote"> <resolve-uris>false</resolve-uris> </options> )
- 方案2:升级MarkLogic版本至10.0-8及以上,该版本已将
resolve-uris的默认值改回false,无需修改业务代码即可恢复原有运行逻辑。 - 方案3:临时全局关闭该特性,可在MarkLogic管理后台的组配置页面,将「自动解析JSON URI」选项调整为禁用,该改动会影响实例上所有业务的
xdmp:unquote行为,不推荐生产环境使用。
内容的提问来源于stack exchange,提问作者Dixit Singla
相关产品推荐
相关产品推荐

