[JIRA] Updated: (CAY-971) ROP GraphDiff "compressor"

From: Andrus Adamchik (JIRA) ("Andrus)
Date: Sun Jan 27 2008 - 10:21:33 EST

  • Next message: Kevin Menard: "VOTE: 3.0M3 Release"

         [ https://issues.apache.org/cayenne/browse/CAY-971?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

    Andrus Adamchik updated CAY-971:
    --------------------------------

        Summary: ROP GraphDiff "compressor" (was: deduplicate NodePropertyChangeOperations in ROP commit)

    Started thinking about a possible algorithm for "compressing" client-side GraphDiffs, to remove redundant objects form the list of diffs... Here is how I see it now:

    1. First pass through the diff list

        * cancel simple property change diffs preceding any given simple property change diff (matching nodeid and property name)
        * cancel pairs of complimentary arcCreated/arcRemoved and arcRemoved/arcCreated pairs (matching src node id, target node id, arc name)
       
    2. Second pass through the diff list

        * cancel all simple property and arc changes for deleted objects
        * cancel complimentary insert and delete diffs
      

    > ROP GraphDiff "compressor"
    > --------------------------
    >
    > Key: CAY-971
    > URL: https://issues.apache.org/cayenne/browse/CAY-971
    > Project: Cayenne
    > Issue Type: Improvement
    > Components: Cayenne Core Library
    > Reporter: Ari Maniatis
    > Assignee: Andrus Adamchik
    >
    > In ROP, NodePropertyChangeOperation events are sent from the client to the server on commit. These make up a ObjectContextChangeLog and are applied in order on the server. However this results in excess network traffic in situations where the client application might update attributes many times before commit. In our case, we update on every keystroke.
    > Currently, ObjectContextChangeLog is an ArrayList of GraphDiffs (NodePropertyChangeOperations in this situation). Markers seem to also separate groups of GraphDiffs (is this for rollback and nested transactions?)
    > Should this become an ArrayList of markerGroups, each of is a Map<ObjectAttribute, GraphDiff> and therefore redundant events will not end up in the ObjectContextChangeLog? Or is this too simplistic...

    -- 
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
    



    This archive was generated by hypermail 2.0.0 : Sun Jan 27 2008 - 10:21:54 EST