[ https://issues.apache.org/jira/browse/ROCKETMQ-98?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15870329#comment-15870329 ]
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/10188144/badge)](https://coveralls.io/builds/10188144) Coverage decreased (-0.09%) to 31.426% when pulling **6788a928008e1a14e32b839753913ba97d5c9f21 on Jaskey:ROCKETMQ-98** into **573b22c37806a21543b90707bcce6022243a62da 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: vongosling > 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)