release dead lock after spring inited

This commit is contained in:
Mengyi Zhou 2016-04-13 19:14:58 +08:00
parent 5999fe2ef8
commit e21ad5854f
2 changed files with 25 additions and 4 deletions

View file

@ -1,16 +1,18 @@
package com.ctrip.zeus.lock;
import com.ctrip.zeus.dal.core.DistLockDao;
import com.ctrip.zeus.dal.core.DistLockDo;
import com.ctrip.zeus.dal.core.DistLockEntity;
import com.ctrip.zeus.lock.impl.MysqlDistLock;
import com.ctrip.zeus.util.S;
import com.netflix.config.DynamicPropertyFactory;
import com.netflix.config.DynamicStringProperty;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
import org.unidal.dal.jdbc.transaction.TransactionManager;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.List;
/**
* Created by zhoumy on 2015/4/23.
@ -39,4 +41,13 @@ public class DbLockFactory {
public String getResourceName() {
return dbName.get();
}
@PostConstruct
public void releaseDeadLocks() throws Exception {
List<DistLockDo> check = distLockDao.getByServer(S.getIp(), DistLockEntity.READSET_FULL);
for (DistLockDo d : check) {
d.setServer("").setOwner(0L).setCreatedTime(System.currentTimeMillis());
}
distLockDao.updateByKey(check.toArray(new DistLockDo[check.size()]), DistLockEntity.UPDATESET_FULL);
}
}

View file

@ -27,6 +27,16 @@
]]>
</statement>
</query>
<query name="get-by-server" type="SELECT" multiple="true">
<param name="server"/>
<statement>
<![CDATA[
SELECT <FIELDS/>
FROM <TABLE/>
WHERE <FIELD name='server'/> = ${server}
]]>
</statement>
</query>
<query name="get-by-key-for-update" type="SELECT">
<param name="lock-key"/>
<statement>
@ -37,7 +47,7 @@
]]>
</statement>
</query>
<query name="update-by-key" type="UPDATE">
<query name="update-by-key" type="UPDATE" batch="true">
<param name="lock-key"/>
<statement>
<![CDATA[