Below is a stack trace that I'm seeing on a new web service I wrote.  The web 
service should create a parent object (Trade) and several child objects 
(CandidateAttachment).  The actual exception I'm seeing is that the parent 
object id doesn't exist, so the foreign key constraint is stopping the 
attachments from being saved, which would make sense, except


1)      I just created the parent

2)      After the exception,  the parent still exists (is committed), and of 
course the child does not

3)      This only happens intermittently

I'm polling a remote system to create these Trade and Candidate attachment 
objects.  At 10:15, I got this exception that I can't explain, and 10:30 it ran 
successfully.

In my code, the web service method that RestEasy calls is not marked with 
@CommitAfter.  The web service function calls a method in WelliHornLogic called 
createTrade that is annotated with CommitAfter.  A ConstraintVilationException 
is a runtime exception, so the failure should cause the entire transaction to 
rollback, but that's not what I'm seeing happening.

I'm at a loss as to what I can check next.  I'd prefer to fix the problem such 
that the transaction commits correctly the first time.  The actual method that 
is in TradeLogic that creates these objects is called from the actual web 
application and works as expected there.  Failing that, I'd really like to 
understand what is going on with transaction handling that an aborted 
transaction gets partially committed.

Thanks in advance for any suggestions on what I should look at.

Tony


Here is the actual exception  and it's root cause.

2018-02-06T10:15:14 http-apr-8080-exec-5 ERROR 
com.starpoint.instihire.web.services.WebServicesModule.WelliHornWebService  
Could not execute JDBC batch update
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC 
batch update
                at 
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:96)
                at 
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
                at 
org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
                at 
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:268)
                at 
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:184)
                at 
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
                at 
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
                at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
                at 
com.starpoint.instihire.api.dao.hibernate.Dao.store(Dao.java:44)
                at 
com.starpoint.instihire.api.dao.hibernate.AttachmentDaoImpl.storeAttachment(AttachmentDaoImpl.java:54)
                at $AttachmentDao_e3b6d5997b201.storeAttachment(Unknown Source)
                at 
com.starpoint.instihire.api.business.AttachmentLogicImpl.storeAttachment(AttachmentLogicImpl.java:809)
                at 
com.starpoint.instihire.api.business.AttachmentLogicImpl.storeCandidateAttachment(AttachmentLogicImpl.java:387)
                at 
$AttachmentLogic_e3b6d5997ad05.storeCandidateAttachment(Unknown Source)
                at 
com.starpoint.instihire.api.business.TradeLogicImpl.createTrade(TradeLogicImpl.java:185)
                at $TradeLogic_e3b6d5997acf1.createTrade(Unknown Source)
                at 
com.starpoint.instihire.api.business.WelliHornLogicImpl.createTrade(WelliHornLogicImpl.java:456)
                at $WelliHornLogic_e3b6d5997b372.createTrade(Unknown Source)
                at 
com.starpoint.instihire.web.ws.WelliHornWebServiceImpl.createTrade(WelliHornWebServiceImpl.java:162)
                at $WelliHornWebService_e3b6d5997c491.createTrade(Unknown 
Source)
                at 
$WelliHornWebService_e3b6d5997c492.advised$createTrade_e3b6d5997c496(Unknown 
Source)
                at 
$WelliHornWebService_e3b6d5997c492$Invocation_createTrade_e3b6d5997c495.proceedToAdvisedMethod(Unknown
 Source)
                at 
org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:84)
                at 
com.starpoint.instihire.web.services.WebServicesModule$1.advise(WebServicesModule.java:64)
                at 
org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:86)
                at $WelliHornWebService_e3b6d5997c492.createTrade(Unknown 
Source)
                at $WelliHornWebService_e3b6d5997ace4.createTrade(Unknown 
Source)
                at sun.reflect.GeneratedMethodAccessor2536.invoke(Unknown 
Source)
                at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:498)
                at 
org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:137)
                at 
org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:272)
                at 
org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:229)
                at 
org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:216)
                at 
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:356)
                at 
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:179)
                at 
org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220)
                at 
org.tynamo.resteasy.ResteasyRequestFilter.service(ResteasyRequestFilter.java:97)
Caused by: java.sql.BatchUpdateException: Batch entry 0 insert into 
CandidateAttachment (attachmentName, createDate, CreateUserId, updateDate, 
UpdateUserId, AgencyId, attachmentType, isDeleted, TradeId, attachmentId) 
values ('redacted.doc', '2018-02-06 10:15:14.805000 -05:00:00', 1088, 
'2018-02-06 10:15:14.805000 -05:00:00', 1088, 230, 'application/msword', 'N', 
401734, 420468) was aborted.  Call getNextException to see the cause.
                at 
org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2762)
                at 
org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1999)
                at 
org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:421)
                at 
org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2929)
                at sun.reflect.GeneratedMethodAccessor329.invoke(Unknown Source)
                at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:498)
                at 
net.bull.javamelody.JdbcWrapper.doExecute(JdbcWrapper.java:412)
                at 
net.bull.javamelody.JdbcWrapper$StatementInvocationHandler.invoke(JdbcWrapper.java:137)
                at 
net.bull.javamelody.JdbcWrapper$DelegatingInvocationHandler.invoke(JdbcWrapper.java:294)
                at com.sun.proxy.$Proxy90.executeBatch(Unknown Source)
                at 
org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
                at 
org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
                ... 71 more




This exception was in turn caused by:



ERROR org.hibernate.util.JDBCExceptionReporter  ERROR: insert or update on 
table "candidateattachment" violates foreign key constraint 
"fk_candidateattachment_trade"  Detail: Key (tradeid)=(401734) is not present 
in table "trade".



Reply via email to