db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kathey Marsden (JIRA)" <derby-...@db.apache.org>
Subject [jira] Updated: (DERBY-1173) conglomerate (129) requested does not exist error on create table after aborting and rerunning jdbcapi/checkDataSource test with client.
Date Mon, 10 Apr 2006 17:01:02 GMT
     [ http://issues.apache.org/jira/browse/DERBY-1173?page=all ]

Kathey Marsden updated DERBY-1173:
----------------------------------

    Description: 
I am changing the description of this bug because I have a clearer reproducible case for it
and the old description has some information that is probably not relevant.

If jdbcapi/checkDataSource30.java is aborted at a certain point in the test and then rerun
with the server still running, it will give a conglomerate not found error and the database
will be corrupted. 

To Reproduce:

1)  Enable checkDataSource30.java by taking it out of functionTests/suites/DerbyNetClient.exclude.

2) Run the test with client.
java -Dij.exceptionTrace=true -Dkeepfiles=true -Dframework=DerbyNetClient org.apache.derbyTesting.functionTests.harness.RunTest
jdbcapi/checkDataSource30.java


3) In a separate window,  tail the test output until you see the line:
"DriverManager  <closedstmt>.execute() null - Invalid operation: statement close"
e.g.
  tail -f derbynetclient/checkDataSource30.tmp
auto commit     true
  read only       false
setTypeMap(EMPTY_MAP) - FAIL 0A000 - Feature not implemented: setTypeMap.
setTypeMap(null) - ok 0A000 - Feature not implemented: setTypeMap.
setTypeMap(map) - ok 0A000 - Feature not implemented: setTypeMap.
method calls on a closed connection
DriverManager  <closedconn>.close() no error
DriverManager  <closedconn>.createStatement() 08003 - No current connection.
DriverManager  <closedstmt>.execute() null - Invalid operation: statement close

3) Abort the test run by pressing <ctrl> c


4) Rerun the test  without taking the server down
java -Dij.exceptionTrace=true -Dkeepfiles=true -Dframework=DerbyNetClient org.apache.derbyTesting.functionTests.harness.RunTest
jdbcapi/checkDataSource30.java

The following exception will occur on create table and the database will be corrupt.

2006-03-31 19:18:47.370 GMT Thread[DRDAConnThread_6,5,main] (XID = 200), (SESSIONID = 1),
(DATABASE = wombat), (DRDAID = NF000001.G90E-1097469790362120575{12}), Cleanup action starting

2006-03-31 19:18:47.370 GMT Thread[DRDAConnThread_6,5,main] (XID = 200), (SESSIONID = 1),
(DATABASE = wombat), (DRDAID = NF000001.G90E-1097469790362120575{12}), Failed Statement is:
create table y(i int)

ERROR XSAI2: The conglomerate (129) requested does not exist.

at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:311)

at org.apache.derby.impl.store.access.btree.index.B2IFactory.readConglomerate(B2IFactory.java:241)

at org.apache.derby.impl.store.access.RAMAccessManager.conglomCacheFind(RAMAccessManager.java:484)

at org.apache.derby.impl.store.access.RAMTransaction.findExistingConglomerate(RAMTransaction.java:389)

at org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(RAMTransaction.java:1315)

at org.apache.derby.impl.sql.catalog.TabInfoImpl.insertRowListImpl(TabInfoImpl.java:525)

at org.apache.derby.impl.sql.catalog.TabInfoImpl.insertRow(TabInfoImpl.java:419)

at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.addDescriptorNow(DataDictionaryImpl.java:1637)

at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.addDescriptor(DataDictionaryImpl.java:1624)

at org.apache.derby.impl.sql.execute.CreateTableConstantAction.executeConstantAction(CreateTableConstantAction.java:223)

at org.apache.derby.impl.sql.execute.MiscResultSet.open(MiscResultSet.java:56)

at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:361)

at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1160)

at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:567)

at org.apache.derby.impl.jdbc.EmbedStatement.executeUpdate(EmbedStatement.java:158)

at org.apache.derby.impl.drda.DRDAConnThread.parseEXCSQLIMM(DRDAConnThread.java:4395)

at org.apache.derby.impl.drda.DRDAConnThread.processCommands(DRDAConnThread.java:645)

at org.apache.derby.impl.drda.DRDAConnThread.run(DRDAConnThread.java:236)

Cleanup action completed

Apache Derby Network Server - 10.2.0.0 alpha shutdown at 2006-03-31 19:18:48.601 GMT


Note: This tests hangs intermittently.  When it does, it always hangs at the point mentioned
in the reproduction for this issue.

Some relevant history regarding the test hang:

At revision 380672 I never saw the test hang
At revision 390481 I noticed it had started hanging consistently.
With the fix for DERBY-1144 the hang became intermittent.
The hang happens more on jdk 1.5 and jdk 1.6.




  was:
I had been working on the checkDataSource test a few weeks ago, to get it working with client
but did not bring it into a suite at that time unfortunately.

jdbcapi/checkDataSource.java now hangs with client.  If I abort the test with <ctrl>
c and rerun it fails on create table with:


 Booting Derby version The Apache Software Foundation - Apache Derby - 10.2.0.0 alpha - (1):
instance c013800d-010a-51bb-ae54-0000048a8d0f
on database directory D:\testout4\DerbyNetClient\checkDataSource\wombat  


Database Class Loader started - derby.database.classpath=''

Could not listen on port 1527 on host localhost.

2006-03-31 19:18:47.370 GMT Thread[DRDAConnThread_6,5,main] (XID = 200), (SESSIONID = 1),
(DATABASE = wombat), (DRDAID = NF000001.G90E-1097469790362120575{12}), Cleanup action starting

2006-03-31 19:18:47.370 GMT Thread[DRDAConnThread_6,5,main] (XID = 200), (SESSIONID = 1),
(DATABASE = wombat), (DRDAID = NF000001.G90E-1097469790362120575{12}), Failed Statement is:
create table y(i int)

ERROR XSAI2: The conglomerate (129) requested does not exist.

	at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:311)

	at org.apache.derby.impl.store.access.btree.index.B2IFactory.readConglomerate(B2IFactory.java:241)

	at org.apache.derby.impl.store.access.RAMAccessManager.conglomCacheFind(RAMAccessManager.java:484)

	at org.apache.derby.impl.store.access.RAMTransaction.findExistingConglomerate(RAMTransaction.java:389)

	at org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(RAMTransaction.java:1315)

	at org.apache.derby.impl.sql.catalog.TabInfoImpl.insertRowListImpl(TabInfoImpl.java:525)

	at org.apache.derby.impl.sql.catalog.TabInfoImpl.insertRow(TabInfoImpl.java:419)

	at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.addDescriptorNow(DataDictionaryImpl.java:1637)

	at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.addDescriptor(DataDictionaryImpl.java:1624)

	at org.apache.derby.impl.sql.execute.CreateTableConstantAction.executeConstantAction(CreateTableConstantAction.java:223)

	at org.apache.derby.impl.sql.execute.MiscResultSet.open(MiscResultSet.java:56)

	at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:361)

	at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1160)

	at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:567)

	at org.apache.derby.impl.jdbc.EmbedStatement.executeUpdate(EmbedStatement.java:158)

	at org.apache.derby.impl.drda.DRDAConnThread.parseEXCSQLIMM(DRDAConnThread.java:4395)

	at org.apache.derby.impl.drda.DRDAConnThread.processCommands(DRDAConnThread.java:645)

	at org.apache.derby.impl.drda.DRDAConnThread.run(DRDAConnThread.java:236)

Cleanup action completed

Apache Derby Network Server - 10.2.0.0 alpha shutdown at 2006-03-31 19:18:48.601 GMT


There is some relevant revison history:

At r 380672   I made some changes to the test and the test passed with client
At r 387611   I made some comment changes and accidently enabled one of the 
failing client cases.
At r 390481   I disabled the test for DERBY-1047 with client again, so the tests at 380672
(which passed) and the current test are the same.



With the following patch for  DERBY-1144 the test does not normally hang.  I 
don't know why and am a bit hesitant to check this patch in since it might be masking something
serious.



Index: java/client/org/apache/derby/client/ClientPooledConnection.java

===================================================================

--- java/client/org/apache/derby/client/ClientPooledConnection.java    (revision 
387603)

+++ java/client/org/apache/derby/client/ClientPooledConnection.java    (working 
copy)

@@ -172,11 +172,14 @@

             }
             createLogicalConnection();
 
+           
             if (!newPC_) {
-                physicalConnection_.reset(logWriter_, user_, password_, ds_, 
false); // false means do not recompute
+                // DERBY-1144 changed the last parameter of this method to true
+                // to reset the connection state to the default on
+                // PooledConnection.getConnection() otherwise the
+                // isolation level was not correct and out of sync with the server.
+                physicalConnection_.reset(logWriter_, user_, password_, ds_, true);
             }
-            // properties from the dataSource
-            // properties don't change
             else {
                 physicalConnection_.lightReset();    //poolfix
       }


>  conglomerate (129) requested does not exist error on create table after aborting and
rerunning  jdbcapi/checkDataSource  test with client.
> -------------------------------------------------------------------------------------------------------------------------------------------
>
>          Key: DERBY-1173
>          URL: http://issues.apache.org/jira/browse/DERBY-1173
>      Project: Derby
>         Type: Bug

>   Components: Network Client, Store
>     Versions: 10.0.2.1
>     Reporter: Kathey Marsden
>     Priority: Critical
>      Fix For: 10.2.0.0
>  Attachments: first_run_testfiles_afterhang.zip, rerun_test_files_with_corrupt_db.zip,
traces_on_hang.txt
>
> I am changing the description of this bug because I have a clearer reproducible case
for it and the old description has some information that is probably not relevant.
> If jdbcapi/checkDataSource30.java is aborted at a certain point in the test and then
rerun with the server still running, it will give a conglomerate not found error and the database
will be corrupted. 
> To Reproduce:
> 1)  Enable checkDataSource30.java by taking it out of functionTests/suites/DerbyNetClient.exclude.
> 2) Run the test with client.
> java -Dij.exceptionTrace=true -Dkeepfiles=true -Dframework=DerbyNetClient org.apache.derbyTesting.functionTests.harness.RunTest
jdbcapi/checkDataSource30.java
> 3) In a separate window,  tail the test output until you see the line:
> "DriverManager  <closedstmt>.execute() null - Invalid operation: statement close"
> e.g.
>   tail -f derbynetclient/checkDataSource30.tmp
> auto commit     true
>   read only       false
> setTypeMap(EMPTY_MAP) - FAIL 0A000 - Feature not implemented: setTypeMap.
> setTypeMap(null) - ok 0A000 - Feature not implemented: setTypeMap.
> setTypeMap(map) - ok 0A000 - Feature not implemented: setTypeMap.
> method calls on a closed connection
> DriverManager  <closedconn>.close() no error
> DriverManager  <closedconn>.createStatement() 08003 - No current connection.
> DriverManager  <closedstmt>.execute() null - Invalid operation: statement close
> 3) Abort the test run by pressing <ctrl> c
> 4) Rerun the test  without taking the server down
> java -Dij.exceptionTrace=true -Dkeepfiles=true -Dframework=DerbyNetClient org.apache.derbyTesting.functionTests.harness.RunTest
jdbcapi/checkDataSource30.java
> The following exception will occur on create table and the database will be corrupt.
> 2006-03-31 19:18:47.370 GMT Thread[DRDAConnThread_6,5,main] (XID = 200), (SESSIONID =
1), (DATABASE = wombat), (DRDAID = NF000001.G90E-1097469790362120575{12}), Cleanup action
starting
> 2006-03-31 19:18:47.370 GMT Thread[DRDAConnThread_6,5,main] (XID = 200), (SESSIONID =
1), (DATABASE = wombat), (DRDAID = NF000001.G90E-1097469790362120575{12}), Failed Statement
is: create table y(i int)
> ERROR XSAI2: The conglomerate (129) requested does not exist.
> at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:311)
> at org.apache.derby.impl.store.access.btree.index.B2IFactory.readConglomerate(B2IFactory.java:241)
> at org.apache.derby.impl.store.access.RAMAccessManager.conglomCacheFind(RAMAccessManager.java:484)
> at org.apache.derby.impl.store.access.RAMTransaction.findExistingConglomerate(RAMTransaction.java:389)
> at org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(RAMTransaction.java:1315)
> at org.apache.derby.impl.sql.catalog.TabInfoImpl.insertRowListImpl(TabInfoImpl.java:525)
> at org.apache.derby.impl.sql.catalog.TabInfoImpl.insertRow(TabInfoImpl.java:419)
> at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.addDescriptorNow(DataDictionaryImpl.java:1637)
> at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.addDescriptor(DataDictionaryImpl.java:1624)
> at org.apache.derby.impl.sql.execute.CreateTableConstantAction.executeConstantAction(CreateTableConstantAction.java:223)
> at org.apache.derby.impl.sql.execute.MiscResultSet.open(MiscResultSet.java:56)
> at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:361)
> at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1160)
> at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:567)
> at org.apache.derby.impl.jdbc.EmbedStatement.executeUpdate(EmbedStatement.java:158)
> at org.apache.derby.impl.drda.DRDAConnThread.parseEXCSQLIMM(DRDAConnThread.java:4395)
> at org.apache.derby.impl.drda.DRDAConnThread.processCommands(DRDAConnThread.java:645)
> at org.apache.derby.impl.drda.DRDAConnThread.run(DRDAConnThread.java:236)
> Cleanup action completed
> Apache Derby Network Server - 10.2.0.0 alpha shutdown at 2006-03-31 19:18:48.601 GMT
> Note: This tests hangs intermittently.  When it does, it always hangs at the point mentioned
in the reproduction for this issue.
> Some relevant history regarding the test hang:
> At revision 380672 I never saw the test hang
> At revision 390481 I noticed it had started hanging consistently.
> With the fix for DERBY-1144 the hang became intermittent.
> The hang happens more on jdk 1.5 and jdk 1.6.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message