Just postulating a theory here, but because we first set the ec fetch timestamp to current time, the refreshObjects will fetch fresh from the database due to out-of-date snapshots, and all other ec's get the benefit of the changed snapshots since snapshots are shared by all that are using the same OSC?
Anyway, I was pretty sure that thise worked for me before ..... I might write a test case some day when I get time, or maybe update the FreshnessExplorer.woa -Kieran On Feb 11, 2010, at 10:06 AM, Mike Schrag wrote: > as soon as i sent that i knew someone was going to call me on my lack of > clarity ... change that to "not necessarily fetched <in that ec>" if there > are affected snapshots fetched in other EC's in your app, you're only going > to refresh SOME of them. plus JFV is right that refreshObjects is not going > to refresh relationships, just the EO's. > > i'm kind of curious how hibernate addresses this when you use their caching > layers ... > > ms > > On Feb 11, 2010, at 10:01 AM, Anjo Krank wrote: > >> But those not already fetched aren't a problem anyway? >> >> Cheers, Anjo >> >> >> >> Am 11.02.2010 um 15:29 schrieb Mike Schrag: >> >>> that would only refresh the objects that were fetched into that EC, though, >>> right? i'm assuming he's doing a bulk operation on objects that were not >>> necessarily fetched. >>> >>> ms >>> >>> On Feb 11, 2010, at 9:17 AM, Kieran Kelleher wrote: >>> >>>> Really, IIRC, the code: >>>> >>>> ec.setFetchTimestamp( System.currentTimeMillis() ); >>>> ec.refreshAllObjects(); >>>> >>>> Try it. If it works, great. If not, let us know ;-) >>>> >>>> Kieran >>>> >>>> On Feb 11, 2010, at 9:05 AM, Mike Schrag wrote: >>>> >>>>> invalidateAllObjects can break other EC's that are currently editing >>>>> objects because you throw away the backing snapshots from underneath them >>>>> ... >>>>> >>>>> ms >>>>> >>>>> On Feb 11, 2010, at 8:45 AM, Jean-Francois Veillette wrote: >>>>> >>>>>> I'm surprised no one mentionned ec.invalidateAllObjects() coupled with >>>>>> refetching arrays you might have in memory (displaygroup and such for >>>>>> example), as far as I understand, it's the only solution that will take >>>>>> care of relationship and get rid of deleted objects (faults will still >>>>>> be in memory but at least refetching relationship and arrays will avoid >>>>>> pointing to them). >>>>>> >>>>>> - jfv >>>>>> >>>>>> Le 10-02-08 à 14:20, Mike Schrag a écrit : >>>>>> >>>>>>> yeah, this is why i'm suspicious that we'll see a generalized Wonder >>>>>>> implementation of this .... definitely some tricks we could do, like >>>>>>> what you're saying -- just changing attributes that don't participate >>>>>>> in relationships, inverse relationships, or restricting qualifiers >>>>>>> could be a relatively easy update. changing anything that participates >>>>>>> in a relationship would be sort of a pain -- you have to do that >>>>>>> pre-fetch thing first and then you'd have to fake notifications >>>>>>> afterwards. for delete, it's even nastier. >>>>>>> >>>>>>> i think you take advantage of the knowledge you have of your special >>>>>>> case and custom write this. it's topics like these that make me >>>>>>> sometimes think the everything-is-cached approach is overkill. i'd love >>>>>>> to see a variant of EOF that lets you write like a stateless framework >>>>>>> in cases where you don't want all the snapshotting stuff. >>>>>>> >>>>>>> ms >>>>>>> >>>>>>> On Feb 8, 2010, at 2:13 PM, Anjo Krank wrote: >>>>>>> >>>>>>>> Mostly, it depends on what you are doing. Changing, say, status=done >>>>>>>> is different from owner=<people pk:1>, because the one only changes >>>>>>>> internal state, the other touches relationships. >>>>>>>> >>>>>>>> Then again, all your *other* ECs in all *other* instances won't get >>>>>>>> notified anyway (unless you use the ERCNF). So your code needs to be >>>>>>>> able to handle that problem anyway. >>>>>>>> >>>>>>>> Cheers, Anjo >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Am 08.02.2010 um 20:02 schrieb Mike Schrag: >>>>>>>> >>>>>>>>>> Mike's precautionary measure is ticking at the top of my mind... so >>>>>>>>>> may be for the time being I will just call ec.refreshAllObjects() >>>>>>>>>> just to be integral, consistent, simple and more importantly let not >>>>>>>>>> annoy EOF by mistake!!! >>>>>>>>> my precautionary tale is about using the methods you're using at all >>>>>>>>> (i.e. the updateRowsDescribedByQualifier) ... you're sneaking behind >>>>>>>>> EOF and basically doing direct DB operations. you're then trying to >>>>>>>>> come back and expect an easy way for EOF's caches to be in-sync with >>>>>>>>> your changes. the general case here is that you can't do it without >>>>>>>>> tossing all your snapshots, because you have no idea if the snapshots >>>>>>>>> in your cache are actually in-sync with the current state of the >>>>>>>>> database when you executed your update. there's a reason EOF does >>>>>>>>> what it does when you perform all of these operations, and it's >>>>>>>>> because it actually needs to. >>>>>>>>> >>>>>>>>> probably the closest-to-right way to do this is to prefetch the rows >>>>>>>>> that would be updated or deleted, perform the operations, then use >>>>>>>>> the GIDs to ... i guess manually do everything that EOF would have >>>>>>>>> done. you're going to lose all the inverse relationship updating, and >>>>>>>>> you're going to lose delete rules, etc. also, by fetching into the EC >>>>>>>>> beforehand, you're basically taking the performance hit that you were >>>>>>>>> probably trying to avoid in the first place by using those API's. >>>>>>>>> >>>>>>>>> so i doubt there's a simple generalized API that will go into Wonder >>>>>>>>> for this -- i'm not people would be happy with the performance >>>>>>>>> profile of it. >>>>>>>>> >>>>>>>>> ms >>>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> Do not post admin requests to the list. They will be ignored. >>>>> Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) >>>>> Help/Unsubscribe/Update your Subscription: >>>>> http://lists.apple.com/mailman/options/webobjects-dev/kieran_lists%40mac.com >>>>> >>>>> This email sent to kieran_li...@mac.com >>>> >>>> _______________________________________________ >>>> Do not post admin requests to the list. They will be ignored. >>>> Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) >>>> Help/Unsubscribe/Update your Subscription: >>>> http://lists.apple.com/mailman/options/webobjects-dev/mschrag%40mdimension.com >>>> >>>> This email sent to msch...@mdimension.com >>> >>> >>> _______________________________________________ >>> Do not post admin requests to the list. They will be ignored. >>> Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) >>> Help/Unsubscribe/Update your Subscription: >>> http://lists.apple.com/mailman/options/webobjects-dev/anjo%40krank.net >>> >>> This email sent to a...@krank.net >> >> _______________________________________________ >> Do not post admin requests to the list. They will be ignored. >> Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) >> Help/Unsubscribe/Update your Subscription: >> http://lists.apple.com/mailman/options/webobjects-dev/mschrag%40mdimension.com >> >> This email sent to msch...@mdimension.com > > > _______________________________________________ > Do not post admin requests to the list. They will be ignored. > Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) > Help/Unsubscribe/Update your Subscription: > http://lists.apple.com/mailman/options/webobjects-dev/kieran_lists%40mac.com > > This email sent to kieran_li...@mac.com _______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com