xdmp:transaction-locks()在无锁事务集群中触发超时及XDMP-XDQPNOSESSION错误
MarkLogic集群中
xdmp:transaction-locks无锁事务时超时返回XDMP-XDQPNOSESSION错误 ML Server版本:10.0-9.5
我在使用xdmp:transaction-locks函数统计事务持有的锁时,发现该函数在多节点集群和本地单节点环境下表现不一致:
- 当事务没有持有任何锁时,本地单节点执行会立即返回空结果,但集群环境执行会超时并返回XDMP-XDQPNOSESSION错误
- 当事务持有锁时,本地和集群环境都能成功返回锁信息
以下是复现问题的代码示例:
无锁代码(触发错误)
xquery version "1.0-ml"; (: 获取当前主机和当前事务的锁,这里没有加锁逻辑,应该返回空结果 本地执行返回: <transaction-locks xmlns="http://marklogic.com/xdmp/status/host"></transaction-locks> 集群环境: 触发超时并返回XDMP-XDQPNOSESSION错误 :) xdmp:transaction-locks(xdmp:host(), xdmp:transaction())
带锁代码(执行成功)
xquery version "1.0-ml"; (: 持有锁的事务,本地和集群都能成功返回 返回结果: <transaction-locks xmlns="http://marklogic.com/xdmp/status/host"> <write>foo.xml</write> </transaction-locks> :) let $_ := xdmp:lock-for-update("foo.xml") return xdmp:transaction-locks(xdmp:host(), xdmp:transaction())
有没有人遇到过这个问题?我是不是遗漏了什么配置或者细节?
内容的提问来源于stack exchange,提问作者nobleb
相关产品推荐
相关产品推荐

