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 "Mike Matrigali (JIRA)" <ji...@apache.org> on 2014/02/19 22:58:28 UTC
[jira] [Commented] (DERBY-6110) BrokeredConnection.isClosed() may
open a new connection
[ https://issues.apache.org/jira/browse/DERBY-6110?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13906166#comment-13906166 ]
Mike Matrigali commented on DERBY-6110:
---------------------------------------
i agree with the change proposal. Any idea how one might write a test for this?
> BrokeredConnection.isClosed() may open a new connection
> -------------------------------------------------------
>
> Key: DERBY-6110
> URL: https://issues.apache.org/jira/browse/DERBY-6110
> Project: Derby
> Issue Type: Bug
> Components: JDBC
> Affects Versions: 10.8.2.2
> Reporter: Knut Anders Hatlen
> Labels: derby_triage10_11
>
> I noticed this odd-looking stack trace in the thread dump provided in DERBY-5632:
> "DRDAConnThread_22" prio=3 tid=0x0000000101b81800 nid=0x31 waiting for monitor entry [0xfffffffd236fe000]
> java.lang.Thread.State: BLOCKED (on object monitor)
> at org.apache.derby.impl.store.access.RAMAccessManager.conglomCacheFind(Unknown Source)
> - waiting to lock <0xfffffffd3a7fcc68> (a org.apache.derby.impl.services.cache.ConcurrentCache)
> at org.apache.derby.impl.store.access.RAMTransaction.findExistingConglomerate(Unknown Source)
> at org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(Unknown Source)
> at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getDescriptorViaIndexMinion(Unknown Source)
> at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getDescriptorViaIndex(Unknown Source)
> at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.locateSchemaRow(Unknown Source)
> at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getSchemaDescriptor(Unknown Source)
> at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.initDefaultSchemaDescriptor(Unknown Source)
> at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.initialize(Unknown Source)
> at org.apache.derby.impl.db.BasicDatabase.setupConnection(Unknown Source)
> at org.apache.derby.impl.jdbc.TransactionResourceImpl.startTransaction(Unknown Source)
> at org.apache.derby.impl.jdbc.EmbedConnection.checkUserIsNotARole(Unknown Source)
> at org.apache.derby.impl.jdbc.EmbedConnection.checkUserCredentials(Unknown Source)
> at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source)
> at org.apache.derby.impl.jdbc.EmbedConnection30.<init>(Unknown Source)
> at org.apache.derby.impl.jdbc.EmbedConnection40.<init>(Unknown Source)
> at org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Unknown Source)
> at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
> at org.apache.derby.jdbc.EmbeddedDataSource.getConnection(Unknown Source)
> at org.apache.derby.jdbc.EmbedPooledConnection.openRealConnection(Unknown Source)
> at org.apache.derby.jdbc.EmbedXAConnection.getRealConnection(Unknown Source)
> at org.apache.derby.iapi.jdbc.BrokeredConnection.getRealConnection(Unknown Source)
> at org.apache.derby.iapi.jdbc.BrokeredConnection.isClosed(Unknown Source)
> at org.apache.derby.impl.drda.PiggyBackedSessionData.getInstance(Unknown Source)
> at org.apache.derby.impl.drda.Database.getPiggyBackedSessionData(Unknown Source)
> at org.apache.derby.impl.drda.DRDAConnThread.writePBSD(Unknown Source)
> at org.apache.derby.impl.drda.DRDAConnThread.processCommands(Unknown Source)
> at org.apache.derby.impl.drda.DRDAConnThread.run(Unknown Source)
> It looks as if BrokeredConnection.isClosed() fails to find a usable physical connection and then tries to open a new one. Presumably, when this happens, isClosed() will return false. It sounds more reasonable to return true in such circumstances.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)