You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by "Kevan Miller (JIRA)" <ji...@apache.org> on 2008/03/19 03:30:24 UTC

[jira] Commented: (GERONIMO-3930) IllegalArgumentException reading Transaction Log

    [ 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 user@.
> 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.