[OS-JIRA] Created: (CAY-308) ObjectStore.processUpdatedSnapshots race condition with ObjectStore.resolveHollow

From: jira-norepl..bjectstyle.org
Date: Wed Apr 20 2005 - 12:03:29 EDT

  • Next message: Watkins, Garry: "Prototypes in CayenneModeller looking for feedback"

    Message:

      A new issue has been created in JIRA.

    ---------------------------------------------------------------------
    View the issue:

      http://objectstyle.org/jira/secure/ViewIssue.jspa?key=CAY-308

    Here is an overview of the issue:
    ---------------------------------------------------------------------
            Key: CAY-308
        Summary: ObjectStore.processUpdatedSnapshots race condition with ObjectStore.resolveHollow
           Type: Bug

         Status: Assigned
       Priority: Major

        Project: Cayenne
     Components:
                 Cayenne Core Library
       Versions:
                 1.1

       Assignee: Andrus Adamchik
       Reporter: Mike Kienenberger

        Created: Wed, 20 Apr 2005 12:02 PM
        Updated: Wed, 20 Apr 2005 12:02 PM

    Description:
    Code calling readProperty/resolveFault/resolveHollow is being "defeated" by outstanding "snapshotsChanged/processUpdatedSnapshots" events.

    Part of this may be how my application is set up.

    I have a local event bridge that rebroadcasts events in one context to all other contexts.

    Unfortunately, these broadcasts seem to invariably arrive while faults are being resolved -- generally trying to resolve the same faults that were caused by the same broadcasts above.

    So resolveFault resolves a fault, then because the resolveHollow code is sychronized, the pending snapshotsChanged that have built up immediately force the object back to hollow before resolveFault can finish, throwing a FaultFailureException.

    It seems like there must be a better way for things to work.

    I'm noticing that my originating DataContexts are also receiving these same snapshotChanged messages (which I'm pretty sure is unnecessary), so I'm going to try filtering these out to start with.

    So I'm not entirely certain that this is a cayenne bug, but since resolveFault can fail even when the data is really there, I'm gonna say it is and see what others think.

    I suspect that the process commented as "// we are lazy, just turn COMMITTED object into HOLLOW instead of actually updating it" in processUpdatedSnapshots() needs to be more proactive to really fix the problem.

    ---------------------------------------------------------------------
    JIRA INFORMATION:
    This message is automatically generated by JIRA.

    If you think it was sent incorrectly contact one of the administrators:
       http://objectstyle.org/jira/secure/Administrators.jspa

    If you want more information on JIRA, or have a bug to report see:
       http://www.atlassian.com/software/jira



    This archive was generated by hypermail 2.0.0 : Wed Apr 20 2005 - 12:03:32 EDT