[ http://issues.apache.org/jira/browse/JDO-439?page=comments#action_12444332 ] Michelle Caisse commented on JDO-439: -------------------------------------
The patch looks good to me. The test failed on a run before the patch and passed with the patch. > companyMapWithoutJoin.conf failiure: unexpected map SCO read from database > -------------------------------------------------------------------------- > > Key: JDO-439 > URL: http://issues.apache.org/jira/browse/JDO-439 > Project: JDO > Issue Type: Bug > Components: tck20 > Affects Versions: JDO 2 final > Reporter: Michael Bouschen > Assigned To: Michael Bouschen > Fix For: JDO 2 maintenance release 1 > > Attachments: JDO-439.patch > > > I see the configuration companyMapWithoutJoin.conf sporadically failing, > because a map SCO read from the database does not have the expected value. > Here is the test output from derby-dsid-companyWithoutJoin-junit.txt: > RUN CompletenessTestMap.test FAILURE > Description: Completeness test with companyMapWithoutJoin model. > Time: 005 > There was 1 failure: > 1) > test(org.apache.jdo.tck.mapping.CompletenessTestMap)junit.framework.AssertionFailedError: > CompletenessTestMap failed; see list of failures below: > Expected this instance: > Company(1, name Sun Microsystems, Inc., founded 11/Apr/1952) > Got persistent instance: > Company(1, name Sun Microsystems, Inc., founded 11/Apr/1952) > Detailed list of differences follows... > Context: Company<1>.departments[0]-> Department<1>.roles > Size mismatch: expected size= 3, original size= 2, current size= 2, counted > size= 2 > expected '{role1=FullTimeEmployee(1, emp1Last, emp1First, born > 10/Jun/1970, hired 1/Jan/1999, weeklyhours 40.0, $60000.0), > role2=FullTimeEmployee(2, emp2Last, emp2First, born 22/Dez/1975, hired > 1/Jul/2003, weeklyhours 40.0, $47000.0), role3=PartTimeEmployee(3, emp3Last, > emp3First, born 5/Sep/1972, hired 15/Aug/2002, weeklyhours 19.0, $67.0)}' > actual '{role1=FullTimeEmployee(1, emp1Last, emp1First, born > 10/Jun/1970, hired 1/Jan/1999, weeklyhours 40.0, > $60000.0),role3=PartTimeEmployee(3, emp3Last, emp3First, born 5/Sep/1972, > hired 15/Aug/2002, weeklyhours 19.0, $67.0)}' > at org.apache.jdo.tck.JDO_Test.fail(JDO_Test.java:638) > at > org.apache.jdo.tck.mapping.CompletenessTestMap.test(CompletenessTestMap.java:123) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:253) > at > org.apache.jdo.tck.util.BatchTestRunner.doRun(BatchTestRunner.java:107) > at > org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:147) > at > org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:122) > FAILURES!!! > The configuration uses a modified company model where Department has a map of > employee instances and a new Employee field called role is the key in the > map. The testdata provides a value for the role field in employee and for the > key in the map. But the factory to create the instances does not populate the > role field in employee. So there is an inconsistency between the key in the > map (has a value) and the employee field (is null) used to map the key to the > database. I enabled the JPOX RDBMS logger and saw that in the case of a > failure there is an employee INSERT statement with NULL as the value for the > ROLE column. When loading the corresponding department instance the map of > employee misses this entry because the key is null. The fix is easy: the > factory needs to set the role field when creating the employee instance. > Please note that this failure only happens sporadically, so I needed to run > the test several time before I got the error above. In spide of the > inconsistency between the map and the employee field, it is not clear to me > why the test case shows different results on multiple runs. In most cases the > test case succeeds (which means the key of the map is used as the value of th > eemployee field), but sometimes it fails as shown above. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
