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:46:57 UTC
[jira] Created: (CAY-1277) Prefetching may cause a root object to
got from COMMITTED to MODIFIED state
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.
[jira] Closed: (CAY-1277) Prefetching may cause a root object to
got from COMMITTED to MODIFIED state
Posted by "Andrus Adamchik (JIRA)" <ji...@apache.org>.
[ 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.