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`))
>>> 

Reply via email to