error XSDA3 when test is executing SYSCS_INPLACE_COMPRESS_TABLE in specific 
situation
-------------------------------------------------------------------------------------

                 Key: DERBY-3180
                 URL: https://issues.apache.org/jira/browse/DERBY-3180
             Project: Derby
          Issue Type: Bug
          Components: Store
    Affects Versions: 10.4.0.0
            Reporter: Myrna van Lunteren


While attempting to add testing for getBestRowIdentifier from tests 
jdbcapi/bestrowidentifier.sql and jdbcapi.metadata.java to 
jdbcapi.DatabaseMetaDataTest, I ran into an occurrence of ERROR XSDA3: 
Limitation: Record cannot be updated or inserted due to lack of space on the 
page. Use the parameters derby.storage.pageSize and/or 
derby.storage.pageReservedSpace to work around this limitation - but only on 
running the test a second time without removing wombat.

I've tried various approaches in an attempt to narrowing down and make a better 
repro, but was not successful. 
I tried saving the database after running the first time, then executing call 
SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE('SYS', 'SYSDEPENDS', 1, 1, 1) on the 
database using ij; I tried to change the test to use embeddedSuite instead of 
defaultSuite, I tried to removing all other tests than the one I added, but 
nothing repro-ed the issue. I also found that by removing the last table I 
added to the test fixture into a separate test fixture,  the problem went away. 
That is what is currently checked in...
So, I'll attach the DatabaseMetaDataTest.java that reproduced the problem as 
well as derby.log when the error occurs.

The online/inplace compress that is being executed (multiple times) is done in 
the CleanDatabaseSetup.java, and it's on SYS.SYSDEPENDS.

This is the stack trace I get when running the test a second time:
1) DatabaseMetaDataTest:embeddedjava.sql.SQLException: Limitation: Record 
cannot be updated or inserted due to lack of space on the page. Use the 
parameters derby.storage.pageSize and/or derby.storage.pageReservedSpace to 
work around this limitation.
        at 
org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:45)
        at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Util.java:202)
        at 
org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:391)
        at 
org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:346)
        at 
org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:1574)
        at 
org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:81)
        at 
org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1315)
        at 
org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1650)
        at 
org.apache.derby.impl.jdbc.EmbedCallableStatement.executeStatement(EmbedCallableStatement.java:116)
        at 
org.apache.derby.impl.jdbc.EmbedPreparedStatement.execute(EmbedPreparedStatement.java:1305)
        at 
org.apache.derbyTesting.junit.CleanDatabaseTestSetup.compressObjects(CleanDatabaseTestSetup.java:232)
        at 
org.apache.derbyTesting.junit.CleanDatabaseTestSetup.cleanDatabase(CleanDatabaseTestSetup.java:130)
        at 
org.apache.derbyTesting.junit.CleanDatabaseTestSetup.setUp(CleanDatabaseTestSetup.java:73)
        at junit.extensions.TestSetup$1.protect(TestSetup.java:18)
        at junit.extensions.TestSetup.run(TestSetup.java:23)
        at 
org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
Caused by: ERROR XSDA3: Limitation: Record cannot be updated or inserted due to 
lack of space on the page. Use the parameters derby.storage.pageSize and/or 
derby.storage.pageReservedSpace to work around this limitation.
        at 
org.apache.derby.iapi.error.StandardException.newException(StandardException.java:280)
        at 
org.apache.derby.impl.store.raw.data.CopyRowsOperation.writeOptionalDataToBuffer(CopyRowsOperation.java:287)
        at 
org.apache.derby.impl.store.raw.data.CopyRowsOperation.<init>(CopyRowsOperation.java:98)
        at 
org.apache.derby.impl.store.raw.data.LoggableActions.actionCopyRows(LoggableActions.java:159)
        at 
org.apache.derby.impl.store.raw.data.BasePage.copyInto(BasePage.java:2045)
        at 
org.apache.derby.impl.store.raw.data.BasePage.copyAndPurge(BasePage.java:1300)
        at 
org.apache.derby.impl.store.raw.data.StoredPage.moveRecordForCompressAtSlot(StoredPage.java:6920)
        at 
org.apache.derby.impl.store.access.heap.HeapCompressScan.fetchRowsForCompress(HeapCompressScan.java:230)
        at 
org.apache.derby.impl.store.access.heap.HeapCompressScan.fetchNextGroup(HeapCompressScan.java:85)
        at 
org.apache.derby.iapi.db.OnlineCompress.defragmentRows(OnlineCompress.java:375)
        at 
org.apache.derby.iapi.db.OnlineCompress.compressTable(OnlineCompress.java:219)
        at 
org.apache.derby.catalog.SystemProcedures.SYSCS_INPLACE_COMPRESS_TABLE(SystemProcedures.java:942)
        at 
org.apache.derby.exe.ac601a400fx0116x16f0x0fb7x0000701082432.g0(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:60)
        at 
org.apache.derby.impl.services.reflect.ReflectMethod.invoke(ReflectMethod.java:46)
        at 
org.apache.derby.impl.sql.execute.CallStatementResultSet.open(CallStatementResultSet.java:57)
        at 
org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:370)
        at 
org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1225)
        ... 17 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