You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cayenne.apache.org by Laurent Marchal <lm...@smausa.com> on 2011/10/07 17:06:30 UTC
Re: Cayenne commit never modified columns
Hi,
Answer to myself : this was a threading issue ! I separated the
commits in a different context and everything works fine. Don't udpate
and commit at the same time in a context, as the Cayenne documentation
state, the ObjectContext is not thread safe so you have to take care of
synchronization yourself !
Regards,
Laurent.
Le 09/27/2011 10:25 AM, Laurent Marchal a écrit :
> Hi guys,
>
> I've been successfully used Cayenne for years now, but we have a
> really weird issue right now : Cayenne is committing columns that are
> never modified in our code.. I'm pretty sure Cayenne is not the
> problem, but more the way we use it and I'd like your help on Cayenne
> internals to discover where it comes from.
>
> In our product we manipulate jobs (tasks), and you can change their
> statuses (stop/start/restart...etc). For some reason when we commit
> the status of a job Cayenne randomely updates another one (or more).
> This is happening quite a lot and we discovered the issue because we
> have triggers auditing the database. Here's an extract of the audit :
> _Change Date Time_ _UserID_ _DB Table_ _JobName_ _COLUMN_ _Before Value_ _After Value
> _
>
> 2010-12-09 08:00:52.700 teixeira SMASTER_AUX ARCANO-PUT Change Reason (Record Added) Force Restart : (Teixeira on 09/12/2010 08:00)
> 2010-12-09 08:00:52.707 teixeira SMASTER ARCANO-PUT Job Status Failed Wait to Start
> 2010-12-09 08:00:52.723 teixeira SMASTER NXGLoadPosLe Job Status Finished OK Job Running
> 2010-12-09 08:00:52.723 teixeira SMASTER NXGLoadPosLe Exit Description 0000000000 Pid = 4456
>
>
> 2011-01-14 19:29:10.763 oper-jla SMASTER_AUX LODH-REC-T Change Reason (Record Added) Skip : RZU (Oper-JLA on 14/01/2011 19:29)
> 2011-01-14 19:29:10.773 oper-jla SMASTER G2-RECONSO Job Status Finished OK Job Running
> 2011-01-14 19:29:10.773 oper-jla SMASTER G2-RECONSO Exit Description 0000000000 Pid = 8968
>
> 2011-01-14 19:29:10.783 oper-jla SMASTER LODH-REC-T Job Status Wait Job Dependency Job to be Skipped
> You can see here that when the job ARCANO-PUT is updated, the job
> /NXGLoadPosLe /gets updated too. Same for /G2-RECONSO /who gets
> updated along with LODH-REC-T. You can think that it's a pretty normal
> behavior (if the objects are modified in the same ObjectContext
> they'll be commited together) but I'm sure we NEVER modify the column
> _Exit Description_ ! In the other hand there is a thread that
> regularly updates those jobs from the database so Cayenne can refresh
> this _Exit Description_ column.
>
> My guess is that while a refresh is made from the DB and the _Exit
> Description_ is updated, a commit is made at the same time. Can it
> cause that issue ? What happens if a thread update/refresh the jobs
> while another commits on the same ObjectContext ?
>
> Thank you for your help on this.
> Laurent