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/04 20:40:36 UTC

svn commit: r1600417 - in /db/derby/code/trunk/java: engine/org/apache/derby/impl/store/raw/data/AllocPage.java engine/org/apache/derby/loc/messages.xml shared/org/apache/derby/shared/common/reference/SQLState.java

Author: myrnavl
Date: Wed Jun  4 18:40:35 2014
New Revision: 1600417

URL: http://svn.apache.org/r1600417
Log:
DERBY-6504; change AllocPage.ReadContainerInfo to catch ArrayIndexOutOfBoundsException and turn it into Derby error.
   Adding error message XSDG4 to provide analysis info if this exception is hit

Modified:
    db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/AllocPage.java
    db/derby/code/trunk/java/engine/org/apache/derby/loc/messages.xml
    db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/AllocPage.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/AllocPage.java?rev=1600417&r1=1600416&r2=1600417&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/AllocPage.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/AllocPage.java Wed Jun  4 18:40:35 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,29 @@ 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,
+                            epage.length, containerInfo.length,
+                            MAX_BORROWED_SPACE,
+                            BORROWED_SPACE_OFFSET,
+                            BORROWED_SPACE_LEN,
+                            BORROWED_SPACE_OFFSET + BORROWED_SPACE_LEN,
+                            N,
+                            org.apache.derby.iapi.util.StringUtil.hexDump(
+                                    epage)
+                        )
+                );
+		    }
+		} 
 	}
 
 

Modified: db/derby/code/trunk/java/engine/org/apache/derby/loc/messages.xml
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/loc/messages.xml?rev=1600417&r1=1600416&r2=1600417&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/loc/messages.xml (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/loc/messages.xml Wed Jun  4 18:40:35 2014
@@ -6178,6 +6178,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/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java?rev=1600417&r1=1600416&r2=1600417&view=diff
==============================================================================
--- db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java (original)
+++ db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java Wed Jun  4 18:40:35 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";