[ 
https://issues.apache.org/jira/browse/FLINK-33698?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

xiangyu feng updated FLINK-33698:
---------------------------------
    Description: 
The backoff time calculation in `ExponentialBackoffDelayRetryStrategy` is 
problematic due to the lack of a reset when reusing the object.

 

Current Version:
{code:java}
@Override
public long getBackoffTimeMillis(int currentAttempts) {
    if (currentAttempts <= 1) {
        // equivalent to initial delay
        return lastRetryDelay;
    }
    long backoff = Math.min((long) (lastRetryDelay * multiplier), 
maxRetryDelay);
    this.lastRetryDelay = backoff;
    return backoff;
} {code}
Fixed Version:
{code:java}
@Override
public long getBackoffTimeMillis(int currentAttempts) {
    if (currentAttempts <= 1) {
        // reset to initialDelay
        this.lastRetryDelay = initialDelay;
        return lastRetryDelay;
    }

    long backoff = Math.min((long) (lastRetryDelay * multiplier), 
maxRetryDelay);
    this.lastRetryDelay = backoff;
    return backoff;
}{code}

  was:
The backoff time calculation in `ExponentialBackoffDelayRetryStrategy` should 
consider currentAttempts. 

 

Current Version:
{code:java}
@Override
public long getBackoffTimeMillis(int currentAttempts) {
    if (currentAttempts <= 1) {
        // equivalent to initial delay
        return lastRetryDelay;
    }
    long backoff = Math.min((long) (lastRetryDelay * multiplier), 
maxRetryDelay);
    this.lastRetryDelay = backoff;
    return backoff;
} {code}
Fixed Version:
{code:java}
@Override
public long getBackoffTimeMillis(int currentAttempts) {
    if (currentAttempts <= 1) {
        // reset to initialDelay
        this.lastRetryDelay = initialDelay;
        return lastRetryDelay;
    }

    long backoff = Math.min((long) (lastRetryDelay * multiplier), 
maxRetryDelay);
    this.lastRetryDelay = backoff;
    return backoff;
}{code}


> Fix the backoff time calculation in ExponentialBackoffDelayRetryStrategy
> ------------------------------------------------------------------------
>
>                 Key: FLINK-33698
>                 URL: https://issues.apache.org/jira/browse/FLINK-33698
>             Project: Flink
>          Issue Type: Bug
>          Components: API / DataStream
>            Reporter: xiangyu feng
>            Assignee: xiangyu feng
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.19.0
>
>
> The backoff time calculation in `ExponentialBackoffDelayRetryStrategy` is 
> problematic due to the lack of a reset when reusing the object.
>  
> Current Version:
> {code:java}
> @Override
> public long getBackoffTimeMillis(int currentAttempts) {
>     if (currentAttempts <= 1) {
>         // equivalent to initial delay
>         return lastRetryDelay;
>     }
>     long backoff = Math.min((long) (lastRetryDelay * multiplier), 
> maxRetryDelay);
>     this.lastRetryDelay = backoff;
>     return backoff;
> } {code}
> Fixed Version:
> {code:java}
> @Override
> public long getBackoffTimeMillis(int currentAttempts) {
>     if (currentAttempts <= 1) {
>         // reset to initialDelay
>         this.lastRetryDelay = initialDelay;
>         return lastRetryDelay;
>     }
>     long backoff = Math.min((long) (lastRetryDelay * multiplier), 
> maxRetryDelay);
>     this.lastRetryDelay = backoff;
>     return backoff;
> }{code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to