Re: Objects don't get initialized sometimes
Re: Objects don't get initialized sometimes
- Subject: Re: Objects don't get initialized sometimes
- From: Kieran Kelleher <email@hidden>
- Date: Mon, 11 Jan 2010 19:47:21 -0500
OK, I am going to make a guess here at the most common mistake when
installing MySQL. Correct me if I am wrong, but did you configure
MySQL before using it? If so, did you set InnoDB as the default
database engine? If so, are all your developers using InnoDB?
Using the *DEFAULT* MyISAM Engine would be one explanation for half-
saved data because MyISAM is *NOT* transactional. EOF *REQUIRES* a
transactional-database for transactional EditingCOntext saves, so
MySQL should be configured to use InnoDB. You can check your current
db by doing a "SHOW CREATE TABLE <mytable>;" on any tables in the
database. If it says "ENGINE=MyISAM" towards the end of the SHOW
CREATE statement, you are in trouble. You will need to configure
InnoDB in /etc/my.cnf *AND* convert all existing MyISAM tables to
InnoDB (which is pretty easy). *ALL* tables in the DB must be InnoDB
since MyISAM tables simply will never roll back, period. MyISAM engine
was originally designed for logging applications AFAIK - yeah, logs! -
not relational transactional databases! MySQL is really a half dozen
databases under one umbrella and they all (mostly) work with the same
SQL - so switching to InnoDB is like swapping out the older 4.7 V8 in
your Toyota Tundra to the newer 5.7 V8 (more bells and whistles). I
definitely prefer the 5.7 V8 ;-)
This article (from my now dead, soon-to-be-replaced-with-yet-another,
blog) still applies to MySQL 5.0.X and latest OS X:
http://blog.greenislandconsulting.com/2009/07/install-mysql-5-on-os-x-leopard-server.html
If you are unsure of how to configure /etc/my.cnf for production, get
the "Advanced MySQL" book form amazon. Easy to read and understand.
Also changing the InnoDB memory allocations on an existing
installation is not just a case of changing the /etc/my.cnf file - you
need to do a few steps in addition, so Google that if you had InnoDB
on the default settings, but not being used.
Even if my guess is wrong, I hope this will help some other WebObjects
devs - DO NOT USE the DEFAULT MyISAM ENGINE - it will cause you great
pain and suffering!!
HTH, Kieran
On Jan 11, 2010, at 5:14 PM, Gennady Kushnir wrote:
I am on MySQL 5.0.x
I don't use change notification framework.
Stack trace of exception says it is raised during ec.saveChanges().
May it be caused by using nested editing contexts?
Unfortunately I have no idea how to isolate a problem. I can not even
reproduce it.
Myself I have only seen it once "in action". Mostly I can only see it
in logs. And I can't afford to limit functionality of a working
system.
Furthermore I assume it is in the most actively employed part of a
system. As most errors take place there. But maybe it is only because
the majority of saves are performed there...
Maybe I could diagnose the problem injecting some testing somewhere?
Maybe in editingContext subclass?
2010/1/11 Kieran Kelleher <email@hidden>:
On Jan 11, 2010, at 1:59 PM, Chuck Hill wrote:
On Jan 11, 2010, at 10:33 AM, Kieran Kelleher wrote:
On Jan 11, 2010, at 1:03 PM, Chuck Hill wrote:
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?
Now who would use a squirrelly mock database like that?!!?
Someone who acquires a Ferrari and drives it in first gear because
they have
never used a "stick-shift" car before! :-P
:-P
Chuck
--
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 (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden