[midPoint] Hibernate SQLServer Snapshot Isolation error

Pavol Mederly mederly at evolveum.com
Wed Oct 8 19:14:25 CEST 2014


Hello Todd,

generally, midPoint repository uses a combination of pessimistic and 
optimistic locking to ensure data consistency in multi-threaded 
environments (depending on specific database type). Therefore, it is 
quite normal that the underlying database reports "transaction aborted 
due to a conflict" exception. MidPoint reacts to such an exception by 
retrying the respective operation. Only when too many attempts fail 
(currently 40), an error is reported to higher layers.

However, the error you've encountered may perhaps be avoided. I'm going 
to have a look at that. Could you, please, send me - preferrably, to my 
private address mederly at evolveum.com - a bit more from your log file? I 
mean a couple of records before and after the error you've sent here.

Best regards,
Pavol Mederly
Evolveum


On 8. 10. 2014 17:19, Todd Bickers wrote:
> Hello,
>
> I'm working on a Midpoint installation where we are importing 
> 1,800,000+ records into Midpoint.  During our import process we are 
> receiving SQLServer Snapshot isolation errors when we call the SOAP 
> web services from a multi-threaded client.  This hibernate issue goes 
> away if we turn off auditing.  Has anyone seen this issue with 
> hibernate and SQL Server?  Does anyone know of a SQL Server 
> installation with a lot of records in the m_user table? Our process 
> does complete and load the 1,800,000+ records successfully.  We just 
> get this error in the log.  The client call completes successfully(no 
> exceptions returned).
>
> Thanks,
>
> Todd Bickers
> University of Illinois
> tbickers at uillinois.edu
>
>
> StackTrace:
>
> 2014-10-08 09:58:40,031 [MODEL] [http-8080-29] ERROR 
> (org.hibernate.id.enhanced.TableStructure): could not read a hi value
> com.microsoft.sqlserver.jdbc.SQLServerException: Snapshot isolation 
> transaction aborted due to update conflict. You cannot use snapshot 
> isolation to access table 'dbo.hibernate_sequence' directly or 
> indirectly in database 'Midpoint_Todd' to update, delete, or insert 
> the row that has been modified or deleted by another transaction. 
> Retry the transaction or change the isolati
> on level for the update/delete statement.
>         at 
> com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216) 
> ~[sqljdbc4.jar:na]
>         at 
> com.microsoft.sqlserver.jdbc.SQLServerResultSet$FetchBuffer.nextRow(SQLServerResultSet.java:4853) 
> ~[sqljdbc4.jar:na]
>         at 
> com.microsoft.sqlserver.jdbc.SQLServerResultSet.fetchBufferNext(SQLServerResultSet.java:1781) 
> ~[sqljdbc4.jar:na]
>         at 
> com.microsoft.sqlserver.jdbc.SQLServerResultSet.next(SQLServerResultSet.java:1034) 
> ~[sqljdbc4.jar:na]
>         at 
> com.mchange.v2.c3p0.impl.NewProxyResultSet.next(NewProxyResultSet.java:2859) 
> ~[c3p0-0.9.1.jar:0.9.1]
>         at 
> org.hibernate.id.enhanced.TableStructure$1$1.execute(TableStructure.java:135) 
> ~[hibernate-core-4.1.12.Final.jar:4.1.12.Final]
>         at 
> org.hibernate.id.enhanced.TableStructure$1$1.execute(TableStructure.java:120) 
> ~[hibernate-core-4.1.12.Final.jar:4.1.12.Final]
>         at 
> org.hibernate.jdbc.WorkExecutor.executeReturningWork(WorkExecutor.java:72) 
> ~[hibernate-core-4.1.12.Final.jar:4.1.12.Final]
>         at 
> org.hibernate.jdbc.AbstractReturningWork.accept(AbstractReturningWork.java:51) 
> ~[hibernate-core-4.1.12.Final.jar:4.1.12.Final]
>         at 
> org.hibernate.engine.transaction.internal.jdbc.JdbcIsolationDelegate.delegateWork(JdbcIsolationDelegate.java:77) 
> [hibernate-core-4.1.12.Final.jar:4.1.12.Final]
>         at 
> org.hibernate.id.enhanced.TableStructure$1.getNextValue(TableStructure.java:119) 
> [hibernate-core-4.1.12.Final.jar:4.1.12.Final]
>         at 
> org.hibernate.id.enhanced.OptimizerFactory$NoopOptimizer.generate(OptimizerFactory.java:252) 
> [hibernate-core-4.1.12.Final.jar:4.1.12.Final]
>         at 
> org.hibernate.id.enhanced.SequenceStyleGenerator.generate(SequenceStyleGenerator.java:369) 
> [hibernate-core-4.1.12.Final.jar:4.1.12.Final]
>         at 
> org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:117) 
> [hibernate-core-4.1.12.Final.jar:4.1.12.Final]
>         at 
> org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:204) 
> [hibernate-core-4.1.12.Final.jar:4.1.12.Final]
>         at 
> org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55) 
> [hibernate-core-4.1.12.Final.jar:4.1.12.Final]
>         at 
> org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:189) 
> [hibernate-core-4.1.12.Final.jar:4.1.12.Final]
>         at 
> org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49) 
> [hibernate-core-4.1.12.Final.jar:4.1.12.Final]
>         at 
> org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90) 
> [hibernate-core-4.1.12.Final.jar:4.1.12.Final]
>         at 
> org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:756) 
> [hibernate-core-4.1.12.Final.jar:4.1.12.Final]
>         at 
> org.hibernate.internal.SessionImpl.save(SessionImpl.java:748) 
> [hibernate-core-4.1.12.Final.jar:4.1.12.Final]
>         at 
> org.hibernate.internal.SessionImpl.save(SessionImpl.java:744) 
> [hibernate-core-4.1.12.Final.jar:4.1.12.Final]
>         at 
> com.evolveum.midpoint.repo.sql.SqlAuditServiceImpl.auditAttempt(SqlAuditServiceImpl.java:77) 
> [repo-sql-impl-3.0.jar:na]
>         at 
> com.evolveum.midpoint.repo.sql.SqlAuditServiceImpl.audit(SqlAuditServiceImpl.java:63) 
> [repo-sql-impl-3.0.jar:na]
>         at 
> com.evolveum.midpoint.init.AuditServiceProxy.audit(AuditServiceProxy.java:56) 
> [system-init-3.0.jar:na]
>         at 
> com.evolveum.midpoint.model.impl.lens.Clockwork.auditEvent(Clockwork.java:581) 
> [model-impl-3.0.jar:na]
>         at 
> com.evolveum.midpoint.model.impl.lens.Clockwork.audit(Clockwork.java:488) 
> [model-impl-3.0.jar:na]
>         at 
> com.evolveum.midpoint.model.impl.lens.Clockwork.processSecondary(Clockwork.java:402) 
> [model-impl-3.0.jar:na]
>         at 
> com.evolveum.midpoint.model.impl.lens.Clockwork.click(Clockwork.java:230) 
> [model-impl-3.0.jar:na]
>         at 
> com.evolveum.midpoint.model.impl.lens.Clockwork.run(Clockwork.java:156) [model-impl-3.0.jar:na] 
>
>         at 
> com.evolveum.midpoint.model.impl.controller.ModelController.executeChanges_aroundBody2(ModelController.java:455) 
> [model-impl-3.0.jar:na]
>         at 
> com.evolveum.midpoint.model.impl.controller.ModelController$AjcClosure3.run(ModelController.java:1) 
> [model-impl-3.0.jar:na]
>         at 
> org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149) 
> [aspectjrt-1.7.3.jar:na]
>         at 
> com.evolveum.midpoint.util.aspect.MidpointAspect.wrapSubsystem(MidpointAspect.java:192) 
> [util-3.0.jar:na]
>         at 
> com.evolveum.midpoint.util.aspect.MidpointAspect.ajc$inlineAccessMethod$com_evolveum_midpoint_util_aspect_MidpointAspect$com_evolveum_midpoint_util_aspect_MidpointAspect$wrapSub
> system(MidpointAspect.java:1) [util-3.0.jar:na]
>         at 
> com.evolveum.midpoint.util.aspect.MidpointAspect.processModelNdc(MidpointAspect.java:77) 
> [util-3.0.jar:na]
>         at 
> com.evolveum.midpoint.model.impl.controller.ModelController.executeChanges(ModelController.java:361) 
> [model-impl-3.0.jar:na]
>         at 
> com.evolveum.midpoint.model.impl.ModelWebService.executeChanges(ModelWebService.java:193) 
> [model-impl-3.0.jar:na]
>         at 
> com.evolveum.midpoint.model.impl.ModelWebServiceRaw.invokeAllowingFaults(ModelWebServiceRaw.java:154) 
> [model-impl-3.0.jar:na]
>         at 
> com.evolveum.midpoint.model.impl.ModelWebServiceRaw.invoke(ModelWebServiceRaw.java:96) 
> [model-impl-3.0.jar:na]
>         at 
> com.evolveum.midpoint.model.impl.ModelWebServiceRaw.invoke(ModelWebServiceRaw.java:1) 
> [model-impl-3.0.jar:na]
>         at sun.reflect.GeneratedMethodAccessor352.invoke(Unknown 
> Source) ~[na:na]
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
> ~[na:1.7.0_13]
>         at java.lang.reflect.Method.invoke(Method.java:601) 
> ~[na:1.7.0_13]
>         at 
> org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:180) 
> [cxf-api-2.7.6.jar:2.7.6]
>         at 
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96) 
> [cxf-api-2.7.6.jar:2.7.6]
>         at 
> org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.invoke(AbstractJAXWSMethodInvoker.java:178) 
> [cxf-rt-frontend-jaxws-2.7.6.jar:2.7.6]
>         at 
> org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:68) 
> [cxf-rt-frontend-jaxws-2.7.6.jar:2.7.6]
>         at 
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:75) 
> [cxf-api-2.7.6.jar:2.7.6]
>         at 
> org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:57) 
> [cxf-api-2.7.6.jar:2.7.6]
>         at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_13] 
>
>         at 
> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
> [na:1.7.0_13]
>         at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
> [na:1.7.0_13]
>         at 
> org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37) 
> [cxf-api-2.7.6.jar:2.7.6]
>         at 
> org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106) 
> [cxf-api-2.7.6.jar:2.7.6]
>         at 
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271) 
> [cxf-api-2.7.6.jar:2.7.6]
>         at 
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) 
> [cxf-api-2.7.6.jar:2.7.6]
>         at 
> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239) 
> [cxf-rt-transports-http-2.7.6.jar:2.7.6]
>         at 
> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223) 
> [cxf-rt-transports-http-2.7.6.jar:2.7.6]
>         at 
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:203) 
> [cxf-rt-transports-http-2.7.6.jar:2.7.6]
>         at 
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137) 
> [cxf-rt-transports-http-2.7.6.jar:2.7.6]
>         at 
> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:159) 
> [cxf-rt-transports-http-2.7.6.jar:2.7.6]
>         at 
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286) 
> [cxf-rt-transports-http-2.7.6.jar:2.7.6]
>         at 
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:206) 
> [cxf-rt-transports-http-2.7.6.jar:2.7.6]
>         at 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
> [servlet-api.jar:na]
>         at 
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262) 
> [cxf-rt-transports-http-2.7.6.jar:2.7.6]
>         at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
> [catalina.jar:6.0.32]
>         at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
> [catalina.jar:6.0.32]
>         at 
> org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:263) 
> [wicket-core-6.14.0.jar:6.14.0]
>         at 
> org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:201) 
> [wicket-core-6.14.0.jar:6.14.0]
>         at 
> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:282) 
> [wicket-core-6.14.0.jar:6.14.0]
>         at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
> [catalina.jar:6.0.32]
>         at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
> [catalina.jar:6.0.32]
>         at 
> org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:167) 
> [spring-security-web-3.1.0.RELEASE.jar:3.1.0.RELEASE]
>         at 
> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) 
> [spring-web-3.1.0.RELEASE.jar:3.1.0.RELEASE]
>         at 
> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) 
> [spring-web-3.1.0.RELEASE.jar:3.1.0.RELEASE]
>         at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
> [catalina.jar:6.0.32]
>         at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
> [catalina.jar:6.0.32]
>         at 
> com.evolveum.midpoint.web.util.MidPointProfilingServletFilter.doFilter(MidPointProfilingServletFilter.java:86) 
> [MidPointProfilingServletFilter.class:na]
>         at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
> [catalina.jar:6.0.32]
>         at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
> [catalina.jar:6.0.32]
>         at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
> [catalina.jar:6.0.32]
>         at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
> [catalina.jar:6.0.32]
>         at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
> [catalina.jar:6.0.32]
>         at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
> [catalina.jar:6.0.32]
>         at 
> org.apache.catalina.valves.RequestFilterValve.process(RequestFilterValve.java:269) 
> [catalina.jar:6.0.32]
>         at 
> org.apache.catalina.valves.RemoteAddrValve.invoke(RemoteAddrValve.java:81) 
> [catalina.jar:6.0.32]
>         at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
> [catalina.jar:6.0.32]
>         at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
> [catalina.jar:6.0.32]
>         at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) 
> [tomcat-coyote.jar:6.0.32]
>         at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
> [tomcat-coyote.jar:6.0.32]
>         at 
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) [tomcat-coyote.jar:6.0.32] 
>
>         at java.lang.Thread.run(Thread.java:722) [na:1.7.0_13]
>
>
> _______________________________________________
> midPoint mailing list
> midPoint at lists.evolveum.com
> http://lists.evolveum.com/mailman/listinfo/midpoint




More information about the midPoint mailing list