mirror of
https://github.com/google/nomulus
synced 2026-01-10 07:57:58 +00:00
Make our Clock util Serializable
It doesn't entirely make semantic sense, since the actual state of the SystemClock isn't being preserved, but it makes injection into serializable classes (e.g. mapreduces) much simpler, so it's worth doing. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=201755949
This commit is contained in:
@@ -27,8 +27,6 @@ import google.registry.model.server.Lock;
|
||||
import google.registry.util.AppEngineTimeLimiter;
|
||||
import google.registry.util.Clock;
|
||||
import google.registry.util.RequestStatusChecker;
|
||||
import google.registry.util.SystemClock;
|
||||
import java.io.Serializable;
|
||||
import java.util.HashSet;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
@@ -42,16 +40,16 @@ import org.joda.time.DateTime;
|
||||
import org.joda.time.Duration;
|
||||
|
||||
/** Implementation of {@link LockHandler} that uses the datastore lock. */
|
||||
public class LockHandlerImpl implements LockHandler, Serializable {
|
||||
public class LockHandlerImpl implements LockHandler {
|
||||
|
||||
private static final long serialVersionUID = 5162259753801400985L;
|
||||
private static final long serialVersionUID = 5746905970040002524L;
|
||||
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
|
||||
|
||||
/** Fudge factor to make sure we kill threads before a lock actually expires. */
|
||||
private static final Duration LOCK_TIMEOUT_FUDGE = Duration.standardSeconds(5);
|
||||
|
||||
private final RequestStatusChecker requestStatusChecker;
|
||||
@Nullable private transient Clock clock;
|
||||
private final Clock clock;
|
||||
|
||||
@Inject
|
||||
public LockHandlerImpl(RequestStatusChecker requestStatusChecker, Clock clock) {
|
||||
@@ -59,14 +57,6 @@ public class LockHandlerImpl implements LockHandler, Serializable {
|
||||
this.clock = clock;
|
||||
}
|
||||
|
||||
private synchronized Clock getClock() {
|
||||
// Re-set the clock on first use after de-serialization
|
||||
if (clock == null) {
|
||||
clock = new SystemClock();
|
||||
}
|
||||
return clock;
|
||||
}
|
||||
|
||||
/**
|
||||
* Acquire one or more locks and execute a Void {@link Callable}.
|
||||
*
|
||||
@@ -83,7 +73,7 @@ public class LockHandlerImpl implements LockHandler, Serializable {
|
||||
@Nullable String tld,
|
||||
Duration leaseLength,
|
||||
String... lockNames) {
|
||||
DateTime startTime = getClock().nowUtc();
|
||||
DateTime startTime = clock.nowUtc();
|
||||
String sanitizedTld = Strings.emptyToNull(tld);
|
||||
try {
|
||||
return AppEngineTimeLimiter.create()
|
||||
@@ -100,7 +90,7 @@ public class LockHandlerImpl implements LockHandler, Serializable {
|
||||
"Execution on locks '%s' for TLD '%s' timed out after %s; started at %s",
|
||||
Joiner.on(", ").join(lockNames),
|
||||
Optional.ofNullable(sanitizedTld).orElse("(null)"),
|
||||
new Duration(startTime, getClock().nowUtc()),
|
||||
new Duration(startTime, clock.nowUtc()),
|
||||
startTime),
|
||||
cause);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user