Guido Grune created ARIES-2195:
----------------------------------
Summary: OutOfMemoryError when configure history storage with open
range policy
Key: ARIES-2195
URL: https://issues.apache.org/jira/browse/ARIES-2195
Project: Aries
Issue Type: Bug
Components: Typed Event
Affects Versions: typedevent-0.0.2
Environment: Test to reproduce the error:
{code:java}
package org.apache.aries.typedevent.bus.impl;
import java.util.Collections;
import org.junit.jupiter.api.Test;
import org.osgi.service.typedevent.monitor.RangePolicy;
class TypedEventMonitorImplTest {
@Test
void testConfigureHistoryStorage() {
TypedEventMonitorImpl monitor = new
TypedEventMonitorImpl(Collections.emptyMap());
monitor.configureHistoryStorage("a/b/c",
RangePolicy.unlimited());
monitor.configureHistoryStorage("a/b/c",
RangePolicy.atLeast(0));
monitor.configureHistoryStorage("a/b/c",
RangePolicy.range(0,Integer.MAX_VALUE));
monitor.configureHistoryStorage("a/b/c",
RangePolicy.atLeast(10));
// fails: monitor.configureHistoryStorage("a/b/c",
RangePolicy.range(1,Integer.MAX_VALUE));
}
}
{code}
Reporter: Guido Grune
Configuring the history storage on the TypedEventMonitorImpl with a RangePolice
that has an minimum > 0 and without maximum (Integer.MAX_VALUE) results in an
OutOfMemoryError as he tries to create an array with Integer.MAX_VALUE size.
{code:java}
java.lang.OutOfMemoryError: Requested array size exceeds VM limit
at java.base/java.util.ArrayDeque.<init>(ArrayDeque.java:194)
at
org.apache.aries.typedevent.bus.impl.TopicHistory.<init>(TopicHistory.java:37)
at
org.apache.aries.typedevent.bus.impl.TypedEventMonitorImpl.updateRestrictedHistory(TypedEventMonitorImpl.java:373)
at
org.apache.aries.typedevent.bus.impl.TypedEventMonitorImpl.configureHistoryStorage(TypedEventMonitorImpl.java:362)
at
org.apache.aries.typedevent.bus.impl.TypedEventMonitorImplTest.testConfigureHistoryStorage(TypedEventMonitorImplTest.java:36){code}
Some discussions about the array with Interger.MAX_VALUE topic:
[https://stackoverflow.com/questions/3038392/do-java-arrays-have-a-maximum-size]
[https://stackoverflow.com/questions/31382531/why-i-cant-create-an-array-with-large-size]
--
This message was sent by Atlassian Jira
(v8.20.10#820010)