Uploaded image for project: 'Derby'
  1. Derby
  2. DERBY-3180

error XSDA3 when test is executing SYSCS_INPLACE_COMPRESS_TABLE in specific situation

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Duplicate
    • Affects Version/s: 10.4.1.3
    • Fix Version/s: 10.5.1.1
    • Component/s: Store
    • Labels:
      None

      Description

      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

        Attachments

        1. DatabaseMetaDataTest.java
          115 kB
          Myrna van Lunteren
        2. derby.log
          50 kB
          Myrna van Lunteren

          Issue Links

            Activity

              People

              • Assignee:
                mikem Mike Matrigali
                Reporter:
                myrna Myrna van Lunteren
              • Votes:
                0 Vote for this issue
                Watchers:
                0 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: