On Jan 11, 2010, at 1:03 PM, Chuck Hill wrote:

Hi Gennady,


On Jan 11, 2010, at 4:26 AM, Gennady Kushnir wrote:

Hello again.
I've got it that I was doing something wrong. I've found and removed
several commandments violations, employed MultiECLockManager for
properly locking everything... but I am still getting these errors!
How could I track where is that violation hidden within over 5000 rows of code?

There are many, many ways in which things can be done wrong. I don't know of any easy way to find the source. If you can isolate and reproduce the problem in a minimum set of steps, that will reduce the amount of code you have to look at.


These errors raise without any visible dependencies.
Users report that even when system says that it could not save
something (because of that strange error), actually data is saved and
can be reviewed after logging out and in again.

Something else is happening in your code then. Perhaps this is not from a save? Nothing should get written to the database if this happens during a saveChanges. Maybe this is happening in your app just after saveChanges()?

Hmmm ....... half-saving transactions is a common problem when you don't use a transactional database and no "transaction rollback" is available when ec fails during a save. What database engine are you using?





I tried to find the source of error adding logging to awakeFromFetch
when snapshot is uninitialized. But this log has never fired yet
whereas I have already seen errors related to empty snapshot of object
of that class...
I am confused now...

Not sure what is happening there.


Chuck



2009/11/3 Chuck Hill <ch...@global-village.net>:
Start here:
http://wiki.objectstyle.org/confluence/display/WO/EOF-Using+EOF-Breaking+EOF

Then
http://www.google.com/search?q=llegalStateException+rowDiffsForAttributes+snapshot


Chuck


On Nov 3, 2009, at 2:02 AM, Gennady Kushnir wrote:

Hello list!
I have an occasionally occurring problem which I can not reproduce but
regularly meet in usage logs.
Editing context fails to save changes and reports:

java.lang.IllegalStateException: rowDiffsForAttributes: snapshot in
com.webobjects.eoaccess.EODatabaseOperation {_dbSnapshot = {}; ..... } does not contain value for attribute named colorNoWeight with snapshot
key: colorNoWeight

it also happens for different objects mentioning another attributes,
but as I see a common situation is that _dbSnapshot value is empty
dictionary so no matter what attribute is mentioned. Why could this
happen?
Object in question was surely in database, not just created or deleted.

Also sometimes I get NullPointerException when accessing attributes
described as not null, so it seems like object was not initialized on
fetch.

May it be because these objects were fetched or created and saved in
child editing context and after that used (with
EOUtilities.localInstanceOfObject() ) in parent ?

Once I got reproducible malfunction working with temporary
EOEditingContext.
EOUtilities.localInstanceOfObject(ec, this) was returning an objects with all attributes set to null whereas original object was fine and
was stored in database even before app launch.

             try {
                     boolean cache = ec.hasChanges()
                     if(cache) {
                                     ec = new EOEditingContext();
                                     ec.lock();
                                     AutoItog ai =
(AutoItog)EOUtilities.localInstanceOfObject(ec, this);
                                     course =
(EduCourse)EOUtilities.localInstanceOfObject(ec, course);
                                     result =
calculator().collectRelated(course, ai,

!namedFlags().flagForKey("runningTotal"),true);
                             } else {
                                     ec.lock();
                                     result =
calculator().collectRelated(course, this,

!namedFlags().flagForKey("runningTotal"),true);
                             }
                             ec.saveChanges();
                             if(cache)
                                     result =
EOUtilities.localInstancesOfObjects(editingContext(), result);
                     } catch (RuntimeException e) {
                             logger.log(LogLevel.WARNING,"Error
collecting related", new
Object[] {this,e});
                     } finally {
                             ec.unlock();
                     }
_______________________________________________
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/chill%40global-village.net

This email sent to ch...@global-village.net

--
Chuck Hill             Senior Consultant / VP Development

Practical WebObjects - for developers who want to increase their overall knowledge of WebObjects or who are trying to solve specific problems.
http://www.global-village.net/products/practical_webobjects









--
Chuck Hill             Senior Consultant / VP Development

Practical WebObjects - for developers who want to increase their overall knowledge of WebObjects or who are trying to solve specific problems.
http://www.global-village.net/products/practical_webobjects







_______________________________________________
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

Reply via email to