diff --git a/core/src/main/java/google/registry/model/server/Lock.java b/core/src/main/java/google/registry/model/server/Lock.java
index ea1874792..2894512fb 100644
--- a/core/src/main/java/google/registry/model/server/Lock.java
+++ b/core/src/main/java/google/registry/model/server/Lock.java
@@ -41,8 +41,8 @@ import org.joda.time.Duration;
/**
* A lock on some shared resource.
*
- *
Locks are either specific to a tld or global to the entire system, in which case a tld of
- * null is used.
+ *
Locks are either specific to a tld or global to the entire system, in which case a tld of null
+ * is used.
*
*
This is the "barebone" lock implementation, that requires manual locking and unlocking. For
* safe calls that automatically lock and unlock, see LockHandler.
@@ -201,8 +201,12 @@ public class Lock extends ImmutableObject implements Serializable {
jpaTm()
.transact(
() -> {
- Optional cloudSqlLockOptional =
- LockDao.load(resourceName, tld);
+ Optional cloudSqlLockOptional;
+ if (tld == null) {
+ cloudSqlLockOptional = LockDao.load(resourceName);
+ } else {
+ cloudSqlLockOptional = LockDao.load(resourceName, tld);
+ }
LockDao.compare(Optional.ofNullable(lock), cloudSqlLockOptional);
});
} catch (Exception e) {
@@ -238,13 +242,23 @@ public class Lock extends ImmutableObject implements Serializable {
jpaTm()
.transact(
() -> {
- google.registry.schema.server.Lock cloudSqlLock =
- google.registry.schema.server.Lock.create(
- resourceName,
- Optional.ofNullable(tld).orElse("GLOBAL"),
- requestStatusChecker.getLogId(),
- now,
- leaseLength);
+ google.registry.schema.server.Lock cloudSqlLock;
+ if (tld == null) {
+ cloudSqlLock =
+ google.registry.schema.server.Lock.createGlobal(
+ resourceName,
+ requestStatusChecker.getLogId(),
+ now,
+ leaseLength);
+ } else {
+ cloudSqlLock =
+ google.registry.schema.server.Lock.create(
+ resourceName,
+ tld,
+ requestStatusChecker.getLogId(),
+ now,
+ leaseLength);
+ }
LockDao.save(cloudSqlLock);
});
} catch (Exception e) {
@@ -274,8 +288,12 @@ public class Lock extends ImmutableObject implements Serializable {
jpaTm()
.transact(
() -> {
- Optional cloudSqlLockOptional =
- LockDao.load(resourceName, tld);
+ Optional cloudSqlLockOptional;
+ if (tld == null) {
+ cloudSqlLockOptional = LockDao.load(resourceName);
+ } else {
+ cloudSqlLockOptional = LockDao.load(resourceName, tld);
+ }
LockDao.compare(Optional.ofNullable(loadedLock), cloudSqlLockOptional);
});
} catch (Exception e) {
@@ -292,9 +310,13 @@ public class Lock extends ImmutableObject implements Serializable {
try {
jpaTm()
.transact(
- () ->
- LockDao.delete(
- resourceName, Optional.ofNullable(tld).orElse("GLOBAL")));
+ () -> {
+ if (tld == null) {
+ LockDao.delete(resourceName);
+ } else {
+ LockDao.delete(resourceName, tld);
+ }
+ });
} catch (Exception e) {
logger.atSevere().withCause(e).log(
"Error deleting lock from Cloud SQL: %s", loadedLock);