Difference between revisions of "OptimisticLockingRetryHandler"
From DarkWiki
(Created page with "<source lang="java"> import org.springframework.dao.OptimisticLockingFailureException; import java.util.function.Supplier; public class OptimisticLockingRetryHandler { p...") |
(No difference)
|
Latest revision as of 09:41, 6 October 2017
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;
}
}