Hi all,

My application is stalling when using MVCC. I'm using the 1.3.173 version 
embedded in another application.

I was able to reproduce the exact same behaviour with 1.3.164 but analysing 
the thread dump using that version it seemed to me that it was a deadlock. 
With the most recent version, it doesn't look like it. You can find a 
thread dump at the end of the post.

I'm just trying to understand if this might be a bug or not in order to 
open up a bug.

The statement is being submitted with autocommit turned off.

*The table in question has the following schema:*

CREATE TABLE "ABC_APP_FIELD" ("CREATEDAT" BIGINT, "CREATEDBY" INTEGER, 
"UPDATEDAT" BIGINT, "UPDATEDBY" INTEGER, "APP_ID" INTEGER NOT NULL, 
"SFL_ID" INTEGER AUTO_INCREMENT NOT NULL, "SFL_TYPE" VARCHAR(256), "SCH_ID" 
INTEGER, "SFL_NAME" VARCHAR(256) NOT NULL, "SFL_DESC" VARCHAR(256), 
"SFL_IS_DIMENSION" BOOLEAN, "SFL_IS_TIMESTAMP" BOOLEAN, "FLD_ORDER" INTEGER 
NOT NULL, "FLD_PARENT" INTEGER, "FLD_NULLABLE" BOOLEAN DEFAULT TRUE, 
"FLD_STORE" BOOLEAN DEFAULT TRUE, "DIM_ID" INTEGER)

*The query being blocked is the following:*

UPDATE "ABC_APP_FIELD" SET "DIM_ID" = 34 WHERE ("SFL_ID") IN (216, 323, 
329) AND "APP_ID" = 3 AND "SFL_IS_DIMENSION" = TRUE

Anyone might know what can be wrong with this?

Thanks in advance,
Best regards,

Rui

--

*The thread dump:*

"jetty-246" prio=10 tid=0x00007fb274198800 nid=0x6836 runnable 
[0x00007fb1f9ad5000]
   java.lang.Thread.State: RUNNABLE
at org.h2.index.TreeCursor.next(TreeCursor.java:82)
at org.h2.index.TreeCursor.next(TreeCursor.java:50)
at org.h2.index.MultiVersionIndex.removeIfExists(MultiVersionIndex.java:165)
at org.h2.index.MultiVersionIndex.add(MultiVersionIndex.java:53)
- locked <0x00000000e2dc40d0> (a org.h2.engine.Database)
at org.h2.table.RegularTable.addRow(RegularTable.java:125)
at org.h2.command.dml.Insert.insertRows(Insert.java:127)
at org.h2.command.dml.Insert.update(Insert.java:86)
at org.h2.command.CommandContainer.update(CommandContainer.java:79)
at org.h2.command.Command.executeUpdate(Command.java:235)
- locked <0x00000000e2dc40d0> (a org.h2.engine.Database)
at 
org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:154)
- locked <0x00000000e69e53c0> (a org.h2.engine.Session)
at 
org.h2.jdbc.JdbcPreparedStatement.executeBatch(JdbcPreparedStatement.java:1152)
at 
com.abc.commons.sql.abstraction.engine.DatabaseEngineImpl.flush(DatabaseEngineImpl.java:596)
- locked <0x00000000e635f740> (a 
com.abc.commons.sql.abstraction.engine.impl.H2Engine)
at 
com.abc.def.service.apps.manager.AppDimensionManagerImpl$AddMappingsAction.apply(AppDimensionManagerImpl.java:377)
at 
com.abc.def.service.apps.manager.AppDimensionManagerImpl$1.access(AppDimensionManagerImpl.java:94)
at 
com.abc.def.service.apps.manager.AppDimensionManagerImpl$1.access(AppDimensionManagerImpl.java:71)
at com.abc.def.web.api.commons.db.AbstractDbFun.call(AbstractDbFun.java:27)
at 
com.abc.def.service.apps.manager.AppDimensionManagerImpl.doCreate(AppDimensionManagerImpl.java:71)
at 
com.abc.def.service.apps.manager.AppDimensionManagerImpl$$EnhancerByGuice$$df4a5902.CGLIB$doCreate$1(<generated>)
at 
com.abc.def.service.apps.manager.AppDimensionManagerImpl$$EnhancerByGuice$$df4a5902$$FastClassByGuice$$2f361d07.invoke(<generated>)
at 
com.google.inject.internal.cglib.proxy.$MethodProxy.invokeSuper(MethodProxy.java:228)
at 
com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72)
at 
com.abc.def.service.security.guice.EnforcePermissionsInterceptor.invoke(EnforcePermissionsInterceptor.java:53)
at 
com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72)
at 
com.google.inject.internal.InterceptorStackCallback.intercept(InterceptorStackCallback.java:52)
at 
com.abc.def.service.apps.manager.AppDimensionManagerImpl$$EnhancerByGuice$$df4a5902.doCreate(<generated>)
at 
com.abc.def.service.apps.manager.AppDimensionManagerImpl.doCreate(AppDimensionManagerImpl.java:62)
at 
com.abc.def.service.apps.manager.CachingModelManager.create(CachingModelManager.java:90)
at 
com.abc.def.service.apps.manager.OwnableModelManager.create(OwnableModelManager.java:59)
at 
com.abc.def.service.apps.manager.OwnableModelManager.create(OwnableModelManager.java:49)
at 
com.abc.def.service.apps.manager.AppAdminImpl$7.access(AppAdminImpl.java:1571)
at 
com.abc.def.service.apps.manager.AppAdminImpl$7.access(AppAdminImpl.java:1532)
at com.abc.def.web.api.commons.db.AbstractDbFun.call(AbstractDbFun.java:27)
at 
com.abc.def.service.apps.manager.AppAdminImpl.importAppModel(AppAdminImpl.java:1532)
at 
com.abc.def.service.apps.manager.AppAdminImpl$6.access(AppAdminImpl.java:1502)
at 
com.abc.def.service.apps.manager.AppAdminImpl$6.access(AppAdminImpl.java:1491)
at com.abc.def.web.api.commons.db.AbstractDbFun.call(AbstractDbFun.java:27)
at 
com.abc.def.service.apps.manager.AppAdminImpl.importApp(AppAdminImpl.java:1491)
at 
com.abc.def.web.api.resources.app.AppResource.importApp(AppResource.java:157)
at 
com.abc.def.web.api.resources.app.AppResource$$EnhancerByGuice$$77d4240d.CGLIB$importApp$1(<generated>)
at 
com.abc.def.web.api.resources.app.AppResource$$EnhancerByGuice$$77d4240d$$FastClassByGuice$$cbccfe49.invoke(<generated>)
at 
com.google.inject.internal.cglib.proxy.$MethodProxy.invokeSuper(MethodProxy.java:228)
at 
com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72)
at 
com.abc.def.web.api.commons.exceptions.TracingInterceptor.invoke(TracingInterceptor.java:52)
at 
com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72)
at 
com.google.inject.internal.InterceptorStackCallback.intercept(InterceptorStackCallback.java:52)
at 
com.abc.def.web.api.resources.app.AppResource$$EnhancerByGuice$$77d4240d.importApp(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at 
com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
at 
com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)
at 
com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
at 
com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
at 
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
at 
com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
at 
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
at 
com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
at 
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1511)
at 
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1442)
at 
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391)
at 
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381)
at 
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
at 
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
at 
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at 
com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)
at 
com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178)
at 
com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
at 
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62)
at 
com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118)
at com.google.inject.servlet.AppGuiceFilter.doFilter(AppGuiceFilter.java:47)
at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
at 
org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)
at 
org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
at 
org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
at 
org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at 
org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
at 
org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
at 
org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
at 
org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at 
org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
at 
org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
at 
org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
at 
org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
at 
org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
at 
org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
at 
org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
at 
org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1486)
at 
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:503)
at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:138)
at 
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:540)
at 
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:213)
at 
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1094)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:432)
at 
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:175)
at 
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1028)
at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:136)
at 
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:258)
at 
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)
at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.Server.handle(Server.java:445)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:267)
at 
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:224)
at 
org.eclipse.jetty.io.AbstractConnection$ReadCallback.run(AbstractConnection.java:358)
at 
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:601)
at 
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:532)
at java.lang.Thread.run(Thread.java:724)

   Locked ownable synchronizers:
- None



"H2 Log Writer def" daemon prio=10 tid=0x00007fb208053800 nid=0x67c7 in 
Object.wait() [0x00007fb2333f2000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at org.h2.store.WriterThread.run(WriterThread.java:105)
- locked <0x00000000e2f5bf80> (a org.h2.store.WriterThread)
at java.lang.Thread.run(Thread.java:724)

   Locked ownable synchronizers:
- None


"H2 TCP Server (tcp://127.0.1.1:32902)" daemon prio=10 
tid=0x00007fb208052000 nid=0x67c5 runnable [0x00007fb2334f3000]
   java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:398)
at java.net.ServerSocket.implAccept(ServerSocket.java:530)
at java.net.ServerSocket.accept(ServerSocket.java:498)
at org.h2.server.TcpServer.listen(TcpServer.java:244)
at org.h2.tools.Server.run(Server.java:549)
at java.lang.Thread.run(Thread.java:724)

   Locked ownable synchronizers:
- None

"H2 File Lock Watchdog def.lock.db" daemon prio=10 tid=0x00007fb208051000 
nid=0x67c4 waiting on condition [0x00007fb2336f5000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at org.h2.store.FileLock.run(FileLock.java:493)
at java.lang.Thread.run(Thread.java:724)

   Locked ownable synchronizers:
- None

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to h2-database+unsubscr...@googlegroups.com.
To post to this group, send email to h2-database@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to