| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- --
- -- User: tianyu.li
- -- Date: 2021/1/19
- --
- -- init data
- local array = {}; local result; local keySize = ARGV[1]; local argSize = ARGV[2];
- -- Loop through all keys to see if they can be used , when a key is not available, exit
- for i= 1, keySize do
- -- search lock xid
- result = redis.call('HGET',KEYS[i],'xid');
- -- if lock xid is nil
- if (not result)
- -- set 'no' mean There is need to store lock information
- then array[i]='no'
- else
- if (result ~= ARGV[3])
- then
- -- return fail
- return result
- else
- -- set 'yes' mean There is not need to store lock information
- array[i]= 'yes'
- end
- end
- end
- -- Loop through array
- for i =1, keySize do
- -- if is no ,The lock information is stored
- if(array[i] == 'no')
- then
- -- set xid
- redis.call('HSET',KEYS[i],'xid',ARGV[3]);
- -- set transactionId
- redis.call('HSET',KEYS[i],'transactionId',ARGV[(i-1)*6+4]);
- -- set branchId
- redis.call('HSET',KEYS[i],'branchId',ARGV[(i-1)*6+5]);
- -- set resourceId
- redis.call('HSET',KEYS[i],'resourceId',ARGV[(i-1)*6+6]);
- -- set tableName
- redis.call('HSET',KEYS[i],'tableName',ARGV[(i-1)*6+7]);
- -- set rowKey
- redis.call('HSET',KEYS[i],'rowKey',ARGV[(i-1)*6+8]);
- -- set pk
- redis.call('HSET',KEYS[i],'pk',ARGV[(i-1)*6+9]);
- -- exit if
- end
- -- exit for
- end
- -- set SEATA_GLOBAL_LOCK
- redis.call('HSET',KEYS[(keySize+1)],KEYS[(keySize+2)],ARGV[(argSize+0)]);
- -- return success
- return ARGV[3]
|