Problem Note 53924: "Could not execute JDBC batch update..." exception might be generated in SAS® Size Optimization
SAS Size Optimization might generate the following exception when you attempt to open a profiling project:
FATAL Worker-1 java.lang.StackTraceElement - 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:263)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:179)
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:1206)
at com.sas.solutions.di.server.db.PersistenceManager.endHiberateTxn(PersistenceManager.java:822)
at com.sas.solutions.di.server.db.PersistenceManager.commit(PersistenceManager.java:730)
at com.sas.solutions.di.server.util.Interceptors.privateInvoke(Interceptors.java:171)
at com.sas.solutions.di.server.spring.SpringServer.invoke(SpringServer.java:170)
at com.sas.solutions.di.server.spring.SessionRemoteInvocationExecutor.invoke(SessionRemoteInvocationExecutor.java:46)
at org.springframework.remoting.support.RemoteInvocationBasedExporter.invoke(RemoteInvocationBasedExporter.java:78)
at org.springframework.remoting.support.RemoteInvocationBasedExporter.invokeAndCreateResult(RemoteInvocationBasedExporter.java:114)
at org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter.handleRequest(HttpInvokerServiceExporter.java:73)
at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:49)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
at java.lang.Thread.run(Thread.java:619)
at org.springframework.remoting.support.RemoteInvocationUtils.fillInClientStackTraceIfPossible(RemoteInvocationUtils.java:47)
at org.springframework.remoting.support.RemoteInvocationResult.recreate(RemoteInvocationResult.java:115)
at org.springframework.remoting.support.RemoteInvocationBasedAccessor.recreateRemoteInvocationResult(RemoteInvocationBasedAccessor.java:85)
at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.invoke(HttpInvokerClientInterceptor.java:148)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy21.getProfileDistribution(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sas.solutions.di.server.api.ServerProxy.invoke(ServerProxy.java:60)
at $Proxy22.getProfileDistribution(Unknown Source)
at com.sas.solutions.di.studio.prf.common.model.jobs.load.LoadSizeDistributionWrappersJob.retrieveData(LoadSizeDistributionWrappersJob.java:126)
at com.sas.solutions.di.studio.prf.common.model.jobs.load.LoadSizeDistributionWrappersJob.retrieveDataForLoad(LoadSizeDistributionWrappersJob.java:80)
at com.sas.solutions.di.studio.prf.common.model.jobs.load.vcp.LoadProfileVCPJob.executeLoad(LoadProfileVCPJob.java:65)
at com.sas.solutions.di.studio.prf.common.model.jobs.load.AbstractPRFLoadJob.execute(AbstractPRFLoadJob.java:50)
at com.sas.solutions.di.commons.jobs.AbstractJob.internalExecute(AbstractJob.java:454)
at com.sas.solutions.di.commons.jobs.AbstractJob.run(AbstractJob.java:420)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Caused by: java.sql.BatchUpdateException: ORA-00001: unique constraint (DI_DM.SYS_C0061634) violated
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10296)
at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:216)
at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
When this exception is generated, the constraint name can be obtained by running the following SQL with Oracle DBA privileges:
select TABLE_NAME from all_constraints where owner = 'DI_DM' and constraint_name = 'SYS_C#######';
If the result of the query is PRF_RSLT_PROFILE_RMSD, then there is a duplicate key constraint violation for this table. This particular duplicate key constraint violation is generated when the calculated RMSD values for a profile project are inserted in the PRF_RSLT_PROFILE_RMSD table during a first read situation. This issue only occurs once per profile project when the insert occurs during the first read occurrence.
The exception has no detrimental impact on the solution, other than having to restart the client. This exception might occur under the following circumstances:
- Multiple users trying to access the same profile project at the same time.
- The profiling project being accessed was migrated from a previous release level of the solution and it has no populated RMSD values.
There is no workaround for this issue other than preventing multiple users from accessing the same profile project at the same time.
Operating System and Release Information
| SAS System | SAS Size Profiling | Linux for x64 | 3.2_M4 | | 9.3 TS1M2 | |
| 64-bit Enabled AIX | 3.2_M4 | | 9.3 TS1M2 | |
| Microsoft® Windows® for x64 | 3.2_M4 | | 9.3 TS1M2 | |
*
For software releases that are not yet generally available, the Fixed
Release is the software release in which the problem is planned to be
fixed.
| Type: | Problem Note |
| Priority: | high |
| Date Modified: | 2014-08-27 13:00:55 |
| Date Created: | 2014-08-14 09:01:43 |