db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Sitsky <david.sit...@gmail.com>
Subject Syncronisation contention in application startup connecting to huge numbers of derby databases
Date Mon, 20 Feb 2012 06:51:19 GMT
Hi,

I have an application on very beefy hardware, which for better or
worse, has a gigantic number of derby databases it has to open on
startup.  I have some multi-threaded code which opens the databases in
parallel, but I have found many of the threads are stuck in one or two
states as seen below:

Is there any way this contention can be avoided?  In this situation,
it can take an hour to open all the databases due to the serialisation
that is present.  Any advice would be highly appreciated.

Cheers,
David

java.lang.Thread.State: BLOCKED (on object monitor)
	at org.apache.derby.impl.services.monitor.BaseMonitor.findTopService(BaseMonitor.java:541)
	- waiting to lock <0x00000001507f61a0> (a
org.apache.derby.impl.services.monitor.FileMonitor)
	at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:529)
	at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:427)
	at org.apache.derby.impl.store.raw.RawStore.boot(RawStore.java:190)
	at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1982)
	at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:334)
	at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:531)
	at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:427)
	at org.apache.derby.impl.store.access.RAMAccessManager.boot(RAMAccessManager.java:1019)
	at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1982)
	at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:334)
	at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:531)
	at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:427)
	at org.apache.derby.impl.db.BasicDatabase.bootStore(BasicDatabase.java:749)
	at org.apache.derby.impl.db.BasicDatabase.boot(BasicDatabase.java:177)
	at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1982)
	at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:334)
	at org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java:1816)
	at org.apache.derby.impl.services.monitor.BaseMonitor.startProviderService(BaseMonitor.java:1682)
	at org.apache.derby.impl.services.monitor.BaseMonitor.findProviderAndStartService(BaseMonitor.java:1509)
	at org.apache.derby.impl.services.monitor.BaseMonitor.startPersistentService(BaseMonitor.java:979)
	at org.apache.derby.iapi.services.monitor.Monitor.startPersistentService(Monitor.java:550)
	at org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(EmbedConnection.java:2697)
	at org.apache.derby.impl.jdbc.EmbedConnection.<init>(EmbedConnection.java:385)
	at org.apache.derby.impl.jdbc.EmbedConnection30.<init>(EmbedConnection30.java:73)
	at org.apache.derby.impl.jdbc.EmbedConnection40.<init>(EmbedConnection40.java:51)
	at org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Driver40.java:70)
	at org.apache.derby.jdbc.InternalDriver.connect(InternalDriver.java:248)
	at org.apache.derby.jdbc.EmbeddedDataSource.getConnection(EmbeddedDataSource.java:480)
	at org.apache.derby.jdbc.EmbedPooledConnection.openRealConnection(EmbedPooledConnection.java:178)
	at org.apache.derby.jdbc.EmbedPooledConnection.<init>(EmbedPooledConnection.java:119)
	at org.apache.derby.jdbc.EmbedPooledConnection40.<init>(EmbedPooledConnection40.java:54)
	at org.apache.derby.jdbc.Driver40.getNewPooledConnection(Driver40.java:178)
	at org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource.createPooledConnection(EmbeddedConnectionPoolDataSource.java:129)
	at org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource.getPooledConnection(EmbeddedConnectionPoolDataSource.java:75)
...

and here is another example:

java.lang.Thread.State: BLOCKED (on object monitor)
	at org.apache.derby.impl.services.monitor.FileMonitor.getJVMProperty(FileMonitor.java:218)
	- waiting to lock <0x00000001507f61a0> (a
org.apache.derby.impl.services.monitor.FileMonitor)
	at org.apache.derby.iapi.services.property.PropertyUtil.getServiceProperty(PropertyUtil.java:304)
	at org.apache.derby.iapi.services.property.PropertyUtil.getServiceProperty(PropertyUtil.java:333)
	at org.apache.derby.iapi.services.property.PropertyUtil.getServiceBoolean(PropertyUtil.java:374)
	at org.apache.derby.impl.store.access.RllRAMAccessManager.bootLookupSystemLockLevel(RllRAMAccessManager.java:99)
	at org.apache.derby.impl.store.access.RAMAccessManager.boot(RAMAccessManager.java:1158)
	at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1982)
	at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:334)
	at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(BaseMonitor.java:531)
	at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Monitor.java:427)
	at org.apache.derby.impl.db.BasicDatabase.bootStore(BasicDatabase.java:749)
	at org.apache.derby.impl.db.BasicDatabase.boot(BasicDatabase.java:177)
	at org.apache.derby.impl.services.monitor.BaseMonitor.boot(BaseMonitor.java:1982)
	at org.apache.derby.impl.services.monitor.TopService.bootModule(TopService.java:334)
	at org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java:1816)
	at org.apache.derby.impl.services.monitor.BaseMonitor.startProviderService(BaseMonitor.java:1682)
	at org.apache.derby.impl.services.monitor.BaseMonitor.findProviderAndStartService(BaseMonitor.java:1509)
	at org.apache.derby.impl.services.monitor.BaseMonitor.startPersistentService(BaseMonitor.java:979)
	at org.apache.derby.iapi.services.monitor.Monitor.startPersistentService(Monitor.java:550)
	at org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(EmbedConnection.java:2697)
	at org.apache.derby.impl.jdbc.EmbedConnection.<init>(EmbedConnection.java:385)
	at org.apache.derby.impl.jdbc.EmbedConnection30.<init>(EmbedConnection30.java:73)
	at org.apache.derby.impl.jdbc.EmbedConnection40.<init>(EmbedConnection40.java:51)
	at org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Driver40.java:70)
	at org.apache.derby.jdbc.InternalDriver.connect(InternalDriver.java:248)
	at org.apache.derby.jdbc.EmbeddedDataSource.getConnection(EmbeddedDataSource.java:480)
	at org.apache.derby.jdbc.EmbedPooledConnection.openRealConnection(EmbedPooledConnection.java:178)
	at org.apache.derby.jdbc.EmbedPooledConnection.<init>(EmbedPooledConnection.java:119)
	at org.apache.derby.jdbc.EmbedPooledConnection40.<init>(EmbedPooledConnection40.java:54)
	at org.apache.derby.jdbc.Driver40.getNewPooledConnection(Driver40.java:178)
	at org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource.createPooledConnection(EmbeddedConnectionPoolDataSource.java:129)
	at org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource.getPooledConnection(EmbeddedConnectionPoolDataSource.java:75)
...

Mime
View raw message