Re: DataObject expiring?

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Wed Jan 06 2010 - 05:25:08 EST

  • Next message: Bryan Lewis: "Re: DataObject expiring?"

    Would you mind opening a Jira with these details and include the JVM
    version and maybe the CPU type on your server?

    Weak references in Cayenne 3.0 are at the ObjectStore level and should
    not affect relationships, if Java works correctly. I.e. related
    objects are store via hard references.

    Andrus

    On Jan 6, 2010, at 4:45 AM, Bryan Lewis wrote:

    > This rings a bit of a bell with me. We made our first big release
    > with
    > Cayenne 3.0 a couple of weeks ago (it went well, thank you) and saw a
    > similar-sounding problem. It happened only intermittently and only
    > on our
    > production server. We could never reproduce it on our test server,
    > let
    > alone in a debugger.
    >
    > We had an object stored in the session. Our editor-page
    > initialization code
    > got the object and then the value of its to-one relationship. This
    > related
    > object would occasionally be null.
    >
    > StoryDetail object from session ---to-one---> Story (occasionally
    > null)
    >
    > We couldn't pin down how to reproduce it. (The user it kept
    > happening too
    > works very remotely.) My guess was some kind of garbage
    > collection. The
    > user would enter a lot of text for several minutes and then save/
    > refresh the
    > page and get the NPE. The other hint was that the same code had
    > never had a
    > problem in two years with Cayenne 2. On the other hand, I was
    > unable to
    > reproduce it by adding explicit garbage collection calls so my guess
    > could
    > be off base.
    >
    > I worked around it by refetching the list of StoryDetails, with a
    > prefetch
    > on Story, so that the desired Story object would always be freshly
    > fetched.
    >
    >
    >
    > On Tue, Jan 5, 2010 at 3:31 PM, Andrus Adamchik <andru..bjectstyle.org
    > >wrote:
    >
    >> On the surface looks like some (de)serialization issue. Although that
    >> doesn't make much sense, as RelationshipFault.relationshipOwner is
    >> not
    >> transient and can't be reset to null easily. The best bet is to run
    >> this in
    >> debugger to get a better picture of what's going on with your
    >> objects.
    >>
    >> Andrus
    >>
    >>
    >> On Jan 5, 2010, at 10:13 PM, Marek Šabo wrote:
    >>
    >>> Hi all,
    >>>
    >>> is there any way that a dataobject could expire? I mean i'm
    >>> storing user's
    >>> settings dataobject in session and after a while, say max 5 min.
    >>> when I try
    >>> to submit a form that binds this data as foreign key I got a
    >>> nullpointer
    >>> exception from setting up that relationship. I think it does't
    >>> expire in
    >>> session because I'm still logged in and only way is to logout and
    >>> login back
    >>> to have the setting reloaded from database. Appending end of
    >>> stacktrace:
    >>>
    >>> at
    >>> org
    >>> .apache
    >>> .cayenne
    >>> .util.RelationshipFault.isTransientParent(RelationshipFault.java:70)
    >>> at
    >>> org
    >>> .apache
    >>> .cayenne
    >>> .util.PersistentObjectList.isFault(PersistentObjectList.java:75)
    >>> at
    >>> org
    >>> .apache
    >>> .cayenne.util.PersistentObjectList.add(PersistentObjectList.java:
    >>> 125)
    >>> at
    >>> org
    >>> .apache
    >>> .cayenne.CayenneDataObject.addToManyTarget(CayenneDataObject.java:
    >>> 282)
    >>> at
    >>> org
    >>> .apache
    >>> .cayenne
    >>> .CayenneDataObject.setReverseRelationship(CayenneDataObject.java:
    >>> 364)
    >>> at
    >>> org
    >>> .apache
    >>> .cayenne.CayenneDataObject.setToOneTarget(CayenneDataObject.java:
    >>> 315)
    >>>
    >>> Thanks for any ideas,
    >>>
    >>> Regards
    >>>
    >>> --
    >>> Marek Šabo
    >>>
    >>
    >>



    This archive was generated by hypermail 2.0.0 : Wed Jan 06 2010 - 05:25:43 EST