I have now added following warning to notify this situation:
public void releaseWriteLock() {
Thread currentThread = Thread.currentThread();
if (log.isDebugEnabled()) {
log.debug(String.format("Releasing write lock: [lock-name] %s
[thread-id] %d [thread-name] %s",
getName(), currentThread.getId(), currentThread.getName()));
}
if(lock.writeLock().isHeldByCurrentThread()) {
lock.writeLock().unlock();
if (readWriteLockMonitorEnabled) {
Map<LockType, LockMetadata> lockTypeLongMap =
getLockTypeLongMap(currentThread.getId());
lockTypeLongMap.remove(LockType.Write);
}
if (log.isDebugEnabled()) {
log.debug(String.format("Write lock released: [lock-name]
%s [thread-id] %d [thread-name] %s",
getName(), currentThread.getId(), currentThread.getName()));
}
} else {
log.warn(String.format("System warning! A thread is trying to
release a lock which has not been taken: " + "[lock-name] %s
[thread-id] %d [thread-name] %s",
getName(), currentThread.getId(), currentThread.getName()));
}
}
On Fri, Feb 6, 2015 at 6:41 PM, Imesh Gunaratne <[email protected]> wrote:
> Hi Devs,
>
> I see $subject and according to Java documentation this could happen if a
> thread is trying to release a lock acquired by a different thread:
>
> [2015-02-06 18:30:09,822] INFO
> {org.wso2.carbon.integration.framework.utils.InputStreamHandler} -
> java.lang.IllegalMonitorStateException
> [2015-02-06 18:30:09,822] INFO
> {org.wso2.carbon.integration.framework.utils.InputStreamHandler} - at
> java.util.concurrent.locks.ReentrantReadWriteLock$Sync.tryRelease(ReentrantReadWriteLock.java:374)
> [2015-02-06 18:30:09,822] INFO
> {org.wso2.carbon.integration.framework.utils.InputStreamHandler} - at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1260)
> [2015-02-06 18:30:09,822] INFO
> {org.wso2.carbon.integration.framework.utils.InputStreamHandler} - at
> java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.unlock(ReentrantReadWriteLock.java:1131)
> [2015-02-06 18:30:09,822] INFO
> {org.wso2.carbon.integration.framework.utils.InputStreamHandler} - at
> org.apache.stratos.common.concurrent.locks.ReadWriteLock.releaseWriteLock(ReadWriteLock.java:145)
> [2015-02-06 18:30:09,822] INFO
> {org.wso2.carbon.integration.framework.utils.InputStreamHandler} - at
> org.apache.stratos.cloud.controller.messaging.topology.TopologyManager.releaseWriteLock(TopologyManager.java:66)
> [2015-02-06 18:30:09,822] INFO
> {org.wso2.carbon.integration.framework.utils.InputStreamHandler} - at
> org.apache.stratos.cloud.controller.services.impl.CloudControllerServiceImpl.terminateInstance(CloudControllerServiceImpl.java:607)
> [2015-02-06 18:30:09,822] INFO
> {org.wso2.carbon.integration.framework.utils.InputStreamHandler} - at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> [2015-02-06 18:30:09,822] INFO
> {org.wso2.carbon.integration.framework.utils.InputStreamHandler} - at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> [2015-02-06 18:30:09,822] INFO
> {org.wso2.carbon.integration.framework.utils.InputStreamHandler} - at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [2015-02-06 18:30:09,822] INFO
> {org.wso2.carbon.integration.framework.utils.InputStreamHandler} - at
> java.lang.reflect.Method.invoke(Method.java:606)
>
> Thanks
>
>
> --
> Imesh Gunaratne
>
> Technical Lead, WSO2
> Committer & PMC Member, Apache Stratos
>
--
Imesh Gunaratne
Technical Lead, WSO2
Committer & PMC Member, Apache Stratos