[
https://issues.apache.org/jira/browse/FLINK-18909?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17183720#comment-17183720
]
Jingsong Lee edited comment on FLINK-18909 at 8/25/20, 4:20 AM:
----------------------------------------------------------------
Thanks [~aljoscha] for reminding. Hi [~Liquidcoder] , SequenceGenerator can not
accept too huge range.
The {{SequenceGenerator}} and {{StatefulSequenceSource}} have the same
generator strategy. At first, they store all numbers to {{Deque<Long>
valuesToEmit}} . So if the range is to huge, there will be a OOM here... We can
have a better exception message.
I believe we can optimize it to not store all numbers, after the optimization,
it can accept Long.MAX_VALUE.
was (Author: lzljs3620320):
SequenceGenerator can not accept too huge range.
The {{SequenceGenerator}} and {{StatefulSequenceSource}} have the same
generator strategy. At first, they store all numbers to {{Deque<Long>
valuesToEmit}} . So if the range is to huge, there will be a OOM here... We can
have a better exception message.
I believe we can optimize it to not store all numbers, after the optimization,
it can accept Long.MAX_VALUE.
> SequenceGenerator doesn't work as expected
> ------------------------------------------
>
> Key: FLINK-18909
> URL: https://issues.apache.org/jira/browse/FLINK-18909
> Project: Flink
> Issue Type: Bug
> Components: API / DataStream
> Affects Versions: 1.11.1
> Reporter: Alan
> Priority: Minor
>
> When using a
> org.apache.flink.streaming.api.functions.source.datagen.SequenceGenerator
> with 0 and Long.MaxValue the following exception is rasied:
> <<snip>>
> new SequenceGenerator(0, Long.MAX_VALUE);
>
> Caused by: java.lang.IllegalArgumentExceptionCaused by:
> java.lang.IllegalArgumentException at
> org.apache.flink.util.Preconditions.checkArgument(Preconditions.java:123) at
> org.apache.flink.streaming.api.functions.source.datagen.SequenceGenerator.safeDivide(SequenceGenerator.java:110)
> at
> org.apache.flink.streaming.api.functions.source.datagen.SequenceGenerator.open(SequenceGenerator.java:83)
> at
> org.apache.flink.streaming.api.functions.source.datagen.DataGeneratorSource.initializeState(DataGeneratorSource.java:64)
>
> This is because the Long overflows. in the check:
> long totalNoOfElements = Math.abs(end - start + 1);
> Which is incorrect. - this code should use BigInteger.
>
> Using
> new SequenceGenerator(0, Long.MAX_VALUE-1);
> Still fails on the following check:
> Caused by: java.lang.IllegalArgumentExceptionCaused by:
> java.lang.IllegalArgumentException at
> org.apache.flink.util.Preconditions.checkArgument(Preconditions.java:123) at
> org.apache.flink.streaming.api.functions.source.datagen.SequenceGenerator.safeDivide(SequenceGenerator.java:111)
> at
> org.apache.flink.streaming.api.functions.source.datagen.SequenceGenerator.open(SequenceGenerator.java:83)
> at
> org.apache.flink.streaming.api.functions.source.datagen.DataGeneratorSource.initializeState(DataGeneratorSource.java:64)
>
>
>
>
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)