db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Knut Anders Hatlen <knut.hat...@oracle.com>
Subject Re: Is shutting down databases and the engine thread safe?
Date Fri, 06 Dec 2013 12:28:37 GMT
Dyre Tjeldvoll <Dyre.Tjeldvoll@oracle.com> writes:

> Hi,
>
> I'm wondering if it is safe
>
> to call to
> DriverManager.getConncetion("jdbc:derby:somedb;shutdown=true") and
> DriverManager.getConncetion("jdbc:derby:;shutdown=true")
>
> from two threads simultaneously?

Apparently not... :-/

https://issues.apache.org/jira/browse/DERBY-4447 talks about adding a
block mechanism, where one of the goals is to allow graceful shutdowns
when multiple threads access the database.

> I seem to be in a situation where these two calls deadlock.
>
> The first thread is at
>
> "main" prio=10 tid=0x00007ff04c00a000 nid=0x639e waiting on condition
> [0x00007ff05102d000]
>    java.lang.Thread.State: TIMED_WAITING (sleeping)
> 	at java.lang.Thread.sleep(Native Method)
> 	at
> org.apache.derby.impl.store.raw.data.RAFContainer.clean(RAFContainer.java:518)
> 	- locked <0x000000078665bbb0> (a org.apache.derby.impl.store.raw.data.RAFContainer4)

[...]

> while the second is at
>
> "Thread-2" prio=10 tid=0x00007ff04c386000 nid=0x63c0 waiting on
> condition [0x00007ff0442c6000]
>    java.lang.Thread.State: RUNNABLE
> 	at org.apache.derby.iapi.services.context.ContextManager.<init>(ContextManager.java:121)

How odd... That line is

    private final HashMap<String,CtxStack> ctxTable = new HashMap<String,CtxStack>();

which shouldn't do any locking, so far as I can see.

-- 
Knut Anders

Mime
View raw message