You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Knut Anders Hatlen (JIRA)" <ji...@apache.org> on 2008/04/07 10:52:27 UTC

[jira] Commented: (DERBY-3599) IllegalMonitorStateException and suites.All hang in testBlobInTriggerTable with IBM 1.6

    [ https://issues.apache.org/jira/browse/DERBY-3599?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12586279#action_12586279 ] 

Knut Anders Hatlen commented on DERBY-3599:
-------------------------------------------

This looks similar to the failure reported in DERBY-3557, which also happened on IBM 1.6. Here's the code that throws the exception:

    public void release(Cacheable item) {
        // The entry must be present and kept when this method is called, so we
        // don't need the complexity of getEntry() to ensure that the entry is
        // not added to or removed from the cache before we have locked
        // it. Just call get() which is cheaper.
        CacheEntry entry = cache.get(item.getIdentity());
        entry.lock();
        try {
            if (SanityManager.DEBUG) {
                SanityManager.ASSERT(item == entry.getCacheable());
            }
            entry.unkeep();
        } finally {
            entry.unlock();
        }
    }

The exception is thrown by the call to entry.unlock() at the bottom of the method. entry.lock() and entry.unlock() simply forward the calls to ReentrantLock.lock() and ReentrantLock.unlock(), respectively. Since there is nothing in CacheEntry.unkeep() that could make the ReentrantLock become unlocked, I don't see how the call to unlock() could cause an IllegalMonitorStateException. Could it be a JVM problem?

> IllegalMonitorStateException and suites.All hang in testBlobInTriggerTable with IBM 1.6
> ---------------------------------------------------------------------------------------
>
>                 Key: DERBY-3599
>                 URL: https://issues.apache.org/jira/browse/DERBY-3599
>             Project: Derby
>          Issue Type: Bug
>          Components: Store
>    Affects Versions: 10.5.0.0
>         Environment: Linux IBM 1.6
> Java(TM) SE Runtime Environment (build pxi3260sr1-20080404_02(SR1))
> IBM J9 VM (build 2.4, J2RE 1.6.0 IBM J9 2.4 Linux x86-32 jvmxi3260-20080403_1843
> J9VM - 20080403_018433_lHdSMr
> JIT  - r9_20080403_0402
> GC   - 20080402_AA)
> JCL  - 20080331_01
>            Reporter: Kathey Marsden
>         Attachments: javacore.20080406.145535.17698.0001.txt
>
>
> I saw this hang running suites.All against trunk with IBM 1.6
> The exception in derby.log was 
> ava.lang.IllegalMonitorStateException
>     at java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(ReentrantLock.java:127)
>     at java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1175)
>     at java.util.concurrent.locks.ReentrantLock.unlock(ReentrantLock.java:431)
>     at org.apache.derby.impl.services.cache.CacheEntry.unlock(CacheEntry.java:141)
>     at org.apache.derby.impl.services.cache.ConcurrentCache.release(ConcurrentCache.java:418)
>     at org.apache.derby.impl.store.raw.data.CachedPage.writePage(CachedPage.java:820)
>     at org.apache.derby.impl.store.raw.data.CachedPage.clean(CachedPage.java:605)
>     at org.apache.derby.impl.services.cache.ConcurrentCache.cleanAndUnkeepEntry(ConcurrentCache.java:551)
>     at org.apache.derby.impl.services.cache.ConcurrentCache.cleanEntry(ConcurrentCache.java:534)
>     at org.apache.derby.impl.services.cache.BackgroundCleaner.performWork(BackgroundCleaner.java:157)
>     at org.apache.derby.impl.services.daemon.BasicDaemon.serviceClient(BasicDaemon.java:331)
>     at org.apache.derby.impl.services.daemon.BasicDaemon.work(BasicDaemon.java:668)
>     at org.apache.derby.impl.services.daemon.BasicDaemon.run(BasicDaemon.java:394)
>     at java.lang.Thread.run(Thread.java:735)
> 2008-04-06 21:36:10.072 GMT Thread[derby.rawStoreDaemon,5,derby.daemons] Cleanup action starting
> java.lang.IllegalMonitorStateException
>     at java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(ReentrantLock.java:127)
>     at java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1175)
>     at java.util.concurrent.locks.ReentrantLock.unlock(ReentrantLock.java:431)
>     at org.apache.derby.impl.services.cache.CacheEntry.unlock(CacheEntry.java:141)
>     at org.apache.derby.impl.services.cache.ConcurrentCache.release(ConcurrentCache.java:418)
>     at org.apache.derby.impl.store.raw.data.CachedPage.writePage(CachedPage.java:820)
>     at org.apache.derby.impl.store.raw.data.CachedPage.clean(CachedPage.java:605)
>     at org.apache.derby.impl.services.cache.ConcurrentCache.cleanAndUnkeepEntry(ConcurrentCache.java:551)
>     at org.apache.derby.impl.services.cache.ConcurrentCache.cleanEntry(ConcurrentCache.java:534)
>     at org.apache.derby.impl.services.cache.BackgroundCleaner.performWork(BackgroundCleaner.java:157)
>     at org.apache.derby.impl.services.daemon.BasicDaemon.serviceClient(BasicDaemon.java:331)
>     at org.apache.derby.impl.services.daemon.BasicDaemon.work(BasicDaemon.java:668)
>     at org.apache.derby.impl.services.daemon.BasicDaemon.run(BasicDaemon.java:394)
>     at java.lang.Thread.run(Thread.java:735)
> Cleanup action completed
> javacore with thread dump is attached.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.