You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "Andrus Adamchik (JIRA)" <ji...@apache.org> on 2009/09/15 20:48:57 UTC
[jira] Closed: (CAY-1277) Prefetching may cause a root object to
got from COMMITTED to MODIFIED state
[ https://issues.apache.org/jira/browse/CAY-1277?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andrus Adamchik closed CAY-1277.
--------------------------------
Resolution: Fixed
> Prefetching may cause a root object to got from COMMITTED to MODIFIED state
> ---------------------------------------------------------------------------
>
> Key: CAY-1277
> URL: https://issues.apache.org/jira/browse/CAY-1277
> Project: Cayenne
> Issue Type: Bug
> Components: Cayenne Core Library
> Affects Versions: 3.0M6
> Reporter: Andrus Adamchik
> Assignee: Andrus Adamchik
> Fix For: 3.0 beta 1
>
>
> This is a subtle bug that I am (almost) sure existed prior to my last batch of prefetch-related changes. Per test demonstrating it below, prefetching on optional to-one relationships would cause a root object to go to MODIFIED state instead of COMMITTED. Since this happened without actual values modification, I guess nobody noticed it so far. A side effect though (aside from the memory leak it might introduce to a read-only DataContext) is that the object never refreshes its values from DB.
> diff --git a/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextPrefetchTest.java b/framework/cayenne-jdk1.5-unpublished/sr
> index 0c55a60..a5ba2bf 100644
> --- a/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextPrefetchTest.java
> +++ b/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextPrefetchTest.java
> @@ -464,6 +464,9 @@ public class DataContextPrefetchTest extends DataContextCase {
> // testing null to-one target
> Painting p4 = (Painting) results.get(3);
> assertNull(p4.readPropertyDirectly(Painting.TO_PAINTING_INFO_PROPERTY));
> +
> + // there was a bug marking an object as dirty when clearing the relationships
> + assertEquals(PersistenceState.COMMITTED, p4.getPersistenceState());
> }
> finally {
> unblockQueries();
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.