db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Knut Anders Hatlen (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-3077) Trying to reconnect with derby client after bringing server down throws SQL Exception 58009 rather than 08XXX exception
Date Tue, 18 Sep 2007 21:27:43 GMT

    [ https://issues.apache.org/jira/browse/DERBY-3077?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12528570
] 

Knut Anders Hatlen commented on DERBY-3077:
-------------------------------------------

Looks good! There was one white-space change in messages.xml, though:

@@ -2614,7 +2645,7 @@
 
             <msg>
                 <name>58009.C.2</name>
-                <text>SocketException: '{0}'</text>
+                <text> SocketException: '{0}'</text>
                 <arg>error</arg>
             </msg>

Is there any reason why we cannot remove the XX_MOVED_TO_8006 constants? (and their corresponding
messages in messages.xml)

Could the localized messages also be updated? (that would just involve replacing the message
ids, no language skills are needed I think)

> Trying to reconnect with derby client after bringing server down throws SQL Exception
58009 rather than 08XXX exception
> -----------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-3077
>                 URL: https://issues.apache.org/jira/browse/DERBY-3077
>             Project: Derby
>          Issue Type: Bug
>          Components: JDBC
>    Affects Versions: 10.2.2.0
>            Reporter: Kathey Marsden
>            Assignee: Kathey Marsden
>             Fix For: 10.3.1.5, 10.4.0.0
>
>         Attachments: derby-3077_diff.txt, derby-3077_stat.txt
>
>
> This issue was discussed in DERBY-401, because the case where the server is brought down
and an application tries to reconnect does not throw a SQLNonTransientException.  Discussion
is still underway about whether 58XXX exceptions should be SQLNonTransientExceptions, but
at least for this case changing the exception to 08006 per Knut's suggestion should correct
the problem for this case. See https://issues.apache.org/jira/browse/DERBY-401#action_12527400
> Below is current stack and test case.
> Apache Derby
> got connection now sleep
> now try to use the connection after you killed the nS
> Exception in thread "main" java.sql.SQLException: A communications error has been detected:
Software caused connection abort: recv failed.
> at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source)
> at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
> at org.apache.derby.client.am.Connection.prepareStatement(Unknown Source)
> at org.apache.derby.client.am.LogicalConnection.prepareStatement(Unknown Source)
> at DerbyClientNonXA.main(DerbyClientNonXA.java:48)
> Caused by: org.apache.derby.client.am.DisconnectException: A communications error has
been detected: Software caused connection abort: recv failed.
> at org.apache.derby.client.net.NetAgent.throwCommunicationsFailure(Unknown Source)
> at org.apache.derby.client.net.Reply.fill(Unknown Source)
> at org.apache.derby.client.net.Reply.ensureALayerDataInBuffer(Unknown Source)
> at org.apache.derby.client.net.Reply.readDssHeader(Unknown Source)
> at org.apache.derby.client.net.Reply.startSameIdChainParse(Unknown Source)
> at org.apache.derby.client.net.NetStatementReply.readPrepareDescribeOutput(Unknown Source)
> at org.apache.derby.client.net.StatementReply.readPrepareDescribeOutput(Unknown Source)
> at org.apache.derby.client.net.NetStatement.readPrepareDescribeOutput_(Unknown Source)
> at org.apache.derby.client.am.Statement.readPrepareDescribeOutput(Unknown Source)
> at org.apache.derby.client.am.PreparedStatement.readPrepareDescribeInputOutput(Unknown
Source)
> at org.apache.derby.client.am.PreparedStatement.flowPrepareDescribeInputOutput(Unknown
Source)
> at org.apache.derby.client.am.PreparedStatement.prepare(Unknown Source)
> at org.apache.derby.client.am.Connection.prepareStatementX(Unknown Source)
> ... 3 more
> Caused by: java.net.SocketException: Software caused connection abort: recv failed
> at java.net.SocketInputStream.read(SocketInputStream.java:129)
> ... 15 more
> import java.sql.Connection;
> import java.sql.DatabaseMetaData;
> import java.sql.PreparedStatement;
> import java.sql.SQLException;
> import java.sql.Statement;
> import javax.sql.PooledConnection;
> public class DerbyClientNonXA
> {
> public static void main(String args[]) throws Exception
> {
> org.apache.derby.jdbc.ClientConnectionPoolDataSource40 ds = new org.apache.derby.jdbc.ClientConnectionPoolDataSource40();
> Connection conn = null;
> ds.setDatabaseName("e:\\temp\\sampl127;create=true");
> PooledConnection pooledCon = ds.getPooledConnection();
> conn = pooledCon.getConnection();
> DatabaseMetaData md = conn.getMetaData();
> System.out.println(md.getDatabaseProductVersion());
> System.out.println(md.getDatabaseProductName());
> System.out.println("got connection now sleep. Bring down network server.");
> Statement st = null;
> PreparedStatement ps1 = null;
> st = conn.createStatement();
> try
> {
> st.executeUpdate("drop table TAB1");
> }
> catch (SQLException x)
> {
> System.out.println("no table exists");
> }
> Thread.sleep(15000);
> System.out.println("now try to use the connection after you killed the nS");
> ps1 = conn.prepareStatement("CREATE TABLE TAB1(COL1 INT NOT NULL)");
> ps1.executeUpdate();
> conn.commit();
> System.out.println("done");
> }
> }

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


Mime
View raw message