Issue Details (XML | Word | Printable)

Key: JDO-415
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Minor Minor
Assignee: Craig Russell
Reporter: Marc Prud'hommeaux
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
JDO

DataStoreConnection assumes datastore transactions are being used

Created: 30/Aug/06 08:59 AM   Updated: 05/Oct/06 02:49 AM
Return to search
Component/s: tck2
Affects Version/s: JDO 2 final
Fix Version/s: JDO 2 maintenance release 1, JDO 2 TCK challenge fixes

Time Tracking:
Not Specified

File Attachments:
  Size
Text File Licensed for inclusion in ASF works JDO-415.patch 2006-10-03 10:53 PM Craig Russell 2 kB

Resolution Date: 05/Oct/06 02:45 AM


 Description  « Hide
org.apache.jdo.tck.api.persistencemanager.DataStoreConnection assumes that the connection returned from getDataStoreConnection will be re-used once a JDO transaction is started, but that assertion is only valid when using datastore transactions, and the test case does not ensure that a datastore transaction is being used.

The solution is to call "getPM().currentTransaction().setOptimistic(false);" just before "getPM().currentTransaction().begin();" in the testDataStoreConnection() test case.



 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Marc Prud'hommeaux made changes - 06/Sep/06 08:25 AM
Field Original Value New Value
Link This issue is cloned as JDO-418 [ JDO-418 ]
Marc Prud'hommeaux made changes - 06/Sep/06 08:27 AM
Link This issue is cloned as JDO-418 [ JDO-418 ]
Craig Russell made changes - 02/Oct/06 08:08 PM
Assignee Craig Russell [ clr ]
Description
org.apache.jdo.tck.api.persistencemanager.DataStoreConnection assumes that the transaction returned from getDataStoreConnection will be re-used once a JDO transaction is started, but that assertion is only valid when using datastore transactions, and the test case does not ensure that a datastore transaction is being used.

The solution is to call "getPM().currentTransaction().setOptimistic(false);" just before "getPM().currentTransaction().begin();" in the testDataStoreConnection() test case.

org.apache.jdo.tck.api.persistencemanager.DataStoreConnection assumes that the connection returned from getDataStoreConnection will be re-used once a JDO transaction is started, but that assertion is only valid when using datastore transactions, and the test case does not ensure that a datastore transaction is being used.

The solution is to call "getPM().currentTransaction().setOptimistic(false);" just before "getPM().currentTransaction().begin();" in the testDataStoreConnection() test case.

Craig Russell added a comment - 03/Oct/06 10:53 PM
Please review this patch.

There are three problems with the original test case.

1. As the bug noted, the DataStoreConnection is acquired outside a transaction, and there is no guarantee that the DataStoreConnection is even valid after beginning a transaction. So I changed the code to acquire the DataStoreConnection only after beginning a transaction.

2. If the implementation supports Optimistic transactions, then the test should be repeated for both optimistic and datastore transactions.

3. The transaction is never committed. This is fixed by putting the DataStoreConnection close and the transaction.commit into the finally block.

Craig Russell made changes - 03/Oct/06 10:53 PM
Attachment JDO-415.patch [ 12342224 ]
Michael Bouschen added a comment - 04/Oct/06 08:16 PM
The patch looks good!

Craig Russell made changes - 04/Oct/06 09:28 PM
Fix Version/s JDO 2.0 TCK challenge fixes [ 12312093 ]
Fix Version/s JDO 2 maintenance release 1 [ 12310923 ]
Repository Revision Date User Message
ASF #453089 Thu Oct 05 02:45:37 UTC 2006 clr JDO-415
Three problems with the original test case are fixed with this patch.

1. As the bug noted, the DataStoreConnection is acquired outside a
transaction, and there is no guarantee that the DataStoreConnection
is even valid after beginning a transaction. The code now acquires
the DataStoreConnection only after beginning a transaction.

2. If the implementation supports Optimistic transactions,
then the test should be repeated for both optimistic and
datastore transactions.

3. The transaction is never committed. This is fixed by putting
the DataStoreConnection close and the transaction.commit into
the finally block.
Files Changed
MODIFY /db/jdo/trunk/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/DataStoreConnection.java

Craig Russell added a comment - 05/Oct/06 02:45 AM
svn commit src/java/org/apache/jdo/tck/api/persistencemanager
Sending src/java/org/apache/jdo/tck/api/persistencemanager/DataStoreConnection.java
Transmitting file data .
Committed revision 453089.

Craig Russell made changes - 05/Oct/06 02:45 AM
Status Open [ 1 ] Resolved [ 5 ]
Resolution Fixed [ 1 ]
Repository Revision Date User Message
ASF #453090 Thu Oct 05 02:48:26 UTC 2006 clr JDO-415
Files Changed
MODIFY /db/jdo/branches/2.0.1/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/DataStoreConnection.java

Craig Russell added a comment - 05/Oct/06 02:49 AM
Commit for the branch/2.0.1

svn commit -m "JDO-415"
Sending tck20/src/java/org/apache/jdo/tck/api/persistencemanager/DataStoreConnection.java
Transmitting file data .
Committed revision 453090.