• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Finding why two UPDATES are send
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Finding why two UPDATES are send


  • Subject: Re: Finding why two UPDATES are send
  • From: Mark Ritchie <email@hidden>
  • Date: Thu, 22 Apr 2010 12:34:26 -0700

Hey Pascal!

On 22/Apr/2010, at 8:54 AM, Pascal Robert wrote:
> What's the best way to debug this?

I would never claim this is best, however this is how I do it: ;-)
(I could have sworn that I've posted this before however google couldn't find it so here it is again!)


/path/to/app/MyApp.woa/MyApp -EOAdaptorDebugEnabled YES -NSJavaDebugging YES
...
*** set a breakpoint (see alternate version below but we warned it's version specific.)
> stop in com.webobjects.jdbcadaptor.JDBCChannel.evaluateExpression

*** to launch the app
> run
...
Breakpoint hit: "thread=WorkerThread0", com.webobjects.jdbcadaptor.JDBCChannel.evaluateExpression(), line=296 bci=0

*** Type the 'next' command to get the log message of what SQL expression is being executed.
> next
[2010-4-22 12:19:22 PDT] <WorkerThread0>  === Begin Internal Transaction
> [2010-4-22 12:19:22 PDT] <WorkerThread0>  evaluateExpression: <com.webobjects.jdbcadaptor.MySQLPlugIn$MySQLExpression: "SELECT t0.BIRTHDAY, t0.FIRST_NAME, t0.ID, t0.LAST_NAME FROM PERSON t0" withBindings: >

Step completed: "thread=WorkerThread0", com.webobjects.jdbcadaptor.JDBCChannel.evaluateExpression(), line=297 bci=7

*** to see the backtrace
> where
  [1] com.webobjects.jdbcadaptor.JDBCChannel.evaluateExpression (JDBCChannel.java:297)
  [2] com.webobjects.jdbcadaptor.JDBCChannel.selectAttributes (JDBCChannel.java:220)
...
  [10] com.webobjects.eoaccess.EOUtilities.objectsForEntityNamed (EOUtilities.java:79)
  [11] your.app.Session.<init> (Session.java:14)
...
  [27] java.lang.Thread.run (Thread.java:637)

>From the backtrace, I see that Session.java, line 14 invoked EOUtilities.objectsForEntityNamed(...).
Your results will very unless you copied my test project! ;-)

*** to have your app continue on, type:
> cont
...

If you get tired of typing 'next' each time breakpoint is hit, you can instead use:
> stop at com.webobjects.jdbcadaptor.JDBCChannel:297

Note: That command was gleaned from looking at the "Step completed" message from jdb (shown above) and is highly dependent on the version of webobjects that you are using.  Please adjust accordingly!

This method has the advantage of working with both Wonder and non-Wonder projects.
No changes to configuration or properties files required.
Works on deployment machines without development tools.

Good Luck!
M.

 _______________________________________________
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

References: 
 >Finding why two UPDATES are send (From: Pascal Robert <email@hidden>)

  • Prev by Date: Re: announcement
  • Next by Date: Re: announcement
  • Previous by thread: Re: Finding why two UPDATES are send
  • Next by thread: updating hudson
  • Index(es):
    • Date
    • Thread