Skip to content

StreamReadOptions toString method cause StackOverflowError due to endless loop [DATAREDIS-1210] #1734

Closed
@spring-projects-issues

Description

@spring-projects-issues

zkz2004 opened DATAREDIS-1210 and commented

hi,

 

the checked 2.4.0-M1 code and  newest code in master branch of spring-data-redis

StreamReadOptions toString method is as below

 

@Override
public String toString() {
   return "StreamReadOptions{" + "block=" + block + ", count=" + count + ", noack=" + noack + ", autoAcknowledge="
         + autoAcknowledge() + ", blocking=" + isBlocking() + '}';
}


public StreamReadOptions autoAcknowledge() {
   return new StreamReadOptions(block, count, true);
}

 

as autoAcknowledge() will return  StreamReadOptions, this cause StringBuilder append be called infinitely, which cause StackOverflowError.

 

Exception in thread "main" java.lang.StackOverflowErrorException in thread "main" java.lang.StackOverflowError at java.base/java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:228) at java.base/java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:593) at java.base/java.lang.StringBuilder.append(StringBuilder.java:173) at org.springframework.data.redis.connection.stream.StreamReadOptions.toString(StreamReadOptions.java:127)

 

 


Affects: 2.4 M2 (2020.0.0)

Referenced from: pull request #557

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions