防止并发修改


➡️ 并发修改锁定机制

为了防止对同一对象的并发修改导致意外结果,iTop(从 2.2.0 版本开始)实现了锁定机制。

原理和限制

该机制旨在保护同一对象的并发交互式修改,无论是由两个不同用户还是由同一用户在浏览器的两个不同标签页中进行。

该机制阻止在后台进行批量修改(批量修改、CSV 导入、数据同步…)。它仅防止两个交互式用户相互覆盖对方的修改。

在浏览器崩溃或连接丢失的情况下,每个锁都有一个过期延迟(可配置,默认 120 秒)。

在不太可能发生的情况下,用户获取了对象的锁但离开了,浏览器仍处于活动状态(去吃午饭了!),具有特定配置文件(可配置列表)的管理员可以"终止"该锁,让另一个用户获取对象的所有权并进行修改。

'concurrent_lock_enabled' => true,

用户界面

在对象"详情"页面的顶部,当对象正在被另一个用户修改时,会显示警告消息:

消息中指示了正在编辑对象的用户标识符(登录名)和名称。如果您需要编辑该对象,可以等待该人完成修改(按"刷新"图标更新对象状态)或联系该人了解发生了什么。当对象被"锁定"时,所有修改对象的操作都被禁用。“操作"菜单中唯一剩余的操作是导出。

如果锁在对象修改期间过期(由于连接丢失或计算机进入睡眠/省电模式时间过长),用户会收到弹出消息警告锁已丢失。当用户关闭此弹出消息时,页面顶部会保留一个通知,并且"操作"按钮被禁用(除了"取消"按钮):

用户仍然可以复制/粘贴对象的当前值,然后点击"取消"按钮或打开新标签页重试修改对象。

覆盖锁

具有特定(可配置)配置文件的用户可以"终止"此"锁”。请注意,在这种情况下,当前正在编辑对象的用户可能无法再提交其修改。此功能仅用于紧急情况下,当锁的"所有者"无法联系且必须更新对象时。

一旦锁被移除,对象的详情视图将再次显示,并在顶部显示反馈消息。

配置

三个配置参数决定了该机制的行为:

参数类型可见?描述默认值
concurrent_lock_enabledbool2.2.0 新增。是否启用锁定机制以防止并发交互式修改false
concurrent_lock_expiration_delayint2.2.0 新增。锁的过期延迟(以秒为单位,在 Web 浏览器崩溃或连接丢失的情况下)。编辑对象时,浏览器将在此间隔期间两次调用服务器。最小值为 15 秒。较低的值提供更响应的用户界面,但会增加服务器和网络流量的负载。120
concurrent_lock_override_profilesarray2.2.0 新增。允许"终止"锁的配置文件列表。值为配置文件名称数组array(‘Administrator’)

原文:https://www.itophub.io/wiki/page?id=3_2_0:admin:locking

版本:3_2_0/admin/locking.txt · Last modified: 2024/09/10 10:25 by 127.0.0.1