diff --git a/core/src/main/java/google/registry/flows/domain/DomainUpdateFlow.java b/core/src/main/java/google/registry/flows/domain/DomainUpdateFlow.java index 78d112127..aa0b7c14b 100644 --- a/core/src/main/java/google/registry/flows/domain/DomainUpdateFlow.java +++ b/core/src/main/java/google/registry/flows/domain/DomainUpdateFlow.java @@ -181,7 +181,10 @@ public final class DomainUpdateFlow implements TransactionalFlow { DomainHistory domainHistory = historyBuilder.setType(DOMAIN_UPDATE).setDomain(newDomain).build(); validateNewState(newDomain); - dnsQueue.addDomainRefreshTask(targetId); + if (newDomain.getDsData() != existingDomain.getDsData() + || newDomain.getNsHosts() != existingDomain.getNsHosts()) { + dnsQueue.addDomainRefreshTask(targetId); + } ImmutableSet.Builder entitiesToSave = new ImmutableSet.Builder<>(); entitiesToSave.add(newDomain, domainHistory); Optional statusUpdateBillingEvent = @@ -268,12 +271,18 @@ public final class DomainUpdateFlow implements TransactionalFlow { .setLastEppUpdateRegistrarId(registrarId) .addStatusValues(add.getStatusValues()) .removeStatusValues(remove.getStatusValues()) - .addNameservers(add.getNameservers().stream().collect(toImmutableSet())) - .removeNameservers(remove.getNameservers().stream().collect(toImmutableSet())) .removeContacts(remove.getContacts()) .addContacts(add.getContacts()) .setRegistrant(firstNonNull(change.getRegistrant(), domain.getRegistrant())) .setAuthInfo(firstNonNull(change.getAuthInfo(), domain.getAuthInfo())); + + if (!add.getNameservers().isEmpty()) { + domainBuilder.addNameservers(add.getNameservers().stream().collect(toImmutableSet())); + } + if (!remove.getNameservers().isEmpty()) { + domainBuilder.removeNameservers(remove.getNameservers().stream().collect(toImmutableSet())); + } + Optional superuserExt = eppInput.getSingleExtension(DomainUpdateSuperuserExtension.class); if (superuserExt.isPresent()) { diff --git a/core/src/test/java/google/registry/flows/domain/DomainUpdateFlowTest.java b/core/src/test/java/google/registry/flows/domain/DomainUpdateFlowTest.java index 16054980c..fc32a6c0d 100644 --- a/core/src/test/java/google/registry/flows/domain/DomainUpdateFlowTest.java +++ b/core/src/test/java/google/registry/flows/domain/DomainUpdateFlowTest.java @@ -47,6 +47,7 @@ import static google.registry.testing.DomainSubject.assertAboutDomains; import static google.registry.testing.EppExceptionSubject.assertAboutEppExceptions; import static google.registry.testing.HistoryEntrySubject.assertAboutHistoryEntries; import static google.registry.testing.TaskQueueHelper.assertDnsTasksEnqueued; +import static google.registry.testing.TaskQueueHelper.assertNoDnsTasksEnqueued; import static google.registry.util.DateTimeUtils.START_OF_TIME; import static org.joda.money.CurrencyUnit.USD; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -1727,4 +1728,10 @@ class DomainUpdateFlowTest extends ResourceFlowTestCase + + + + example.tld + + mak21 + mak21 + mak21 + Server hold. + + + + ABC-12345 + +