Hello,

We are using an embedded h2database into our web application.

We do 100000 inserts  (with a commit every 20000 inserts) .

This piece of software works fine :
- on a standalone test program running with sun/Oracle hotspot jvm
- on a standalone test program running with Oracle jrockt jvm
- on a tomcat server running with sun/Oracle hotspot jvm

Sadly, it doesn't work on a webLogic application server (version
10.3.3.0) running with the jrockit jvm on a Windows Server 2008 RC2.

After about 50000 inserts, H2 starts to write a HUGE amount of logs
(in the data.trace file) ; it becomes very slow and the database is
corrupted (we have to erase the files otherwise on next startup, H2
complains the files are corrupted).

Here are small part of the error logs (the same error is repeated
during 90 MBytes of logs, always with 1442 and 1357 values):
02-08 12:53:36 jdbc[2]: exception
org.h2.jdbc.JdbcSQLException: General error:
"java.lang.RuntimeException: expected pos: 1442 got: 1357"; SQL
statement:
INSERT INTO LIBELLE VALUES (?,?) [50000-147]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:
327)
        at org.h2.message.DbException.get(DbException.java:156)
        at org.h2.message.DbException.convert(DbException.java:279)
        at org.h2.table.RegularTable.addRow(RegularTable.java:143)
        at org.h2.command.dml.Insert.insertRows(Insert.java:126)
        at org.h2.command.dml.Insert.update(Insert.java:86)
        at org.h2.command.CommandContainer.update(CommandContainer.java:69)
        at org.h2.command.Command.executeUpdate(Command.java:201)
        at
org.h2.jdbc.JdbcPreparedStatement.execute(JdbcPreparedStatement.java:
181)
        at
com.itnsa.fwk.i18n.cache.I18nCache.putListLibelleInCache(I18nCache.java:
267)
        at
com.itnsa.fwk.i18n.cache.impl.I18nCacheSynchronizerServiceImpl.reloadCache(I18nCacheSynchronizerServiceImpl.java:
56)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
39)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:
310)
        at
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:
182)
        at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:
149)
        at
com.itnsa.assurance.util.PerformanceThresholdInterceptor.invoke(PerformanceThresholdInterceptor.java:
29)
        at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:
171)
        at
com.itnsa.fwk.aop.MessageSerializationInterceptor.invoke(MessageSerializationInterceptor.java:
61)
        at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:
171)
        at
com.itnsa.fwk.performance.PerformanceLogger.invoke(PerformanceLogger.java:
209)
        at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:
171)
        at
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:
106)
        at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:
171)
        at
org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:
50)
        at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:
171)
        at
org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:
50)
        at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:
171)
        at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:
204)
        at $Proxy76.reloadCache(Unknown Source)
        at
com.itnsa.assurance.application.startup.I18nCacheLoader.startup(I18nCacheLoader.java:
16)
        at
com.itnsa.fwk.application.ApplicationListener.doSteps(ApplicationListener.java:
75)
        at
com.itnsa.fwk.application.ApplicationListener.onApplicationEvent(ApplicationListener.java:
56)
        at org.springframework.context.event.SimpleApplicationEventMulticaster
$1.run(SimpleApplicationEventMulticaster.java:78)
        at
org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:
49)
        at
org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:
76)
        at
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:
275)
        at
org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:
737)
        at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:
384)
        at
org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:
255)
        at
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:
199)
        at
org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:
45)
        at weblogic.servlet.internal.EventsManager
$FireContextListenerAction.run(EventsManager.java:481)
        at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:
321)
        at
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
121)
        at
weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:
181)
        at
weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:
1863)
        at
weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:
3126)
        at
weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:
1512)
        at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:
486)
        at weblogic.application.internal.flow.ModuleStateDriver
$3.next(ModuleStateDriver.java:425)
        at
weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:
41)
        at
weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:
119)
        at
weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:
200)
        at
weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:
247)
        at weblogic.application.internal.flow.ModuleStateDriver
$3.next(ModuleStateDriver.java:425)
        at
weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:
41)
        at
weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:
119)
        at
weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:
27)
        at weblogic.application.internal.BaseDeployment
$2.next(BaseDeployment.java:1267)
        at
weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:
41)
        at
weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:
409)
        at
weblogic.application.internal.EarDeployment.activate(EarDeployment.java:
58)
        at
weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:
161)
        at
weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:
79)
        at
weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:
184)
        at
weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:
361)
        at weblogic.management.deploy.internal.DeploymentAdapter
$1.doActivate(DeploymentAdapter.java:51)
        at
weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:
200)
        at weblogic.management.deploy.internal.AppTransition
$2.transitionApp(AppTransition.java:30)
        at
weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:
240)
        at
weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:
169)
        at
weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:
123)
        at
weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:
180)
        at
weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:
96)
        at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
Caused by: java.lang.RuntimeException: expected pos: 1442 got: 1357
        at org.h2.message.DbException.throwInternalError(DbException.java:
226)
        at org.h2.index.PageDataNode.writeData(PageDataNode.java:346)
        at org.h2.index.PageDataNode.write(PageDataNode.java:315)
        at org.h2.store.PageStore.writeBack(PageStore.java:983)
        at org.h2.util.CacheLRU.removeOld(CacheLRU.java:183)
        at org.h2.util.CacheLRU.removeOldIfRequired(CacheLRU.java:124)
        at org.h2.util.CacheLRU.put(CacheLRU.java:102)
        at org.h2.util.CacheLRU.update(CacheLRU.java:108)
        at org.h2.store.PageStore.update(PageStore.java:1036)
        at org.h2.index.PageDataLeaf.addRowTry(PageDataLeaf.java:204)
        at org.h2.index.PageDataLeaf.split(PageDataLeaf.java:367)
        at org.h2.index.PageDataNode.addRowTry(PageDataNode.java:137)
        at org.h2.index.PageDataNode.addRowTry(PageDataNode.java:129)
        at org.h2.index.PageDataIndex.addTry(PageDataIndex.java:161)
        at org.h2.index.PageDataIndex.add(PageDataIndex.java:126)
        at org.h2.table.RegularTable.addRow(RegularTable.java:125)
        ... 76 more

What can we do to solve this problem ?

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/h2-database?hl=en.

Reply via email to