Home > Software design >  Intellij - Spring Retry @Recover method marked as unused
Intellij - Spring Retry @Recover method marked as unused

Time:07-15

When using Spring Retry @Recover method (which works ok) IntelliJ always marking method as unused and suggest to safe delete

@Recover
public void recover(RetryableException e, String param1) {
    //recover
}
@Retryable(include = RetryableException.class, maxAttempts = 2)
public void retryable(String param1) {
    //execute
    throw new RetryableException();
}

Method 'recover(com.gth.common.exceptions.RetryableException, java.lang.String)' is never used

How can it be avoided? how can IntelliJ be aware of the recover method usage?

  • I don't want IntelliJ to stop warn about Unused declaration, only the false positive warnings

CodePudding user response:

Method declarations looks ok but as you haven't shared any further details, it is mostly because you are not throwing RetryableException from your retryable method.

To invoke recovery after retries, your retry must throw type of exception which you have defined as recover method's argument. Please check about that , if that is not case, please share some more details.

Edit:

Spring's recovery method gets called internally after retry & hence after scanning code, intellij didn't find any reference where your recover is getting called.

This is just warning from intellij & don't pose any issue. You can disable this behaviour from Preferences > Editor > Inspections > Unused Declaration >Java > Unused declaration .

Other option is to use @SuppressWarnings("unused") above your recover.

  • Related