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

Reply via email to