mirror of
https://github.com/google/nomulus.git
synced 2025-04-30 12:07:51 +02:00
Fix IllegalArgumentException (#536)
* Fix IllegalArgumentException * Add more information about global locks * Add null checks
This commit is contained in:
parent
3df40d371e
commit
ae9c0fdd7d
1 changed files with 38 additions and 16 deletions
|
@ -41,8 +41,8 @@ import org.joda.time.Duration;
|
||||||
/**
|
/**
|
||||||
* A lock on some shared resource.
|
* A lock on some shared resource.
|
||||||
*
|
*
|
||||||
* <p>Locks are either specific to a tld or global to the entire system, in which case a tld of
|
* <p>Locks are either specific to a tld or global to the entire system, in which case a tld of null
|
||||||
* null is used.
|
* is used.
|
||||||
*
|
*
|
||||||
* <p>This is the "barebone" lock implementation, that requires manual locking and unlocking. For
|
* <p>This is the "barebone" lock implementation, that requires manual locking and unlocking. For
|
||||||
* safe calls that automatically lock and unlock, see LockHandler.
|
* safe calls that automatically lock and unlock, see LockHandler.
|
||||||
|
@ -201,8 +201,12 @@ public class Lock extends ImmutableObject implements Serializable {
|
||||||
jpaTm()
|
jpaTm()
|
||||||
.transact(
|
.transact(
|
||||||
() -> {
|
() -> {
|
||||||
Optional<google.registry.schema.server.Lock> cloudSqlLockOptional =
|
Optional<google.registry.schema.server.Lock> cloudSqlLockOptional;
|
||||||
LockDao.load(resourceName, tld);
|
if (tld == null) {
|
||||||
|
cloudSqlLockOptional = LockDao.load(resourceName);
|
||||||
|
} else {
|
||||||
|
cloudSqlLockOptional = LockDao.load(resourceName, tld);
|
||||||
|
}
|
||||||
LockDao.compare(Optional.ofNullable(lock), cloudSqlLockOptional);
|
LockDao.compare(Optional.ofNullable(lock), cloudSqlLockOptional);
|
||||||
});
|
});
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -238,13 +242,23 @@ public class Lock extends ImmutableObject implements Serializable {
|
||||||
jpaTm()
|
jpaTm()
|
||||||
.transact(
|
.transact(
|
||||||
() -> {
|
() -> {
|
||||||
google.registry.schema.server.Lock cloudSqlLock =
|
google.registry.schema.server.Lock cloudSqlLock;
|
||||||
google.registry.schema.server.Lock.create(
|
if (tld == null) {
|
||||||
resourceName,
|
cloudSqlLock =
|
||||||
Optional.ofNullable(tld).orElse("GLOBAL"),
|
google.registry.schema.server.Lock.createGlobal(
|
||||||
requestStatusChecker.getLogId(),
|
resourceName,
|
||||||
now,
|
requestStatusChecker.getLogId(),
|
||||||
leaseLength);
|
now,
|
||||||
|
leaseLength);
|
||||||
|
} else {
|
||||||
|
cloudSqlLock =
|
||||||
|
google.registry.schema.server.Lock.create(
|
||||||
|
resourceName,
|
||||||
|
tld,
|
||||||
|
requestStatusChecker.getLogId(),
|
||||||
|
now,
|
||||||
|
leaseLength);
|
||||||
|
}
|
||||||
LockDao.save(cloudSqlLock);
|
LockDao.save(cloudSqlLock);
|
||||||
});
|
});
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -274,8 +288,12 @@ public class Lock extends ImmutableObject implements Serializable {
|
||||||
jpaTm()
|
jpaTm()
|
||||||
.transact(
|
.transact(
|
||||||
() -> {
|
() -> {
|
||||||
Optional<google.registry.schema.server.Lock> cloudSqlLockOptional =
|
Optional<google.registry.schema.server.Lock> cloudSqlLockOptional;
|
||||||
LockDao.load(resourceName, tld);
|
if (tld == null) {
|
||||||
|
cloudSqlLockOptional = LockDao.load(resourceName);
|
||||||
|
} else {
|
||||||
|
cloudSqlLockOptional = LockDao.load(resourceName, tld);
|
||||||
|
}
|
||||||
LockDao.compare(Optional.ofNullable(loadedLock), cloudSqlLockOptional);
|
LockDao.compare(Optional.ofNullable(loadedLock), cloudSqlLockOptional);
|
||||||
});
|
});
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -292,9 +310,13 @@ public class Lock extends ImmutableObject implements Serializable {
|
||||||
try {
|
try {
|
||||||
jpaTm()
|
jpaTm()
|
||||||
.transact(
|
.transact(
|
||||||
() ->
|
() -> {
|
||||||
LockDao.delete(
|
if (tld == null) {
|
||||||
resourceName, Optional.ofNullable(tld).orElse("GLOBAL")));
|
LockDao.delete(resourceName);
|
||||||
|
} else {
|
||||||
|
LockDao.delete(resourceName, tld);
|
||||||
|
}
|
||||||
|
});
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.atSevere().withCause(e).log(
|
logger.atSevere().withCause(e).log(
|
||||||
"Error deleting lock from Cloud SQL: %s", loadedLock);
|
"Error deleting lock from Cloud SQL: %s", loadedLock);
|
||||||
|
|
Loading…
Add table
Reference in a new issue