OptimisticLockingRetryHandler
From DarkWiki
import org.springframework.dao.OptimisticLockingFailureException;
import java.util.function.Supplier;
public class OptimisticLockingRetryHandler {
private static final Logger LOG = LoggerFactory.getLogger(OptimisticLockingRetryHandler.class);
public static void withRetry(Runnable execution) {
int maxTry = 3;
for (int retryCount = 0; retryCount < maxTry; retryCount++) {
try {
execution.run();
return;
} catch (OptimisticLockingFailureException ex) {
LOG.error("TRY {} Optimistic locking exception", retryCount, ex);
if (retryCount == maxTry - 1) {
throw ex;
}
}
}
}
public static <R> R withRetry(Supplier<R> execution) {
int maxTry = 3;
for (int retryCount = 0; retryCount < maxTry; retryCount++) {
try {
return execution.get();
} catch (OptimisticLockingFailureException ex) {
LOG.error("TRY {} Optimistic locking exception", retryCount, ex);
if (retryCount == maxTry - 1) {
throw ex;
}
}
}
return null;
}
}