You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-user@db.apache.org by "BALDWIN, ALAN J [AG-Contractor/1000]" <al...@monsanto.com> on 2007/01/16 21:23:05 UTC
Record cannot be updated or inserted due to lack of space on the page
Hi all,
I'm wondering if anyone knows a resolution for the below problem:
We are getting the "ERROR XSDA3 (Record cannot be updated or inserted due to
lack of space on the page)" when we try to execute an INSERT statement on a
cloudscape table via our Java Application. The table that we are inserting
into has 4128 rows before the insert.
(Stack trace is at the end of this email). After that any database access
from the application causes the following error:
"Could not open XXXXX database: java.sql.SQLException: Java exception: ':
java.lang.ArrayIndexOutOfBoundsException'."
If we exit out of the application, we are no longer able to connect to the
database. We get the following exception:
java.sql.SQLException: Failed to start database 'SeedTrakDB', see the next
exception for details.
at
org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown
Source)
at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown
Source)
at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown
Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown
Source)
at
org.apache.derby.impl.jdbc.EmbedConnection.newSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(Unknown
Source)
at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection30.<init>(Unknown
Source)
at org.apache.derby.jdbc.Driver30.getNewEmbedConnection(Unknown
Source)
at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:193)
We tried adding the following two properties in the service.properties file
of the database but that did not help:
derby.storage.pageSize=32768
derby.storage.pageReservedSpace=80
Stack Trace:
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(Unknown Source)
at
org.apache.derby.impl.store.raw.data.CopyRowsOperation.writeOptionalDataToBu
ffer(Unknown Source)
at
org.apache.derby.impl.store.raw.data.CopyRowsOperation.<init>(Unknown
Source)
at
org.apache.derby.impl.store.raw.data.LoggableActions.actionCopyRows(Unknown
Source)
at org.apache.derby.impl.store.raw.data.BasePage.copyInto(Unknown
Source)
at
org.apache.derby.impl.store.raw.data.BasePage.copyAndPurge(Unknown Source)
at
org.apache.derby.impl.store.access.btree.LeafControlRow.splitFor(Unknown
Source)
at
org.apache.derby.impl.store.access.btree.BranchControlRow.splitFor(Unknown
Source)
at
org.apache.derby.impl.store.access.btree.BTreeController.start_xact_and_dosp
lit(Unknown Source)
at
org.apache.derby.impl.store.access.btree.BTreeController.doIns(Unknown
Source)
at
org.apache.derby.impl.store.access.btree.BTreeController.insert(Unknown
Source)
at
org.apache.derby.impl.store.access.btree.index.B2IController.insert(Unknown
Source)
at
org.apache.derby.impl.sql.execute.IndexChanger.insertAndCheckDups(Unknown
Source)
at org.apache.derby.impl.sql.execute.IndexChanger.doInsert(Unknown
Source)
at org.apache.derby.impl.sql.execute.IndexChanger.insert(Unknown
Source)
at org.apache.derby.impl.sql.execute.IndexSetChanger.insert(Unknown
Source)
at
org.apache.derby.impl.sql.execute.RowChangerImpl.insertRow(Unknown Source)
at
org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(Unknown
Source)
at org.apache.derby.impl.sql.execute.InsertResultSet.open(Unknown
Source)
at
org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source)
at
org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source)
at
org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown
Source)
at
org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown
Source)
Regards,
-Alan Baldwin-
---------------------------------------------------------------------------------------------------------
This e-mail message may contain privileged and/or confidential information, and is intended to be received only by persons entitled to receive such information. If you have received this e-mail in error, please notify the sender immediately. Please delete it and all attachments from any servers, hard drives or any other media. Other use of this e-mail by you is strictly prohibited.
All e-mails and attachments sent and received are subject to monitoring, reading and archival by Monsanto. The recipient of this e-mail is solely responsible for checking for the presence of "Viruses" or other "Malware". Monsanto accepts no liability for any damage caused by any such code transmitted by or accompanying this e-mail or any attachment.
---------------------------------------------------------------------------------------------------------
Re: Record cannot be updated or inserted due to lack of space on
the page
Posted by Mike Matrigali <mi...@sbcglobal.net>.
This looks like a bug to me. From the information posted it looks like
the error is coming from the internal split code of the btree. The bug
is very likely to be very data dependent and order of data insert
dependent.
I would be interested in debugging this problem if you are interested in
posting more information about it.
The best case would be to just post the old bad db, and insert that
reproduces the problem. Along with some info on what version you are
using. Even the "un-bootable" db would be a big help.
If you can't do that, I could ask some more questions.
My guess is that you have index keys that are very large when compared
to page size of the index. Even if this problem is fixed you may still
have insert problems if your key's get too big. You may want to
increase the page size of your index.
BALDWIN, ALAN J [AG-Contractor/1000] wrote:
> Hi all,
>
> I'm wondering if anyone knows a resolution for the below problem:
>
> We are getting the "ERROR XSDA3 (Record cannot be updated or inserted due to
> lack of space on the page)" when we try to execute an INSERT statement on a
> cloudscape table via our Java Application. The table that we are inserting
> into has 4128 rows before the insert.
>
> (Stack trace is at the end of this email). After that any database access
> from the application causes the following error:
>
> "Could not open XXXXX database: java.sql.SQLException: Java exception: ':
> java.lang.ArrayIndexOutOfBoundsException'."
>
> If we exit out of the application, we are no longer able to connect to the
> database. We get the following exception:
>
> java.sql.SQLException: Failed to start database 'SeedTrakDB', see the next
> exception for details.
>
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown
> Source)
>
> at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown
> Source)
>
> at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown
> Source)
>
> at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown
> Source)
>
> at
> org.apache.derby.impl.jdbc.EmbedConnection.newSQLException(Unknown Source)
>
> at org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(Unknown
> Source)
>
> at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source)
>
> at org.apache.derby.impl.jdbc.EmbedConnection30.<init>(Unknown
> Source)
>
> at org.apache.derby.jdbc.Driver30.getNewEmbedConnection(Unknown
> Source)
>
> at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
>
> at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown Source)
>
> at java.sql.DriverManager.getConnection(DriverManager.java:512)
>
> at java.sql.DriverManager.getConnection(DriverManager.java:193)
>
>
> We tried adding the following two properties in the service.properties file
> of the database but that did not help:
>
> derby.storage.pageSize=32768
>
> derby.storage.pageReservedSpace=80
>
> Stack Trace:
>
> 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(Unknown Source)
>
> at
> org.apache.derby.impl.store.raw.data.CopyRowsOperation.writeOptionalDataToBu
> ffer(Unknown Source)
>
> at
> org.apache.derby.impl.store.raw.data.CopyRowsOperation.<init>(Unknown
> Source)
>
> at
> org.apache.derby.impl.store.raw.data.LoggableActions.actionCopyRows(Unknown
> Source)
>
> at org.apache.derby.impl.store.raw.data.BasePage.copyInto(Unknown
> Source)
>
> at
> org.apache.derby.impl.store.raw.data.BasePage.copyAndPurge(Unknown Source)
>
> at
> org.apache.derby.impl.store.access.btree.LeafControlRow.splitFor(Unknown
> Source)
>
> at
> org.apache.derby.impl.store.access.btree.BranchControlRow.splitFor(Unknown
> Source)
>
> at
> org.apache.derby.impl.store.access.btree.BTreeController.start_xact_and_dosp
> lit(Unknown Source)
>
> at
> org.apache.derby.impl.store.access.btree.BTreeController.doIns(Unknown
> Source)
>
> at
> org.apache.derby.impl.store.access.btree.BTreeController.insert(Unknown
> Source)
>
> at
> org.apache.derby.impl.store.access.btree.index.B2IController.insert(Unknown
> Source)
>
> at
> org.apache.derby.impl.sql.execute.IndexChanger.insertAndCheckDups(Unknown
> Source)
>
> at org.apache.derby.impl.sql.execute.IndexChanger.doInsert(Unknown
> Source)
>
> at org.apache.derby.impl.sql.execute.IndexChanger.insert(Unknown
> Source)
>
> at org.apache.derby.impl.sql.execute.IndexSetChanger.insert(Unknown
> Source)
>
> at
> org.apache.derby.impl.sql.execute.RowChangerImpl.insertRow(Unknown Source)
>
> at
> org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(Unknown
> Source)
>
> at org.apache.derby.impl.sql.execute.InsertResultSet.open(Unknown
> Source)
>
> at
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source)
>
> at
> org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source)
>
> at
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown
> Source)
>
> at
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown
> Source)
>
>
> Regards,
>
> -Alan Baldwin-
>
>
> ---------------------------------------------------------------------------------------------------------
> This e-mail message may contain privileged and/or confidential information, and is intended to be received only by persons entitled to receive such information. If you have received this e-mail in error, please notify the sender immediately. Please delete it and all attachments from any servers, hard drives or any other media. Other use of this e-mail by you is strictly prohibited.
>
>
> All e-mails and attachments sent and received are subject to monitoring, reading and archival by Monsanto. The recipient of this e-mail is solely responsible for checking for the presence of "Viruses" or other "Malware". Monsanto accepts no liability for any damage caused by any such code transmitted by or accompanying this e-mail or any attachment.
> ---------------------------------------------------------------------------------------------------------
>
>
>
Re: Record cannot be updated or inserted due to lack of space on the page
Posted by Mamta Satoor <ms...@gmail.com>.
Alan, I don't have any tips on solving the problem you are encountering but
I did want to mention that the 2 properties derby.storage.pageSize and
derby.storage.pageReservedSpace should be set prior to CREATE TABLE or
CREATE INDEX statement. Setting these properties does not change the
exisiting tables or indexes. They apply to newly created tables/indexes. You
can find more about them in the Derby Tuning Guide at
http://db.apache.org/derby/docs/10.2/tuning/rtunproper28026.html and
http://db.apache.org/derby/docs/10.2/tuning/rtunproper40688.html
Mamta
On 1/16/07, BALDWIN, ALAN J [AG-Contractor/1000] <
alan.j.baldwin@monsanto.com> wrote:
>
> Hi all,
>
> I'm wondering if anyone knows a resolution for the below problem:
>
> We are getting the "ERROR XSDA3 (Record cannot be updated or inserted due
> to
> lack of space on the page)" when we try to execute an INSERT statement on
> a
> cloudscape table via our Java Application. The table that we are inserting
> into has 4128 rows before the insert.
>
> (Stack trace is at the end of this email). After that any database access
> from the application causes the following error:
>
> "Could not open XXXXX database: java.sql.SQLException: Java exception: ':
> java.lang.ArrayIndexOutOfBoundsException'."
>
> If we exit out of the application, we are no longer able to connect to the
> database. We get the following exception:
>
> java.sql.SQLException: Failed to start database 'SeedTrakDB', see the next
> exception for details.
>
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown
> Source)
>
> at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown
> Source)
>
> at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown
> Source)
>
> at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown
> Source)
>
> at
> org.apache.derby.impl.jdbc.EmbedConnection.newSQLException(Unknown Source)
>
> at org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(Unknown
> Source)
>
> at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown
> Source)
>
> at org.apache.derby.impl.jdbc.EmbedConnection30.<init>(Unknown
> Source)
>
> at org.apache.derby.jdbc.Driver30.getNewEmbedConnection(Unknown
> Source)
>
> at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
>
> at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown Source)
>
> at java.sql.DriverManager.getConnection(DriverManager.java:512)
>
> at java.sql.DriverManager.getConnection(DriverManager.java:193)
>
>
> We tried adding the following two properties in the service.propertiesfile
> of the database but that did not help:
>
> derby.storage.pageSize=32768
>
> derby.storage.pageReservedSpace=80
>
> Stack Trace:
>
> 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(Unknown Source)
>
> at
>
> org.apache.derby.impl.store.raw.data.CopyRowsOperation.writeOptionalDataToBu
> ffer(Unknown Source)
>
> at
> org.apache.derby.impl.store.raw.data.CopyRowsOperation.<init>(Unknown
> Source)
>
> at
> org.apache.derby.impl.store.raw.data.LoggableActions.actionCopyRows
> (Unknown
> Source)
>
> at org.apache.derby.impl.store.raw.data.BasePage.copyInto(Unknown
> Source)
>
> at
> org.apache.derby.impl.store.raw.data.BasePage.copyAndPurge(Unknown Source)
>
> at
> org.apache.derby.impl.store.access.btree.LeafControlRow.splitFor(Unknown
> Source)
>
> at
> org.apache.derby.impl.store.access.btree.BranchControlRow.splitFor(Unknown
> Source)
>
> at
>
> org.apache.derby.impl.store.access.btree.BTreeController.start_xact_and_dosp
> lit(Unknown Source)
>
> at
> org.apache.derby.impl.store.access.btree.BTreeController.doIns(Unknown
> Source)
>
> at
> org.apache.derby.impl.store.access.btree.BTreeController.insert(Unknown
> Source)
>
> at
> org.apache.derby.impl.store.access.btree.index.B2IController.insert
> (Unknown
> Source)
>
> at
> org.apache.derby.impl.sql.execute.IndexChanger.insertAndCheckDups(Unknown
> Source)
>
> at org.apache.derby.impl.sql.execute.IndexChanger.doInsert(Unknown
> Source)
>
> at org.apache.derby.impl.sql.execute.IndexChanger.insert(Unknown
> Source)
>
> at org.apache.derby.impl.sql.execute.IndexSetChanger.insert(Unknown
> Source)
>
> at
> org.apache.derby.impl.sql.execute.RowChangerImpl.insertRow(Unknown Source)
>
> at
> org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(Unknown
> Source)
>
> at org.apache.derby.impl.sql.execute.InsertResultSet.open(Unknown
> Source)
>
> at
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source)
>
> at
> org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source)
>
> at
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown
> Source)
>
> at
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown
> Source)
>
>
> Regards,
>
> -Alan Baldwin-
>
>
>
> ---------------------------------------------------------------------------------------------------------
> This e-mail message may contain privileged and/or confidential
> information, and is intended to be received only by persons entitled to
> receive such information. If you have received this e-mail in error, please
> notify the sender immediately. Please delete it and all attachments from any
> servers, hard drives or any other media. Other use of this e-mail by you is
> strictly prohibited.
>
>
> All e-mails and attachments sent and received are subject to monitoring,
> reading and archival by Monsanto. The recipient of this e-mail is solely
> responsible for checking for the presence of "Viruses" or other "Malware".
> Monsanto accepts no liability for any damage caused by any such code
> transmitted by or accompanying this e-mail or any attachment.
>
> ---------------------------------------------------------------------------------------------------------
>
>