You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by my...@apache.org on 2014/06/06 02:18:16 UTC
svn commit: r1600794 - in /db/derby/code/branches/10.10: ./
java/engine/org/apache/derby/impl/store/raw/data/
java/engine/org/apache/derby/loc/
java/shared/org/apache/derby/shared/common/reference/
java/testing/org/apache/derbyTesting/functionTests/tes...
Author: myrnavl
Date: Fri Jun 6 00:18:15 2014
New Revision: 1600794
URL: http://svn.apache.org/r1600794
Log:
DERBY-6504; change AllocPage.ReadContainerInfo to catch ArrayIndexOutOfBoundsException and turn it into Derby error.
backport of revision 1600417 and revision 1600721 from trunk
Modified:
db/derby/code/branches/10.10/ (props changed)
db/derby/code/branches/10.10/java/engine/org/apache/derby/impl/store/raw/data/AllocPage.java
db/derby/code/branches/10.10/java/engine/org/apache/derby/loc/messages.xml
db/derby/code/branches/10.10/java/shared/org/apache/derby/shared/common/reference/SQLState.java
db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ErrorCodeTest.java
Propchange: db/derby/code/branches/10.10/
------------------------------------------------------------------------------
Merged /db/derby/code/trunk:r1600417,1600721
Modified: db/derby/code/branches/10.10/java/engine/org/apache/derby/impl/store/raw/data/AllocPage.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.10/java/engine/org/apache/derby/impl/store/raw/data/AllocPage.java?rev=1600794&r1=1600793&r2=1600794&view=diff
==============================================================================
--- db/derby/code/branches/10.10/java/engine/org/apache/derby/impl/store/raw/data/AllocPage.java (original)
+++ db/derby/code/branches/10.10/java/engine/org/apache/derby/impl/store/raw/data/AllocPage.java Fri Jun 6 00:18:15 2014
@@ -596,6 +596,7 @@ public class AllocPage extends StoredPag
*/
public static void ReadContainerInfo(byte[] containerInfo,
byte[] epage)
+ throws StandardException
{
int N = (int)epage[BORROWED_SPACE_OFFSET];
@@ -612,8 +613,30 @@ public class AllocPage extends StoredPag
}
if (N != 0)
- System.arraycopy(epage, BORROWED_SPACE_OFFSET+BORROWED_SPACE_LEN,
- containerInfo, 0, N);
+ {
+ try {
+ System.arraycopy(
+ epage, BORROWED_SPACE_OFFSET+BORROWED_SPACE_LEN,
+ containerInfo, 0, N);
+ } catch (ArrayIndexOutOfBoundsException ioobe) {
+ throw StandardException.newException (
+ SQLState.DATA_UNEXPECTED_EXCEPTION,
+ StandardException.newException (
+ SQLState.UNABLE_TO_ARRAYCOPY,
+ ioobe,
+ new Integer(epage.length),
+ new Integer(containerInfo.length),
+ new Integer(MAX_BORROWED_SPACE),
+ new Integer(BORROWED_SPACE_OFFSET),
+ new Integer(BORROWED_SPACE_LEN),
+ new Integer(BORROWED_SPACE_OFFSET + BORROWED_SPACE_LEN),
+ new Integer(N),
+ org.apache.derby.iapi.util.StringUtil.hexDump(
+ epage)
+ )
+ );
+ }
+ }
}
Modified: db/derby/code/branches/10.10/java/engine/org/apache/derby/loc/messages.xml
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.10/java/engine/org/apache/derby/loc/messages.xml?rev=1600794&r1=1600793&r2=1600794&view=diff
==============================================================================
--- db/derby/code/branches/10.10/java/engine/org/apache/derby/loc/messages.xml (original)
+++ db/derby/code/branches/10.10/java/engine/org/apache/derby/loc/messages.xml Fri Jun 6 00:18:15 2014
@@ -5940,6 +5940,19 @@ ln=lower-case two-letter ISO-639 languag
</msg>
<msg>
+ <name>XSDG4.D</name>
+ <text>Unrecoverable internal error encountered while attempting to read low level metadata about the table or index. Please provide your support organization with the following exception information: Failed: arraycopy of embryonic page byte[{0}] to container information byte[{1}]. Values of variables and constants: MAX_BORROWED_SPACE: {2}, BORROWED_SPACE_OFFSET({3}) + BORROWED_SPACE_LENG({4}) = {5}; arraycopylength: {6}; embryonic page {7}.</text>
+ <arg>pageArrayLength</arg>
+ <arg>containerArrayLength</arg>
+ <arg>maxBorrowedSpace</arg>
+ <arg>borrowedSpaceOffset</arg>
+ <arg>borrowedSpaceLength</arg>
+ <arg>arraycopySourcePosition</arg>
+ <arg>maxBorrowableSpace</arg>
+ <arg>hexdump</arg>
+ </msg>
+
+ <msg>
<name>XSDG5.D</name>
<text>Database is not in create mode when createFinished is called.</text>
</msg>
Modified: db/derby/code/branches/10.10/java/shared/org/apache/derby/shared/common/reference/SQLState.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.10/java/shared/org/apache/derby/shared/common/reference/SQLState.java?rev=1600794&r1=1600793&r2=1600794&view=diff
==============================================================================
--- db/derby/code/branches/10.10/java/shared/org/apache/derby/shared/common/reference/SQLState.java (original)
+++ db/derby/code/branches/10.10/java/shared/org/apache/derby/shared/common/reference/SQLState.java Fri Jun 6 00:18:15 2014
@@ -540,6 +540,7 @@ public interface SQLState {
String FILE_WRITE_PAGE_EXCEPTION = "XSDG1.D";
String FILE_BAD_CHECKSUM = "XSDG2.D";
String FILE_CONTAINER_EXCEPTION = "XSDG3.D";
+ String UNABLE_TO_ARRAYCOPY = "XSDG4.D";
String FILE_DATABASE_NOT_IN_CREATE = "XSDG5.D";
String DATA_DIRECTORY_NOT_FOUND_IN_BACKUP = "XSDG6.D";
String UNABLE_TO_REMOVE_DATA_DIRECTORY = "XSDG7.D";
Modified: db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ErrorCodeTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ErrorCodeTest.java?rev=1600794&r1=1600793&r2=1600794&view=diff
==============================================================================
--- db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ErrorCodeTest.java (original)
+++ db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ErrorCodeTest.java Fri Jun 6 00:18:15 2014
@@ -219,6 +219,7 @@ public final class ErrorCodeTest extends
{"XSDG1","Page {0} could not be written to disk, please check if the disk is full, or if a file system limit, such as a quota or a maximum file size, has been reached.","45000"},
{"XSDG2","Invalid checksum on Page {0}, expected={1}, on-disk version={2}, page dump follows: {3}","45000"},
{"XSDG3","Meta-data for {0} could not be accessed to {1} {2}","45000"},
+ {"XSDG4","Unrecoverable internal error encountered while attempting to read low level metadata about the table or index. Please provide your support organization with the following exception information: Failed: arraycopy of embryonic page byte[{0}] to container information byte[{1}]. Values of variables and constants: MAX_BORROWED_SPACE: {2}, BORROWED_SPACE_OFFSET({3}) + BORROWED_SPACE_LENG({4}) = {5}; arraycopylength: {6}; embryonic page {7}.","45000"},
{"XSDG5","Database is not in create mode when createFinished is called.","45000"},
{"XSDG6","Data segment directory not found in {0} backup during restore. Please make sure that backup copy is the right one and it is not corrupted.","45000"},
{"XSDG7","Directory {0} could not be removed during restore. Please make sure that permissions are correct.","45000"},