Return-Path: X-Original-To: apmail-db-derby-dev-archive@www.apache.org Delivered-To: apmail-db-derby-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 1956F6321 for ; Mon, 16 May 2011 19:20:29 +0000 (UTC) Received: (qmail 52432 invoked by uid 500); 16 May 2011 19:20:28 -0000 Delivered-To: apmail-db-derby-dev-archive@db.apache.org Received: (qmail 52340 invoked by uid 500); 16 May 2011 19:20:28 -0000 Mailing-List: contact derby-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: Delivered-To: mailing list derby-dev@db.apache.org Received: (qmail 52333 invoked by uid 99); 16 May 2011 19:20:28 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 16 May 2011 19:20:28 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.116] (HELO hel.zones.apache.org) (140.211.11.116) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 16 May 2011 19:20:27 +0000 Received: from hel.zones.apache.org (hel.zones.apache.org [140.211.11.116]) by hel.zones.apache.org (Postfix) with ESMTP id B830DCCCB8 for ; Mon, 16 May 2011 19:19:47 +0000 (UTC) Date: Mon, 16 May 2011 19:19:47 +0000 (UTC) From: "Kristian Waagan (JIRA)" To: derby-dev@db.apache.org Message-ID: <133088919.16227.1305573587751.JavaMail.tomcat@hel.zones.apache.org> In-Reply-To: <806810189.15310.1305554327557.JavaMail.tomcat@hel.zones.apache.org> Subject: [jira] [Commented] (DERBY-5234) Unable to insert data into table. Failed due be "ERROR XSDG0: Page Page(51919,Container(0, 1104)) could not be read from disk." MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/DERBY-5234?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13034210#comment-13034210 ] Kristian Waagan commented on DERBY-5234: ---------------------------------------- Hi, I can't say what has gone wrong, but have a few initial questions that may inform the debugging process: a) Can you run with the debug version of Derby? This would be best during normal operation, before the error has happened, but may not work because all the extra asserts slow down Derby a lot. Booting and accessing (SELECT/INSERT) the corrupted database with the debug version is also useful in some cases, and that's a lot simpler to do. b) Have you verified that there are no limits on the size of the database files, i.e. OS quotas or file system limitations, in the production environment? c) What happens if you run SYSCS_UTIL.SYSCS_COMPRESS_TABLE on KPI.KPI_MERGEIN after the insert fails? If the compress-operation succeeds, does the insert still fail afterwards? d) Looking at the data file for the corrupted table, is the size a multiple of the page size? The failing code is using NIO, but there doesn't seem to be a problem with interrupts (based on current info only). The two obvious ways the code can fail are if the file for some reason has been truncated or that the position argument is incorrect. > Unable to insert data into table. Failed due be "ERROR XSDG0: Page Page(51919,Container(0, 1104)) could not be read from disk." > ------------------------------------------------------------------------------------------------------------------------------- > > Key: DERBY-5234 > URL: https://issues.apache.org/jira/browse/DERBY-5234 > Project: Derby > Issue Type: Bug > Components: JDBC, Network Server, SQL > Affects Versions: 10.5.3.0 > Environment: HP-UX 11iv2 in production environment with JDK1.6; Solaris 5/10 in test environment with JDK 1.6 > Reporter: Varma R > Labels: ERROR, XSDG0, apache, corruption, data, derby > > One of the derby database table "gets corrupted"/"indicates connection not available" during processing inserts from java client application as shown in the trace and the only way to recover from this error is to rebuild the DB - by deleting the data and creating the tables again. This happens once in a while (thrice in a span of two months) and the java application (run in multiple servers), which updates the database, processes around 100 million transactions per hour (in total and each transation results in 4-5 updates to the DB) > There are eight tables in the derby database. > TABLE NAME ROWS COUNT (at time of corruption) > --------------------------------------------------------------------------------- > KPI.KPI_MERGEIN; 362917 > KPI.KPI_IN; 422508 > KPI.KPI_DROPPED; 53667 > KPI.KPI_ERROR1; 0 > KPI.KPI_ERROR2; 2686 > KPI.KPI_ERRORMERGE; 0 > KPI.KPI_MERGEOUT; 362669 > KPI.KPI_OUT; 125873 > The derby database has been started with the following parameters > CMD="java -Dderby.system.home=$DERBY_OPTS -Dderby.locks.monitor=true -Dderby.locks.deadlockTrace=true -Dderby.locks.escalationThreshold=50000 -Dderby.locks.waitTimeout= > -1 -Dderby.storage.pageCacheSize=100000 -Xms512M -Xmx3072M -XX:NewSize=256M -classpath $DERBY_CLASSPATH org.apache.derby.drda.NetworkServerControl start -h $KPIDERBYHOST -p $DERBY_KPI_PORT" > The corrupted database tar (filesystem) in live environment was moved to a test system (Solaris system) and few checks were run on the corrupted DB as part of analysis (DB does start fine) > While trying to insert a row in any table expect KPI.KPI_MERGEIN, it is successful. But when a new row is inserted into KPI.KPI_MERGEIN table using command line tool it's throwing below error message (the same message that appeared in live > ij> INSERT INTO KPI.KPI_MERGEIN (A0_TXN_ID, A1_NE_ID, A2_CHU_IP_ADDR, A3_BATCH_DATE,A5_CODE) VALUES (-1, 'BMTDE', '192.2.1.3', 231456879, 'KSD'); > ERROR 08006: A network protocol error was encountered and the connection has been terminated: the requested command encountered an unarchitected and implementation-specific condition for which there was no architected message > and in derby.log file it shows below error stacktrace. > ERROR XSDG0: Page Page(51919,Container(0, 1104)) could not be read from disk. > at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) > at org.apache.derby.impl.store.raw.data.CachedPage.readPage(Unknown Source) > at org.apache.derby.impl.store.raw.data.CachedPage.setIdentity(Unknown Source) > at org.apache.derby.impl.services.cache.ConcurrentCache.find(Unknown Source) > at org.apache.derby.impl.store.raw.data.FileContainer.initPage(Unknown Source) > at org.apache.derby.impl.store.raw.data.FileContainer.newPage(Unknown Source) > at org.apache.derby.impl.store.raw.data.BaseContainer.addPage(Unknown Source) > at org.apache.derby.impl.store.raw.data.BaseContainerHandle.addPage(Unknown Source) > at org.apache.derby.impl.store.access.heap.HeapController.doInsert(Unknown Source) > at org.apache.derby.impl.store.access.heap.HeapController.insertAndFetchLocation(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.executeStmt(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.EmbedStatement.execute(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedStatement.executeUpdate(Unknown Source) > at org.apache.derby.impl.drda.DRDAConnThread.parseEXCSQLIMM(Unknown Source) > at org.apache.derby.impl.drda.DRDAConnThread.processCommands(Unknown Source) > at org.apache.derby.impl.drda.DRDAConnThread.run(Unknown Source) > Caused by: java.io.EOFException: Reached end of file while attempting to read a whole page. > at org.apache.derby.impl.store.raw.data.RAFContainer4.readFull(Unknown Source) > at org.apache.derby.impl.store.raw.data.RAFContainer4.readPage0(Unknown Source) > at org.apache.derby.impl.store.raw.data.RAFContainer4.readPage(Unknown Source) > ... 20 more > ============= begin nested exception, level (1) =========== > java.io.EOFException: Reached end of file while attempting to read a whole page. > at org.apache.derby.impl.store.raw.data.RAFContainer4.readFull(Unknown Source) > at org.apache.derby.impl.store.raw.data.RAFContainer4.readPage0(Unknown Source) > at org.apache.derby.impl.store.raw.data.RAFContainer4.readPage(Unknown Source) > at org.apache.derby.impl.store.raw.data.CachedPage.readPage(Unknown Source) > at org.apache.derby.impl.store.raw.data.CachedPage.setIdentity(Unknown Source) > at org.apache.derby.impl.services.cache.ConcurrentCache.find(Unknown Source) > at org.apache.derby.impl.store.raw.data.FileContainer.initPage(Unknown Source) > at org.apache.derby.impl.store.raw.data.FileContainer.newPage(Unknown Source) > at org.apache.derby.impl.store.raw.data.BaseContainer.addPage(Unknown Source) > at org.apache.derby.impl.store.raw.data.BaseContainerHandle.addPage(Unknown Source) > at org.apache.derby.impl.store.access.heap.HeapController.doInsert(Unknown Source) > at org.apache.derby.impl.store.access.heap.HeapController.insertAndFetchLocation(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.executeStmt(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.EmbedStatement.execute(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedStatement.executeUpdate(Unknown Source) > at org.apache.derby.impl.drda.DRDAConnThread.parseEXCSQLIMM(Unknown Source) > at org.apache.derby.impl.drda.DRDAConnThread.processCommands(Unknown Source) > at org.apache.derby.impl.drda.DRDAConnThread.run(Unknown Source) > ============= end nested exception, level (1) =========== > 2011-05-16 10:37:21.392 GMT: > Shutting down instance a816c00e-012f-f85f-7892-ffff874c3ff6 > ---------------------------------------------------------------- > Cleanup action completed > The problem is only with INSERT statement. When i try SELECT statement on KPI.KPI_MERGEIN table it is working well.The database file system size (in seg0) is 1.3 GB > Can anyone help me out in identifying the problem that why for one table alone its throwing the above error message ? Would upgrade to a new version help ? -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira