gcwarelock
提供接口用来创建锁升级锁和删除锁(详情查看文档队列锁的机制) 此类函数使用前使用前置函数gclckinitialize()或者gcwinit ()
1.10.1 Getlocksbyhandle
功能:找出一个lck句柄下的所有的锁 参数说明
Handle : lck 的句柄
返回参数:
Createtime :创建锁的时间
Name :锁的名称
Lockid:锁的 id
Orphan:是否为孤儿锁
Content:对锁的描述
Owner :锁拥有者的节点
Type :锁的类型
实例:
>>> gcware.getlocksbyhandle(7246737240087330818) ({'create time' : '20191113131705', 'name': 'gc-eventTock', 'lockid': 1206137321930358784, ' orphan': 'TRUE', ' content': 'global master',
'owner': '192.168.6.188', ' type': 'EXCLUSIVE'}, {'create time':
'20191114095446', 'name' : 'gc-event-lock', ' lockid':
8152761901143556096, 'orphan' : ' FALSE', 'content': 'global master',
'owner': '192.168.6.189', 'type': 'EXCLUSIVE'}, {'create time':
'20191120094528', 'name': 'gc-event-lock', 'lockid':
5130829985489092608, 'orphan': 'FALSE', 'content': 'global master', 'owner': '192.168.6.185', 'type': 'EXCLUSIVE'}, {'create time':
'20191121140809', 'name': 'lock', 'lockid': 3263932475012808704,
'orphan': ' TRUE', ' content': ' zuile', ' owner': ' 192.168.6. 185' , ' type': 'SHARE'}, {'create time': '20191122083722', 'name': 'lock', 'lockid': 7614400102915899393, 'orphan': 'TRUE', 'content': 'zuile', 'owner': '192.168.6.185', 'type': 'SHARE'})
1. 10. 2 Gclock
(lck_handle, lock_name, lock_mode, lock
_flags, max_share_lock, lock_commit)
功能:向gcware提岀加锁的申请
参数说明:
1输入参数:
lck_handle:与gcware锁服务的连接句柄,由gcLckInitialize调用获得 lockName:锁名称。字符串,长度[1,256]
lockMode:锁的类型,共享锁还是互斥锁。取值范围:
{GC_LCK_PR_LOCK_MODE(共享锁),GC_LCK_EX_LOCK_MODE(互斥锁)}
1为共享锁2为互斥锁
lockFlags:锁的标志,取值 0 或者 GC_LCK_LOCK_NO_QUEUE, 0 表示 排队,GC_LCK_LOCK_NO_QUEUE 表示不排队。若选择 GC_LCK_LOCK_NO_QUEUE,则等同于同步加锁模式
maxShareLock:共享锁的最大数量。取值范围[1, 4294967295]。其中,0 表示没有最大限制。服务端的设置支持动态调整。例如,第一次设置的 maxShareLock为5,则服务端也相应的设置为5,若第二次调用设置为6,则 服务端也相应的调整为6,并使用6对锁的数量进行限制。需要注意的是,调 用了 gcLock,只要结果返回GC_AIS_OK,maxShareLock就已经生效了,无论 加锁是否成功。当新的maxShareLock生效后,会对排队中的锁进行一次新的 审查,那些满足新的maxShareLock条件的锁,这时可以授予。
lockContent:锁的备注。字符串,长度[0,256]
2输岀参数:
lockId:锁的ID,它在gcware的某一个客户程序进程内是唯一的。当锁的 事件发生时,可使用这个ID来区别是哪个锁
3返回值:
- , lock_id :成功则返回 lockid
- , GC_AIS_ERR_TRY_AGAIN:表明 corosync 间正在同步)
- , GC_AIS_ERR_CLUSTER_LOCKED :表明 corosync 处于少数派
- , GC_AIS_ERR_INVALID_PARAM :参数错误
- ,其他错误:客户端必须按错误处理
实例:
>>> gcware.gclock(6320000717721436161,"lock", 1,0,10, "zuile") 3263932475012808704
1.10.3 Gclock_wait(lck_handle, timeout)
功能:等待gcware加锁的结果。它监听本连接内,所有通过gcLock申请的锁的 事件。它类似于一个pol 1函数,本连接内申请的锁的集合就相当于这个poll所监 听的fd集合
参数说明:
lckHandle:与gcware锁服务的连接句柄,由gcLckInitialize调用获得 timeout:超时时间。单位为毫秒。取值范围[0,10000],其中0表示无限等待。
如果在超时时间内,gcware都没有返回结果,本接口将返回错误 输岀参数:
lockid:锁的 ID lockStatus:锁的状态
result:返回的信息
实例:
>>> gcware.gclockwait(381366948123901952, 1000)
1. 10. 4 Gcunlock (lockid)
功能:释放一个锁 参数:lockid锁的id 返回参数:1为成功 实例: >>> gcware.getlocksbyhandle(7246737240087330818)
({'create time' : '20191113131705', 'name': 'gc-eventTock', 'lockid': 1206137321930358784, ' orphan': 'TRUE', ' content': 'global master',
'owner': '192.168.6.188', ' type': 'EXCLUSIVE'}, {'create time':
'20191114095446', 'name' : 'gc-event-lock', ' lockid':
8152761901143556096, 'orphan': 'FALSE', 'content': 'global master', 'owner': '192.168.6.189', 'type': 'EXCLUSIVE'}, {'create time':
'20191120094528', 'name': 'gc-event-lock', 'lockid':
5130829985489092608, 'orphan': 'FALSE', 'content': 'global master', 'owner': '192.168.6.185', 'type': 'EXCLUSIVE'}, {'create time':
'20191121140809', 'name': 'lock', 'lockid': 3263932475012808704,
'orphan': 'TRUE', 'content': 'zuile', 'owner': '192.168.6.185', 'type': 'SHARE'})
>>>
>>> gcware.gcunlock(3263932475012808704)
1
>>> gcware.getlocksbyhandle(7246737240087330818)
({'create time': '20191113131705', 'name': 'gc-event-lock', 'lockid': 1206137321930358784, 'orphan': 'TRUE', 'content': 'global master',
'owner': '192.168.6.188', ' type': 'EXCLUSIVE'}, {'create time':
'20191114095446', 'name' : 'gc-event-lock', ' lockid':
8152761901143556096, 'orphan' : ' FALSE', 'content': 'global master',
owner': '192.168.6.189', 'type': 'EXCLUSIVE'}, {'create time':
20191120094528', |
name': 'gc-event-lock', 'lockid':
5130829985489092608, 'orphan': 'FALSE', 'content': 'global master', owner': ' 192. 168. 6.185', 'type': 'EXCLUSIVE'})
(handle, name, lockid, lockmode, lockfla gs, priority)
功能将锁升级(共享锁升级成互斥锁)
参数说明:
Handle : lck 的句柄
Name :锁的名称
Lockid :锁的 id
Lockmode :锁的模式
共享锁1
互斥锁 2
Lockflags:锁的标识
队列锁0
非队列锁1
Priority :锁的优先权
返回参数:
Result : 1表示成功
实例:
>>>
gcware.gclockupdate(2843754445760626689,"noname",1104876011863932928
,2,0,1)
1