cayenne-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matt Watson <>
Subject Syncing DataContexts
Date Tue, 15 Dec 2015 20:37:49 GMT
I’m not sure if we are doing something wrong, but we are experiencing odd behavior related
to DataObjects that exist in multiple contexts.

In our application we use a single ServerRuntime, and each user that connects (via handheld
scanner) gets their own context ( serverRuntime.newContext() )

It is my understanding that if more than one ObjectContext has the same DataObject, when changes
to that object are committed, the other context that has that same object will automatically
be updated with the changes. But this does not seem to be happening for me.

The specific scenario, is that I have two different people receiving product to the same PurchaseOrderLine.
If they both bring in that PurchaseOrderLine before anything has been received, the “receivedQuantity”
on that POL starts out at 0 (ZERO). When person A scans a box, the POL.receivedQuantity increments
to 1, and then increments to 2 when he scans another. Then if person B scans a box, their
POL still thinks the “receivedQuantity” is ZERO and it increments it to 1. So what I have
in the database is a POL with receivedQuantity 1, but there are actually InventoryTransactions
showing that it should be at 3.

Not sure if this is related but we often see in the log during a commit -> "snapshot version
changed, don't know what to do…”

I doubt this is normal behavior and figure its indicating we are doing something wrong, but
I’m not sure what.

Has anyone else experienced anything like this or have any suggestions for me.

I read the Cayenne docs here (
that it does not recommend using synchronization for a large number of users (peer Contexts),
however I tested this with only 2 and still experience the issue.  And now that I have just
reread that documentation, I may have misunderstood that the object is automatically updated,
and that instead the Context is notified of the changes via an event, but if I am not listening
that event (& handling), then that could be why the other Context does not have the updated
information on that object.

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message