使用 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模拟文件系统的比较重的持久文档锁,不是为了数据库一致性的比较轻的事务锁。
似乎如果您使用具有 admin
的用户,它会绕过锁定。
当我用一个用户锁定文档,然后尝试用另一个非特权用户修改它时,我得到以下信息:
[1.0-ml] XDMP-LOCKED: xdmp:node-replace(fn:doc("/test.xml")/doc/location, <location>ABC</location>) -- Document or Directory is locked
但是,在赋予该用户 admin
角色后,它会成功执行并更新文档。
我们已经尝试了锁定方法的所有选项,文档被锁定,但即使锁定尚未解除,其他用户仍然可以更新文档。
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模拟文件系统的比较重的持久文档锁,不是为了数据库一致性的比较轻的事务锁。
似乎如果您使用具有 admin
的用户,它会绕过锁定。
当我用一个用户锁定文档,然后尝试用另一个非特权用户修改它时,我得到以下信息:
[1.0-ml] XDMP-LOCKED: xdmp:node-replace(fn:doc("/test.xml")/doc/location, <location>ABC</location>) -- Document or Directory is locked
但是,在赋予该用户 admin
角色后,它会成功执行并更新文档。