[ https://issues.apache.org/jira/browse/ROCKETMQ-98?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15948320#comment-15948320 ]
ASF GitHub Bot commented on ROCKETMQ-98: ---------------------------------------- Github user coveralls commented on the issue: https://github.com/apache/incubator-rocketmq/pull/61 [![Coverage Status](https://coveralls.io/builds/10840731/badge)](https://coveralls.io/builds/10840731) Coverage decreased (-0.6%) to 30.421% when pulling **525d9fa5d6070841f3fc5f55f08dd9e5538af684 on Jaskey:ROCKETMQ-98** into **fa85abcdf6ee46e56403ddf86828a38683103fd0 on apache:master**. > Risk of unable to release putMessage Lock forever > ------------------------------------------------- > > Key: ROCKETMQ-98 > URL: https://issues.apache.org/jira/browse/ROCKETMQ-98 > Project: Apache RocketMQ > Issue Type: Bug > Affects Versions: 4.1.0-incubating > Reporter: Jaskey Lam > Assignee: Jaskey Lam > Fix For: 4.1.0-incubating > > > In current implemenation, there are two kind of locks dev can choose. If I > choose reentrantLock, and lock it then put message, in this time I change the > config through admin interface to use spin lock. When trying to unlock, > rocketmq will try to unlock the spin lock though actually the reentrantlock > is locked, this will cause the reentrantlock not able to release forever and > trying to release the wrong spin lock but actully it is not locked! > /** > * Spin util acquired the lock. > */ > private void lockForPutMessage() { > if > (this.defaultMessageStore.getMessageStoreConfig().isUseReentrantLockWhenPutMessage()) > { > putMessageNormalLock.lock(); > } else { > boolean flag; > do { > flag = this.putMessageSpinLock.compareAndSet(true, false); > } > while (!flag); > } > } > private void releasePutMessageLock() { > if > (this.defaultMessageStore.getMessageStoreConfig().isUseReentrantLockWhenPutMessage()) > { > putMessageNormalLock.unlock(); > } else { > this.putMessageSpinLock.compareAndSet(false, true); > } > } -- This message was sent by Atlassian JIRA (v6.3.15#6346)