db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dag H. Wanvik (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (DERBY-5185) store/rollForwardRecovery.sql stuck in RAFContainer4.recoverContainerAfterInterrupt() during shutdown
Date Mon, 18 Apr 2011 14:53:05 GMT

     [ https://issues.apache.org/jira/browse/DERBY-5185?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Dag H. Wanvik updated DERBY-5185:
---------------------------------

    Attachment: derby-5185-3a.diff

Since we don't have a lot of time to gain confidence in the code right now with the impending
release, I'd like to avoid the possibility of further hangs in the interrupt handling by committing
a follow-up patch which adds max waiting time logic to the two remaining loops in the code
for threads waiting for a condition to become true: the "gain entry" logic in readPage and
writePage. It should not be necessary now that we have fixed the state maintenance code, but
just to be safe.. In normal operation it does not add overhead (just one extra counter comparison)
so it seems a cheap price to pay to avoid the prospect of a hang during shutdown - (which
constitute regression). If we max out we will throw FILE_IO_INTERRUPTED as elsewhere. Uploading
derby-5185-3a for this.

> store/rollForwardRecovery.sql stuck in RAFContainer4.recoverContainerAfterInterrupt()
during shutdown
> -----------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-5185
>                 URL: https://issues.apache.org/jira/browse/DERBY-5185
>             Project: Derby
>          Issue Type: Bug
>          Components: Store
>    Affects Versions: 10.9.0.0
>         Environment: Derby 10.9.0.0 alpha - (1090406)
> Oracle Enterprise Linux 6.0
> Linux 2.6.32-100.28.9.el6.x86_64 #1 SMP Wed Mar 16 19:24:16 EDT 2011 x86_64 x86_64 x86_64
GNU/Linux
> java version "1.7.0-ea"
> Java(TM) SE Runtime Environment (build 1.7.0-ea-b135)
> Java HotSpot(TM) Client VM (build 21.0-b05, mixed mode, sharing)
>            Reporter: Knut Anders Hatlen
>         Attachments: derby-5185-1a.diff, derby-5185-2a.diff, derby-5185-2a.stat, derby-5185-2b.diff,
derby-5185-3a.diff, stack.txt
>
>
> I have a derbyall that has been running for more than two days now. It seems to be stuck
in the store/rollForwardRecovery.sql test while the engine is shutting down.
> Here's the stack trace for the daemon thread that's stuck:
> "derby.rawStoreDaemon" daemon prio=10 tid=0xf3e7dc00 nid=0x3505 waiting on condition
[0xf4066000]
>    java.lang.Thread.State: TIMED_WAITING (sleeping)
>         at java.lang.Thread.sleep(Native Method)
>         at org.apache.derby.impl.store.raw.data.RAFContainer4.recoverContainerAfterInterrupt(Unknown
Source)
>         at org.apache.derby.impl.store.raw.data.RAFContainer4.readPage(Unknown Source)
>         at org.apache.derby.impl.store.raw.data.RAFContainer4.readPage(Unknown Source)
>         at org.apache.derby.impl.store.raw.data.CachedPage.readPage(Unknown Source)
>         at org.apache.derby.impl.store.raw.data.CachedPage.setIdentity(Unknown Source)
>         at org.apache.derby.impl.services.cache.ConcurrentCache.find(Unknown Source)
>         at org.apache.derby.impl.store.raw.data.FileContainer.getAllocPage(Unknown Source)
>         at org.apache.derby.impl.store.raw.data.BaseContainer.getAllocPage(Unknown Source)
>         at org.apache.derby.impl.store.raw.data.BaseContainerHandle.getAllocPage(Unknown
Source)
>         at org.apache.derby.impl.store.raw.data.FileContainer.deallocatePagenum(Unknown
Source)
>         - locked <0xc5adbce8> (a org.apache.derby.impl.store.raw.data.AllocationCache)
>         at org.apache.derby.impl.store.raw.data.FileContainer.deallocatePage(Unknown
Source)
>         at org.apache.derby.impl.store.raw.data.BaseContainer.removePage(Unknown Source)
>         at org.apache.derby.impl.store.raw.data.BaseContainerHandle.removePage(Unknown
Source)
>         at org.apache.derby.impl.store.access.heap.HeapController.removePage(Unknown
Source)
>         at org.apache.derby.impl.store.access.heap.HeapPostCommit.purgeCommittedDeletes(Unknown
Source)
>         at org.apache.derby.impl.store.access.heap.HeapPostCommit.performWork(Unknown
Source)
>         at org.apache.derby.impl.services.daemon.BasicDaemon.serviceClient(Unknown Source)
>         at org.apache.derby.impl.services.daemon.BasicDaemon.work(Unknown Source)
>         at org.apache.derby.impl.services.daemon.BasicDaemon.run(Unknown Source)
>         at java.lang.Thread.run(Thread.java:722)
> And here's the stack trace for the main thread, which is waiting for the daemon thread
to stop:
> "main" prio=10 tid=0xf6c05c00 nid=0x34e5 in Object.wait() [0xf6dbe000]
>    java.lang.Thread.State: WAITING (on object monitor)
>         at java.lang.Object.wait(Native Method)
>         - waiting on <0xc5ac5760> (a org.apache.derby.impl.services.daemon.BasicDaemon)
>         at java.lang.Object.wait(Object.java:504)
>         at org.apache.derby.impl.services.daemon.BasicDaemon.pause(Unknown Source)
>         - locked <0xc5ac5760> (a org.apache.derby.impl.services.daemon.BasicDaemon)
>         at org.apache.derby.impl.services.daemon.BasicDaemon.stop(Unknown Source)
>         at org.apache.derby.impl.store.raw.RawStore.stop(Unknown Source)
>         at org.apache.derby.impl.services.monitor.TopService.stop(Unknown Source)
>         at org.apache.derby.impl.services.monitor.TopService.shutdown(Unknown Source)
>         at org.apache.derby.impl.services.monitor.BaseMonitor.shutdown(Unknown Source)
>         at org.apache.derby.impl.services.monitor.BaseMonitor.shutdown(Unknown Source)
>         at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
>         at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown Source)
>         at java.sql.DriverManager.getConnection(DriverManager.java:620)
>         at java.sql.DriverManager.getConnection(DriverManager.java:222)
>         at org.apache.derby.impl.tools.ij.utilMain.cleanupGo(Unknown Source)
>         at org.apache.derby.impl.tools.ij.utilMain.go(Unknown Source)
>         at org.apache.derby.impl.tools.ij.Main.go(Unknown Source)
>         at org.apache.derby.impl.tools.ij.Main.mainCore(Unknown Source)
>         at org.apache.derby.impl.tools.ij.Main.main(Unknown Source)
>         at org.apache.derby.tools.ij.main(Unknown Source)

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message