Can you enable Cayenne SQL logging? You'll see all the SQL executed prior to the exception.
http://cayenne.apache.org/doc30/configuring-logging.html On Feb 7, 2012, at 8:49 PM, Joe Baldwin wrote: > Michael, > > I have new info that makes this problem look even screwier. (Please refer to > the error msgs below). > > So, you might say: "so what, ... this looks like the same error". Yes, it > does! However, I just got this error after I restarted tomcat and tried to > login to my app. There is ABSOLUTELY no code that attempts to add/update a > Product entity during a login. > > Is it possible, that there is a cached operation that is attempting to be > committed? (Sort of like a printer trying to print a job that you have > already deleted.) > > I have never heard of a DBMS/JDBC-lib/ORM attempting to do this, but then > again, I do not have control over the server and the techsupport dudes sound > like they are very inexeprienced. > > Joe > > > > > Stacktrace: > > org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510) > > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419) > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) > org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) > javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > > org.apache.cayenne.conf.WebApplicationContextFilter.doFilter(WebApplicationContextFilter.java:93) > > root cause > > org.apache.cayenne.CayenneRuntimeException: [v.3.0.1 Aug 25 2010 19:42:04] > Commit Exception > > org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:1134) > > org.apache.cayenne.access.DataContext.commitChanges(DataContext.java:1045) > cms.SessionLogger.log(Unknown Source) > cms.SessionLogger.log(Unknown Source) > > org.apache.jsp.staff.admin.main.AdminLoginVerify_jsp._jspService(AdminLoginVerify_jsp.java:85) > org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) > javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) > org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) > javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > > org.apache.cayenne.conf.WebApplicationContextFilter.doFilter(WebApplicationContextFilter.java:93) > > root cause > > com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: > Cannot add or update a child row: a foreign key constraint fails > (`eagle1_om28`.`product`, CONSTRAINT `product_ibfk_2` FOREIGN KEY > (`packageTypeOid`) REFERENCES `packagetype` (`oid`)) > > > > > > On Feb 7, 2012, at 11:48 AM, Michael Gentry wrote: > >> Hi Bryan, >> >> I can confirm that the commit order varies. We were seeing the issue >> on the same environment, though. When the AshwoodEntitySorter built >> the object graph, it would vary from run-to-run. Once built, it is >> cached. If it happens to build a proper order, you are good to go at >> least until you restart. For our particular issue, we had a deep >> object graph cycle that didn't throw any exceptions. The >> AshwoodEntitySorter doesn't work so well with cycles. Once we removed >> that relationship, the problem went away. >> >> mrg >> >> >> On Mon, Feb 6, 2012 at 7:18 AM, Bryan Lewis <[email protected]> wrote: >>> This error reminds me of something we see in our shop. If multiple related >>> entities are being committed together, Cayenne can sometimes commit them >>> out of order which can cause FK constraint violations. The commit order >>> seems to be indeterminate; it can work as expected on a dev machine and >>> fail in production. >>> >>> Look at the SQL issued just before the error. On one server you might see >>> the packagetype being inserted before the product, but the other way around >>> on the other server. If this is the problem, the fix is to subclass the >>> AshwoodEntitySorter as has been discussed a couple of times in the list. >>> >>> >>> >>> On Sun, Feb 5, 2012 at 6:48 PM, Joe Baldwin <[email protected]> wrote: >>> >>>> >>>> Here is the current error (which is really odd because it is working just >>>> fine on my dev server) >>>> >>>> com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: >>>> Cannot add or update a child row: a foreign key constraint fails >>>> (`eagle1_om28`.`product`, CONSTRAINT `product_ibfk_2` FOREIGN KEY >>>> (`packageTypeOid`) REFERENCES `packagetype` (`oid`)) >>>> >
