Unique constraint on HFJ_RES_LINK fails

69 views
Skip to first unread message

Binu Chacko

unread,
Feb 14, 2019, 1:55:34 AM2/14/19
to HAPI FHIR
Following error occurs on my hapi server from yesterday onwards
I am using the latest version 3.6. What could be the reason
insert into HFJ_RES_LINK (SRC_PATH, SRC_RESOURCE_ID, SOURCE_RESOURCE_TYPE, TARGET_RESOURCE_ID, TARGET_RESOURCE_TYPE, TARGET_RESOURCE_URL, SP_UPDATED, PID) values (?, ?, ?, ?, ?, ?, ?, ?)]; constraint [HAPI.BIN$Y/kbdLKWBirgU6v9qMAkOw==$0]

James Agnew

unread,
Feb 14, 2019, 8:11:12 AM2/14/19
to Binu Chacko, HAPI FHIR
Hi Binu,

Can you provide any more details? E.g. stack traces or database errors?

Cheers,
James

--
You received this message because you are subscribed to the Google Groups "HAPI FHIR" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hapi-fhir+...@googlegroups.com.
To post to this group, send email to hapi...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/hapi-fhir/72a1c996-7fe1-4984-ba81-b11e161091e2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Binu Chacko

unread,
Feb 15, 2019, 9:58:29 AM2/15/19
to James Agnew, HAPI FHIR
Hi James,
Thank you for the quick response.
Following error occurs in the hapi db which is only with now. I will send you stack trace by Monday. I found batch of 50 records are being inserted using the same PID into HFJ_RES_LINK table which never happened before. 

>>>>insert into HFJ_RES_LINK (SRC_PATH, SRC_RESOURCE_ID, SOURCE_RESOURCE_TYPE, TARGET_RESOURCE_ID, TARGET_RESOURCE_TYPE, TARGET_RESOURCE_URL, SP_UPDATED, PID) values (?, ?, ?, ?, ?, ?, ?, ?)]; constraint [HAPI.BIN$Y/kbdLKWBirgU6v9qMAkOw==$0]

ORA-00001: unique constraint (HAPI.BIN$Y/kbdLKWBirgU6v9qMAkOw==$0) violated

Regards
Binu

--
Binu Kooran
00968-99339624

Binu Chacko

unread,
Feb 16, 2019, 11:12:47 PM2/16/19
to HAPI FHIR
Please find the stack trace here

Failed to call access method: org.springframework.transaction.HeuristicCompletionException: Heuristic completion: outcome state is mixed; nested exception is org.springframework.dao.DataIntegrityViolationException: could not execute batch; SQL [insert into HFJ_RES_LINK (SRC_PATH, SRC_RESOURCE_ID, SOURCE_RESOURCE_TYPE, TARGET_RESOURCE_ID, TARGET_RESOURCE_TYPE, TARGET_RESOURCE_URL, SP_UPDATED, PID) values (?, ?, ?, ?, ?, ?, ?, ?)]; constraint [HAPI.BIN$Y/kbdLKWBirgU6v9qMAkOw==$0]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute batch

ca.uhn.fhir.rest.server.exceptions.InternalErrorException: Failed to call access method: org.springframework.transaction.HeuristicCompletionException: Heuristic completion: outcome state is mixed; nested exception is org.springframework.dao.DataIntegrityViolationException: could not execute batch; SQL [insert into HFJ_RES_LINK (SRC_PATH, SRC_RESOURCE_ID, SOURCE_RESOURCE_TYPE, TARGET_RESOURCE_ID, TARGET_RESOURCE_TYPE, TARGET_RESOURCE_URL, SP_UPDATED, PID) values (?, ?, ?, ?, ?, ?, ?, ?)]; constraint [HAPI.BIN$Y/kbdLKWBirgU6v9qMAkOw==$0]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute batch
at ca.uhn.fhir.rest.server.method.BaseMethodBinding.invokeServerMethod(BaseMethodBinding.java:263)
at ca.uhn.fhir.rest.server.method.BaseOutcomeReturningMethodBinding.invokeServer(BaseOutcomeReturningMethodBinding.java:164)
at ca.uhn.fhir.rest.server.method.UpdateMethodBinding.invokeServer(UpdateMethodBinding.java:44)
at ca.uhn.fhir.rest.server.RestfulServer.handleRequest(RestfulServer.java:970)
at ca.uhn.fhir.rest.server.RestfulServer.doPut(RestfulServer.java:346)
at ca.uhn.fhir.rest.server.RestfulServer.service(RestfulServer.java:1551)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:232)
at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:209)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.ebaysf.web.cors.CORSFilter.handleNonCORS(CORSFilter.java:437)
at org.ebaysf.web.cors.CORSFilter.doFilter(CORSFilter.java:172)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:322)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:486)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor125.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at ca.uhn.fhir.rest.server.method.BaseMethodBinding.invokeServerMethod(BaseMethodBinding.java:258)
... 37 more
Caused by: org.springframework.transaction.HeuristicCompletionException: Heuristic completion: outcome state is mixed; nested exception is org.springframework.dao.DataIntegrityViolationException: could not execute batch; SQL [insert into HFJ_RES_LINK (SRC_PATH, SRC_RESOURCE_ID, SOURCE_RESOURCE_TYPE, TARGET_RESOURCE_ID, TARGET_RESOURCE_TYPE, TARGET_RESOURCE_URL, SP_UPDATED, PID) values (?, ?, ?, ?, ?, ?, ?, ?)]; constraint [HAPI.BIN$Y/kbdLKWBirgU6v9qMAkOw==$0]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute batch
at org.springframework.data.transaction.ChainedTransactionManager.commit(ChainedTransactionManager.java:177)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:532)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:304)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
at com.sun.proxy.$Proxy163.update(Unknown Source)
at ca.uhn.fhir.jpa.provider.JpaResourceProviderDstu2.update(JpaResourceProviderDstu2.java:159)
... 41 more
Caused by: org.springframework.dao.DataIntegrityViolationException: could not execute batch; SQL [insert into HFJ_RES_LINK (SRC_PATH, SRC_RESOURCE_ID, SOURCE_RESOURCE_TYPE, TARGET_RESOURCE_ID, TARGET_RESOURCE_TYPE, TARGET_RESOURCE_URL, SP_UPDATED, PID) values (?, ?, ?, ?, ?, ?, ?, ?)]; constraint [HAPI.BIN$Y/kbdLKWBirgU6v9qMAkOw==$0]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute batch
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:259)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:225)
at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:540)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:746)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:714)
at org.springframework.data.transaction.MultiTransactionStatus.commit(MultiTransactionStatus.java:74)
at org.springframework.data.transaction.ChainedTransactionManager.commit(ChainedTransactionManager.java:150)
... 48 more
Caused by: org.hibernate.exception.ConstraintViolationException: could not execute batch
at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:112)
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:111)
at org.hibernate.engine.jdbc.batch.internal.BatchingBatch.performExecution(BatchingBatch.java:121)
at org.hibernate.engine.jdbc.batch.internal.BatchingBatch.doExecuteBatch(BatchingBatch.java:97)
at org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl.execute(AbstractBatchImpl.java:147)
at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.executeBatch(JdbcCoordinatorImpl.java:212)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:628)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:473)
at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:337)
at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39)
at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1436)
at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:493)
at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:3206)
at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:2412)
at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:473)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:156)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$100(JdbcResourceLocalTransactionCoordinatorImpl.java:38)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:231)
at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:68)
at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:536)
... 52 more
Caused by: java.sql.BatchUpdateException: ORA-00001: unique constraint (HAPI.BIN$Y/kbdLKWBirgU6v9qMAkOw==$0) violated

at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:12296)
at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:246)
at org.apache.commons.dbcp2.DelegatingStatement.executeBatch(DelegatingStatement.java:344)
at org.apache.commons.dbcp2.DelegatingStatement.executeBatch(DelegatingStatement.java:344)
at org.hibernate.engine.jdbc.batch.internal.BatchingBatch.performExecution(BatchingBatch.java:111)
... 69 more

Binu Chacko

unread,
Feb 24, 2019, 11:28:33 PM2/24/19
to HAPI FHIR, James Agnew
Dear James,
I am adding further stacktrace  regarding the error reported earlier.. 
Can you please provide some hint on the solution.

Failed to call access method: org.springframework.transaction.HeuristicCompletionException: Heuristic completion: outcome state is mixed; nested exception is org.springframework.orm.jpa.JpaSystemException: Batch update returned unexpected row count from update [0]; actual row count: 50; expected: 1; nested exception is org.hibernate.jdbc.BatchedTooManyRowsAffectedException: Batch update returned unexpected row count from update [0]; actual row count: 50; expected: 1

ca.uhn.fhir.rest.server.exceptions.InternalErrorException: Failed to call access method: org.springframework.transaction.HeuristicCompletionException: Heuristic completion: outcome state is mixed; nested exception is org.springframework.orm.jpa.JpaSystemException: Batch update returned unexpected row count from update [0]; actual row count: 50; expected: 1; nested exception is org.hibernate.jdbc.BatchedTooManyRowsAffectedException: Batch update returned unexpected row count from update [0]; actual row count: 50; expected: 1
Regards
Binu

--
You received this message because you are subscribed to the Google Groups "HAPI FHIR" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hapi-fhir+...@googlegroups.com.
To post to this group, send email to hapi...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.


--
Binu Kooran
00968-99339624

James Agnew

unread,
Feb 25, 2019, 1:10:28 PM2/25/19
to Binu Chacko, HAPI FHIR
Hi Binu,

I don't see anything obvious there. Do you see the same behaviour if you post the same data to our public test server? Is there a specific version of HAPI FHIR where this started happening?

Cheers,
James

Binu Chacko

unread,
Mar 3, 2019, 2:54:42 AM3/3/19
to James Agnew, HAPI FHIR
Dear James,
The issue is resolved by providing value of sequence increment as 50 instead of 1. Though, the increment values was 50 as per the creation script, it got changed while we were doing some DB maintenance. It is works properly now.

Regards
Binu


For more options, visit https://groups.google.com/d/optout.


--
Binu Kooran
00968-99339624
Reply all
Reply to author
Forward
0 new messages