mirror of
https://github.com/google/nomulus
synced 2026-08-01 12:56:06 +00:00
Fail permamently in re-save entity action when entity doesn't exist (#2492)
Our logs are getting gummed up with an indefinitely failing and retrying task to re-save a prober domain that doesn't exist (likely because it was hard-deleted by delete prober data action), so this makes the re-save action resilient to that failure case so that it stops assuming every enqueued re-save actually corresponds to an entity that exists, thus allowing it to fail permanently if the entity doesn't exist. Failing permanently is the right thing to do as if the entity doesn't exist now there's no reason to think it will in the future, plus all re-saves are optimistic rather than guaranteed anyway. This should fix http://b/350530720
This commit is contained in:
@@ -29,6 +29,7 @@ import google.registry.request.Action.Method;
|
||||
import google.registry.request.Parameter;
|
||||
import google.registry.request.Response;
|
||||
import google.registry.request.auth.Auth;
|
||||
import java.util.Optional;
|
||||
import javax.inject.Inject;
|
||||
import org.joda.time.DateTime;
|
||||
|
||||
@@ -74,8 +75,15 @@ public class ResaveEntityAction implements Runnable {
|
||||
"Re-saving entity %s which was enqueued at %s.", resourceKey, requestedTime);
|
||||
tm().transact(
|
||||
() -> {
|
||||
EppResource entity = tm().loadByKey(VKey.createEppVKeyFromString(resourceKey));
|
||||
tm().put(entity.cloneProjectedAtTime(tm().getTransactionTime()));
|
||||
Optional<EppResource> entity =
|
||||
tm().loadByKeyIfPresent(VKey.createEppVKeyFromString(resourceKey));
|
||||
if (entity.isEmpty()) {
|
||||
logger.atSevere().log(
|
||||
"Could not re-save entity %s because it does not exist; failing permanently.",
|
||||
resourceKey);
|
||||
return;
|
||||
}
|
||||
tm().put(entity.get().cloneProjectedAtTime(tm().getTransactionTime()));
|
||||
if (!resaveTimes.isEmpty()) {
|
||||
asyncTaskEnqueuer.enqueueAsyncResave(
|
||||
VKey.createEppVKeyFromString(resourceKey), requestedTime, resaveTimes);
|
||||
|
||||
Reference in New Issue
Block a user