Skip to content

Kinesis last checkpoint and shard iterator are Strings, but are parsed as BigIntegers and fail with NumberFormatException #238

@fran-jagic-infinum

Description

@fran-jagic-infinum

This issue is present in version 3.0.3, the error was not occurring in 2.5.2.

When processing a Kinesis record throws an exception,
the last checkpoint and shard iterator are both Strings but are assumed to be numeric. This causes an error when converting them to BigInteger, and masks the root exception which is never logged.

Stack trace:

Exception in thread "<name>-kinesis-consumer-76843" java.lang.NumberFormatException: For input string: "AAAAAA"
at java.base/java.lang.NumberFormatException.forInputString(Unknown Source)
at java.base/java.lang.Integer.parseInt(Unknown Source)
at java.base/java.math.BigInteger.<init>(Unknown Source)
at java.base/java.math.BigInteger.<init>(Unknown Source)
at org.springframework.integration.aws.inbound.kinesis.KinesisMessageDrivenChannelAdapter$ShardConsumer.rewindIteratorOnError(KinesisMessageDrivenChannelAdapter.java:1161)
at org.springframework.integration.aws.inbound.kinesis.KinesisMessageDrivenChannelAdapter$ShardConsumer.lambda$processTask$8(KinesisMessageDrivenChannelAdapter.java:1098)

and

Exception in thread "<name>-kinesis-consumer-90642" java.lang.NumberFormatException: Illegal embedded sign character
at java.base/java.math.BigInteger.<init>(Unknown Source)
at java.base/java.math.BigInteger.<init>(Unknown Source)
at org.springframework.integration.aws.inbound.kinesis.KinesisMessageDrivenChannelAdapter$ShardConsumer.rewindIteratorOnError(KinesisMessageDrivenChannelAdapter.java:1161)
at org.springframework.integration.aws.inbound.kinesis.KinesisMessageDrivenChannelAdapter$ShardConsumer.lambda$processTask$8(KinesisMessageDrivenChannelAdapter.java:1098)

Problem is in KinesisMessageDrivenChannelAdapter:1161

else if (lastCheckpoint == null
        || new BigInteger(lastCheckpoint).compareTo(new BigInteger(this.shardIterator)) < 0) {

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions