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

Tiago R. Espinha commented on DERBY-4310:
-----------------------------------------

At this point I have took on Kathey's suggestion and I have the close() method 
in BrokeredPreparedStatement invoking the closeRealPreparedStatement() method 
in the control (XAControl) property. This last method invokes the close() on 
the realPreparedStatement object.

This solution does make the error go away (since we jump straight away to 
closing without repreparing) but for the suites.All run we added another change 
that seems to be causing mayhem. Under the getRealPreparedStatement() method we 
removed the try...catch block in the following piece of code:
try {
        realPreparedStatement.close();
} catch (SQLException sqle) {
}

It is possible that this piece of code was hiding exceptions similar to the 
ones we are facing now, but this will also hide any other SQLException in the 
process, which is less than ideal.

However, by removing the try..catch block, the suites.All would hang on the 
testSystemShutdown, so to temporarily avert this behavior I have removed the 
exception.getMessage() on the server shutdown, which will crash when the 
exception is an NPE. Still, this test seems to be hanging nonetheless.

> jdbcapi.XATest passes but shows Table/View 'APP.FOO' does not exist. under 
> logs/serverConsoleOutput.log
> -------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-4310
>                 URL: https://issues.apache.org/jira/browse/DERBY-4310
>             Project: Derby
>          Issue Type: Bug
>    Affects Versions: 10.6.0.0
>            Reporter: Tiago R. Espinha
>            Assignee: Tiago R. Espinha
>         Attachments: ReproDerby4310.java, ReproDerby4310.java, 
> ReproDerby4310.java, ReproEmbeddedDerby4310.java, Tests.zip, utilXid.java, 
> XATestLog.tar.gz
>
>
> The XATest is showing the following on the log:
> 2009-07-16 00:15:42.838 GMT : Apache Derby Network Server - 10.6.0.0 alpha - 
> (794457M) started and ready to accept connections on port 9920
> 2009-07-16 00:15:44.394 GMT : Unexpected exception:
>  Table/View 'APP.FOO' does not exist.
> Here is the full stack trace  from derby.log.  The error comes closing a 
> prepared statement on a brokered connection if the table referenced by the 
> statement has been dropped.  This looks like an embedded bug causing network 
> server shutdown to fail.  Also if this test is enabled in a suite DERBY-4155, 
> the next time network server is started the tests will hang with 
> java.net.BindException: Address already in use: NET_Bind in the derby.log
> 2009-07-16 17:05:45.062 GMT 
> Thread[derby.NetworkServerStarter,5,derby.daemons] (XID = 497), (SESSIONID = 
> 53), (DATABASE = wombat), (DRDAID = {7}), Failed Statement is: SELECT * FROM 
> APP.FOO
> ERROR 42X05: Table/View 'APP.FOO' does not exist.
>       at 
> org.apache.derby.iapi.error.StandardException.newException(StandardException.java:286)
>       at 
> org.apache.derby.impl.sql.compile.FromBaseTable.bindTableDescriptor(FromBaseTable.java:2463)
>       at 
> org.apache.derby.impl.sql.compile.FromBaseTable.bindNonVTITables(FromBaseTable.java:2183)
>       at 
> org.apache.derby.impl.sql.compile.FromList.bindTables(FromList.java:310)
>       at 
> org.apache.derby.impl.sql.compile.SelectNode.bindNonVTITables(SelectNode.java:390)
>       at 
> org.apache.derby.impl.sql.compile.DMLStatementNode.bindTables(DMLStatementNode.java:199)
>       at 
> org.apache.derby.impl.sql.compile.DMLStatementNode.bind(DMLStatementNode.java:137)
>       at 
> org.apache.derby.impl.sql.compile.CursorNode.bindStatement(CursorNode.java:245)
>       at 
> org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java:316)
>       at 
> org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.java:88)
>       at 
> org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(GenericLanguageConnectionContext.java:822)
>       at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(EmbedPreparedStatement.java:129)
>       at 
> org.apache.derby.jdbc.Driver40.newEmbedPreparedStatement(Driver40.java:105)
>       at 
> org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:1542)
>       at 
> org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:1423)
>       at 
> org.apache.derby.iapi.jdbc.BrokeredPreparedStatement30.createDuplicateStatement(BrokeredPreparedStatement30.java:56)
>       at 
> org.apache.derby.jdbc.XAStatementControl.getRealPreparedStatement(XAStatementControl.java:143)
>       at 
> org.apache.derby.iapi.jdbc.BrokeredPreparedStatement.getPreparedStatement(BrokeredPreparedStatement.java:526)
>       at 
> org.apache.derby.iapi.jdbc.BrokeredPreparedStatement.getStatement(BrokeredPreparedStatement.java:533)
>       at 
> org.apache.derby.iapi.jdbc.BrokeredStatement.close(BrokeredStatement.java:130)
>       at 
> org.apache.derby.impl.drda.DRDAStatement.close(DRDAStatement.java:1027)
>       at org.apache.derby.impl.drda.Database.close(Database.java:352)
>       at org.apache.derby.impl.drda.Session.close(Session.java:115)
>       at 
> org.apache.derby.impl.drda.NetworkServerControlImpl.blockingStart(NetworkServerControlImpl.java:833)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:45)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
>       at java.lang.reflect.Method.invoke(Method.java:599)
>       at 
> org.apache.derby.iapi.jdbc.DRDAServerStarter.run(DRDAServerStarter.java:236)
>       at java.lang.Thread.run(Thread.java:735)
> Cleanup action completed
> 2009-07-16 17:05:45.078 GMT : Unexpected exception:
>  Table/View 'APP.FOO' does not exist.
> An exception was thrown during network server startup. 
> DRDA_UnexpectedException.S:Unexpected exception:
>  Table/View 'APP.FOO' does not exist.
> java.lang.reflect.InvocationTargetException
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:45)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
>       at java.lang.reflect.Method.invoke(Method.java:599)
>       at 
> org.apache.derby.iapi.jdbc.DRDAServerStarter.run(DRDAServerStarter.java:236)
>       at java.lang.Thread.run(Thread.java:735)
> Caused by: java.lang.Exception: DRDA_UnexpectedException.S:Unexpected 
> exception:
>  Table/View 'APP.FOO' does not exist.
>       at 
> org.apache.derby.impl.drda.NetworkServerControlImpl.consolePropertyMessageWork(NetworkServerControlImpl.java:3216)
>       at 
> org.apache.derby.impl.drda.NetworkServerControlImpl.consolePropertyMessage(NetworkServerControlImpl.java:1885)
>       at 
> org.apache.derby.impl.drda.NetworkServerControlImpl.blockingStart(NetworkServerControlImpl.java:835)
>       ... 6 more

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

Reply via email to