Skip to content

In MongoDb4 NoSql appender can't specify a capped collection size bigger than 2GB #1747

Closed
@jfont-teg

Description

@jfont-teg

Description

In MongoDb4 NoSql appender can't specify a capped collection size bigger than 2GB, due to the fact that the property is declared as a 32bits integer and is interpreted as bytes, so the maximum permissible value is 2^31 bytes = 2GB.

MongoDB has no known size limit in capped collections, I just tested it and I have been able to create a capped collection at 100GB without problem.

Configuration

Version: 2.20.0

Logs

The error that appears:

WARN StatusConsoleListener Error while converting string [26843545600] to type [int]. Using default value [null].
 java.lang.NumberFormatException: For input string: "26843545600"
	at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
	at java.base/java.lang.Integer.parseInt(Integer.java:660)
	at java.base/java.lang.Integer.valueOf(Integer.java:991)
	at org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$IntegerConverter.convert(TypeConverters.java:278)
	at org.apache.logging.log4j.core.config.plugins.convert.TypeConverters$IntegerConverter.convert(TypeConverters.java:274)
	at org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.convert(TypeConverters.java:420)
	at org.apache.logging.log4j.core.config.plugins.visitors.AbstractPluginVisitor.convert(AbstractPluginVisitor.java:151)
	at org.apache.logging.log4j.core.config.plugins.visitors.PluginBuilderAttributeVisitor.visit(PluginBuilderAttributeVisitor.java:49)
	at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.injectFields(PluginBuilder.java:187)
	at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:123)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1138)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1063)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1055)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1055)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:664)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:258)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:304)
	at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:621)
	at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:694)
	at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:711)
	at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:253)
	at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:155)
	at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
	at org.apache.logging.log4j.LogManager.getContext(LogManager.java:196)
	at org.apache.logging.log4j.kotlin.LoggingFactoryKt.loggerDelegateOf(LoggingFactory.kt:64)
	at org.apache.logging.log4j.kotlin.LoggingFactoryKt.loggerOf(LoggingFactory.kt:68)

Reproduction

<Configuration status="WARN">
    <Appenders>
        <NoSql name="MongoDb" ignoreExceptions="false">
            <!--
                Collection size = 26.843.545.600 bytes = 25GB d'espai sense comprimir
                Espai ocupat real (comprimit) al voltant d'un 10-20% = 2.5-5GB
            -->
            <MongoDb4 connection="mongodb://localhost:27017/Logs.Synchro" capped="true" collectionSize="26843545600"/>
        </NoSql>
    </Appenders>
</Configuration>

Known workaround

Creating the collection through other means and configuring its capped size seems to work. Then you need to leave out this property from the configuration file.

Metadata

Metadata

Assignees

Labels

bugIncorrect, unexpected, or unintended behavior of existing code

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions