db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kathey Marsden (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-4973) NullPointerException in updatelocks.sql encryption tests on IBM 1.6
Date Thu, 20 Jan 2011 00:21:47 GMT

    [ https://issues.apache.org/jira/browse/DERBY-4973?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12983950#action_12983950
] 

Kathey Marsden commented on DERBY-4973:
---------------------------------------


I checked with Mike Matrigali  to double check that if it might be possible  that the xc field
could be nulled out after the check but before the dereference in the line 
return (xc == null) ? null : xc.getIdName(); 

The particular case of failure of a locktable query, the query is looking at the transaction
context of other transactions in flux, so that might actually be possible.  I am thinking
maybe the reason we see this with the new JVM might be that perhaps the compiler was changes
to do two reads of the field in this case instead of one.   I am going to put in some sleeps
to try to expose the issue and then ultimately per Mike's suggestion, recode the method to
avoid the double read, like:

tempxc = xc;
return (tempxc == null) ? null : tempxc.getIdName();

That way we can avoid adding synchronization to this low level code for the benefit of the
locktable query and ensure just one read.


> NullPointerException in  updatelocks.sql encryption tests on IBM 1.6
> --------------------------------------------------------------------
>
>                 Key: DERBY-4973
>                 URL: https://issues.apache.org/jira/browse/DERBY-4973
>             Project: Derby
>          Issue Type: Bug
>          Components: Store
>    Affects Versions: 10.8.0.0
>         Environment: Booting Derby version The Apache Software Foundation - Apache Derby
- 10.8.0.0 alpha - (1058840): instance a816c00e-012d-839a-de59-ffff9cf6fc6d 
> on database directory C:\jartest\JarResults.2011-01-13\ibm16_derbyall\derbyall\encryptionAll\storemats\storemats\updatelocks\wombat
 with class loader sun.misc.Launcher$AppClassLoader@4bf94bf9 
> Loaded from file:/C:/jartest/classes/derby.jar
> java.vendor=IBM Corporation
> java.runtime.version=jvmwi3260sr9-20101124_69295
> java.fullversion=JRE 1.6.0 IBM J9 2.4 Windows XP x86-32 jvmwi3260sr9-20101124_69295 (JIT
enabled, AOT enabled)
> J9VM - 20101124_069295
> JIT  - r9_20101028_17488ifx2
> GC   - 20101027_AA
>            Reporter: Kathey Marsden
>         Attachments: updatelocks_results.zip
>
>
> The IBM 1.6 results for Jan 13, 2011 show the following failure for IBM 1.6 on XP
> *** End:   TestEnc jdk1.6.0 DerbyNetClient derbynetclientmats:encodingTests 2011-01-14
00:05:38 ***
> ********* Diff file derbyall/encryptionAll/storemats/storemats/updatelocks.diff
> *** Start: updatelocks jdk1.6.0 storemats:storemats 2011-01-14 00:18:37 ***
> 19859a19860,19868
> > ERROR 38000: The exception 'java.lang.NullPointerException' was thrown while evaluating
an expression.
> > ERROR XJ001: Java exception: ': java.lang.NullPointerException'.
> > ij> next scan_cursor;
> > A          |B          |C                                                      
                                                                        
> > --------------------------------------------------------------------------------------------------------------------------------------------------------
> > -3         |-30        |-three                                                 
                                                                        
> > ij> update a set a=3,b=30,c='three' where current of scan_cursor;
> > 1 row inserted/updated/deleted
> > ij> select * from lock_table order by tabname, type desc, mode, cnt, lockname;
> 19861a19871
> > APP     |UserTran|TABLE   |1   |IX  |A           |Tablelock |GRANT|ACTIVE  
> 19866,19876d19875
> < -3         |-30        |-three                                                 
                                                                        
> < ij> update a set a=3,b=30,c='three' where current of scan_cursor;
> < 1 row inserted/updated/deleted
> < ij> select * from lock_table order by tabname, type desc, mode, cnt, lockname;
> < USERNAME|TRANTYPE|TYPE    |CNT |MODE|TABNAME     |LOCKNAME  |STATE|STATUS  
> < ---------------------------------------------------------------------------
> < APP     |UserTran|TABLE   |1   |IX  |A           |Tablelock |GRANT|ACTIVE  
> < APP     |UserTran|TABLE   |1   |X   |A           |Tablelock |GRANT|ACTIVE  
> < ij> next scan_cursor;
> < A          |B          |C                                                      
                                                                        
> < --------------------------------------------------------------------------------------------------------------------------------------------------------
> Test Failed.
> *** End:   updatelocks jdk1.6.0 storemats:storemats 2011-01-14 00:19:24 ***
> ------------------------------------------------------
> Stack trace is:
> Fri Jan 14 00:19:08 PST 2011 Thread[main,5,main] (XID = 2648), (SESSIONID = 1), (DATABASE
= wombat), (DRDAID = null), Failed Statement is: select * from lock_table order by tabname,
type desc, mode, cnt, lockname
> ERROR 38000: The exception 'java.lang.NullPointerException' was thrown while evaluating
an expression.
> 	at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
> 	at org.apache.derby.iapi.error.StandardException.unexpectedUserException(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.VTIResultSet.populateFromResultSet(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.VTIResultSet.getNextRowCore(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.HashTableResultSet.getNextRowFromRowSource(Unknown
Source)
> 	at org.apache.derby.iapi.store.access.BackingStoreHashtable.getNextRowFromRowSource(Unknown
Source)
> 	at org.apache.derby.iapi.store.access.BackingStoreHashtable.<init>(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.HashTableResultSet.openCore(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.openCore(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.JoinResultSet.openRight(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.JoinResultSet.openCore(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.openCore(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.SortResultSet.openCore(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.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.execute(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.ij.executeImmediate(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.doCatch(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.go(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.go(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.mainCore(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.main(Unknown Source)
> 	at org.apache.derby.tools.ij.main(Unknown Source)
> Caused by: java.lang.NullPointerException
> 	at org.apache.derby.impl.store.raw.xact.Xact.getContextId(Unknown Source)
> 	at org.apache.derby.impl.store.raw.xact.TransactionTableEntry.getTransactionTypeString(Unknown
Source)
> 	at org.apache.derby.diag.TransactionTable.getString(Unknown Source)
> 	at org.apache.derby.iapi.types.SQLChar.setValueFromResultSet(Unknown Source)
> 	... 25 more
> ============= begin nested exception, level (1) ===========
> java.lang.NullPointerException
> 	at org.apache.derby.impl.store.raw.xact.Xact.getContextId(Unknown Source)
> 	at org.apache.derby.impl.store.raw.xact.TransactionTableEntry.getTransactionTypeString(Unknown
Source)
> 	at org.apache.derby.diag.TransactionTable.getString(Unknown Source)
> 	at org.apache.derby.iapi.types.SQLChar.setValueFromResultSet(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.VTIResultSet.populateFromResultSet(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.VTIResultSet.getNextRowCore(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.HashTableResultSet.getNextRowFromRowSource(Unknown
Source)
> 	at org.apache.derby.iapi.store.access.BackingStoreHashtable.getNextRowFromRowSource(Unknown
Source)
> 	at org.apache.derby.iapi.store.access.BackingStoreHashtable.<init>(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.HashTableResultSet.openCore(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.openCore(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.JoinResultSet.openRight(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.JoinResultSet.openCore(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.openCore(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.SortResultSet.openCore(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.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.execute(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.ij.executeImmediate(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.doCatch(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.go(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.go(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.mainCore(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.main(Unknown Source)
> 	at org.apache.derby.tools.ij.main(Unknown Source)
> ============= end nested exception, level (1) ===========

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message