Hey Chuck, List,
After spending a considerable amount of time trying to track down the
problem, I think I have finally found it. I don't believe it is a
problem with my application at all, but a bug in WO.
I say this because I have made another simple application and have
been able to reproduce the problem, so it is not my app--but it is
still the same development machine--so it could still be on my end.
I'd like to clean up the simple app and post it somewhere for others
to confirm that it is a bug and not me. Where would be a good place
to post it?
I'm running WO 5.3, WOLips 3.3.5037, and WONDER 4.0.0.700.
This is what I've found:
The optimizations mentioned in the EOObserverCenter documentation on
Change Notification saves an eo object reference connected with the
current thread. This reference is usually cleared by the framework
in various spots by calling
EOObserverCenter.notifyObserversObjectWillChange(null). Save
changes, process recent changes, dispose, etc end up calling this
method. When a change is made and not saved, I have found that this
method is not always called. The problem then comes up when the
changes are saved in a different thread and then another change is
attempted (in the same object) once the original thread comes back
around. Since the object reference was not cleared in the original
thread the object change message is suppressed and so the changes are
not registered.
I found that If I changed the editingContext to a EOEditingContext as
opposed to the ERXEC the problem did not show up. When I traced down
the difference I found that ERXEC was failing to enter properly into
the private _enqueueEndOfEventNotification() because of a check that
the _lockCount == 0. So I added the appropriate locks when using the
EOEditingContext and it also failed. So I don't think it is related
to Wonder. Maybe I should see if I can reproduce the problem with a
pure web objects app.
I'm surprised that this bug hasn't been found before. It does show
up in rather strange situations, but I've seen it happen consistently
in 2 places in my application, and have traced both of them to this
same problem (after many hours of repentance work with no luck).
Well, it's the end of my day, I've got to head home. Let me know
where I should post the demo app (or If you want me to send it to any
of you) and I'll try to do that tomorrow.
Thanks,
Jonathan
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Wonder-disc mailing list
email@hidden
https://lists.sourceforge.net/lists/listinfo/wonder-disc