[
https://issues.apache.org/jira/browse/GERONIMO-3930?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12580215#action_12580215
]
Kevan Miller commented on GERONIMO-3930:
----------------------------------------
I suspect that we're allowing the transaction log file to become too large. See
this HOWL bug report for a bit more information --
http://forge.objectweb.org/tracker/index.php?func=detail&aid=306425&group_id=92&atid=100092
The default HOWL configuration is defined in the following HOWLTransactionLog
GBean in
~/geronimo/server/branches/2.1/plugins/connector/transaction/src/main/plan/plan.xml:
<gbean name="HOWLTransactionLog"
class="org.apache.geronimo.transaction.log.HOWLLogGBean">
<attribute
name="bufferClassName">org.objectweb.howl.log.BlockLogBuffer</attribute>
<attribute name="bufferSizeKBytes">32</attribute>
<attribute name="checksumEnabled">true</attribute>
<attribute name="adler32Checksum">true</attribute>
<attribute name="flushSleepTimeMilliseconds">50</attribute>
<attribute name="logFileDir">var/txlog</attribute>
<attribute name="logFileExt">log</attribute>
<attribute name="logFileName">howl</attribute>
<attribute name="maxBlocksPerFile">-1</attribute>
<attribute name="maxBuffers">0</attribute>
<attribute name="maxLogFiles">2</attribute>
<attribute name="minBuffers">4</attribute>
<attribute name="threadsWaitingForceThreshold">-1</attribute>
<reference name="XidFactory">
<name>XidFactory</name>
</reference>
<reference name="ServerInfo">
<name>ServerInfo</name>
</reference>
</gbean>
The maxBlocksPerFile setting is the cause of this problem, I suspect.
Configuring to a more reasonable value (i.e. 65534 with a buffer size of 32k),
should keep the logfile size below Integer.MAX_VALUE. Note that you can't
dynamically change this setting. HOWL won't let the server start, if it detects
that the current maxBlocksPerFile doesn't match the old setting in the howl log
files. You'll have to delete the old howl log files.
Adding the following to your config.xml will override the default
maxBlocksPerFile setting:
<module name="org.apache.geronimo.configs/transaction/2.1/car">
<gbean name="HOWLTransactionLog">
<attribute name="maxBlocksPerFile">65534</attribute>
</gbean>
</module>
I'm going to wait to hear that this fixes the problem, before changing our
default behavior.
> IllegalArgumentException reading Transaction Log
> ------------------------------------------------
>
> Key: GERONIMO-3930
> URL: https://issues.apache.org/jira/browse/GERONIMO-3930
> Project: Geronimo
> Issue Type: Bug
> Security Level: public(Regular issues)
> Affects Versions: 2.0.x, 2.1, 2.1.1, 2.2
> Reporter: Kevan Miller
> Priority: Critical
> Fix For: 2.0.x, 2.1.1, 2.2
>
>
> Beniamin has reported the following problem on [EMAIL PROTECTED]
> After processing 20k request to my webservice whose are translated to ~120k
> XA transactions (postgres + jms) Geronimo hangs up and does not respond on
> requests via HTTP, request to JMS engine (from HermesJMS) and ignores tries
> to shutdown server.
> I stopped Geronimo with kill -9 and tried to start it again and got
> exception:
> Module 11/69 org.apache.geronimo.configs/activemq-ra/2.1-SNAPSHOT/car
> 10:22:15,325 ERROR [GBeanInstanceState] Error while starting; GBean is now in
> the FAILED state:
> abstractName="org.apache.geronimo.configs/transaction/2.1-SNAPSHOT/car?ServiceModule=org.apache.geronimo.configs/transaction/2.1-SNAPSHOT/car,j2eeType=TransactionLog,name=HOWLTransactionLog"
> java.lang.IllegalArgumentException: Negative position
> at sun.nio.ch.FileChannelImpl.read(FileChannelImpl.java:613)
> at org.objectweb.howl.log.BlockLogBuffer.read(BlockLogBuffer.java:412)
> at org.objectweb.howl.log.LogFileManager.read(LogFileManager.java:641)
> at
> org.objectweb.howl.log.LogBufferManager.replay(LogBufferManager.java:869)
> at org.objectweb.howl.log.Logger.replay(Logger.java:396)
> at org.objectweb.howl.log.xa.XALogger.open(XALogger.java:897)
> at
> org.apache.geronimo.transaction.log.HOWLLog.doStart(HOWLLog.java:224)
> at
> org.apache.geronimo.gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:996)
> at
> org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:268)
> at
> org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:102)
> at
> org.apache.geronimo.gbean.runtime.GBeanInstance.start(GBeanInstance.java:539)
> at
> org.apache.geronimo.gbean.runtime.GBeanDependency.attemptFullStart(GBeanDependency.java:111)
> at
> org.apache.geronimo.gbean.runtime.GBeanDependency.addTarget(GBeanDependency.java:146)
> at
> org.apache.geronimo.gbean.runtime.GBeanDependency$1.running(GBeanDependency.java:120)
> at
> org.apache.geronimo.kernel.basic.BasicLifecycleMonitor.fireRunningEvent(BasicLifecycleMonitor.java:176)
> at
> org.apache.geronimo.kernel.basic.BasicLifecycleMonitor.access$300(BasicLifecycleMonitor.java:44)
> at
> org.apache.geronimo.kernel.basic.BasicLifecycleMonitor$RawLifecycleBroadcaster.fireRunningEvent(BasicLifecycleMonitor.java:254)
> at
> org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:294)
> at
> org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:102)
> at
> org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java:124)
> at
> org.apache.geronimo.gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:553)
> at
> org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:379)
> at
> org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:448)
> at
> org.apache.geronimo.kernel.config.KernelConfigurationManager.start(KernelConfigurationManager.java:187)
> at
> org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:534)
> 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.apache.geronimo.gbean.runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java:34)
> at
> org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:124)
> at
> org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:830)
> at
> org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57)
> at
> org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35)
> at
> org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96)
> at
> org.apache.geronimo.gbean.GBeanLifecycle$$EnhancerByCGLIB$$5ebee84a.startConfiguration(<generated>)
> at
> org.apache.geronimo.system.main.EmbeddedDaemon.doStartup(EmbeddedDaemon.java:156)
> at
> org.apache.geronimo.system.main.EmbeddedDaemon.execute(EmbeddedDaemon.java:78)
> at
> org.apache.geronimo.kernel.util.MainConfigurationBootstrapper.main(MainConfigurationBootstrapper.java:45)
> at org.apache.geronimo.cli.AbstractCLI.executeMain(AbstractCLI.java:67)
> at org.apache.geronimo.cli.daemon.DaemonCLI.main(DaemonCLI.java:30)
> Server Startup failed
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.