使用 xdmp:lock-acquire() 函数锁定文档时出现问题

Problem in locking a document using xdmp:lock-acquire() function

我们已经尝试了锁定方法的所有选项,文档被锁定,但即使锁定尚未解除,其他用户仍然可以更新文档。

xdmp:lock-acquire("/inventory/hassan", "exclusive", "0", "This lock is acquiuired by admin user", 60)

我们有另一个名为“shiv”的用户分配了“admin”角色,即使锁定尚未释放,“shiv”用户仍然可以执行以下功能并修改文档。

xdmp:node-replace(doc("/inventory/hassan")//location, <location>ABC</location>)

我们正在使用 MarkLogic 10.0-.2.1

请帮我看看这是怎么回事。

这个锁不是事务锁。正如文档所说:

注意这里描述的锁是通过WebDAV模拟文件系统的比较重的持久文档锁,不是为了数据库一致性的比较轻的事务锁。

https://docs.marklogic.com/xdmp:lock-acquire

似乎如果您使用具有 admin 的用户,它会绕过锁定。

当我用一个用户锁定文档,然后尝试用另一个非特权用户修改它时,我得到以下信息:

[1.0-ml] XDMP-LOCKED: xdmp:node-replace(fn:doc("/test.xml")/doc/location, <location>ABC</location>) -- Document or Directory is locked

但是,在赋予该用户 admin 角色后,它会成功执行并更新文档。