From f7a67b76763a1b0fc8d4cf34d4312863a65b4bc5 Mon Sep 17 00:00:00 2001 From: gbrodman Date: Fri, 17 Jul 2020 15:35:44 -0400 Subject: [PATCH] Add a 'Host' parameter to the relock action enqueuer (#699) * Add a 'Host' parameter to the relock action enqueuer I believe this is why we are seeing 404s currently -- we should be specifying the backend host as the target like we do for the resave-entity async action. --- .../registry/batch/AsyncTaskEnqueuer.java | 2 ++ .../registry/batch/AsyncTaskEnqueuerTest.java | 1 + .../registry/tools/DomainLockUtilsTest.java | 17 +++++++++++------ 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/google/registry/batch/AsyncTaskEnqueuer.java b/core/src/main/java/google/registry/batch/AsyncTaskEnqueuer.java index 782eb018b..f191ebe22 100644 --- a/core/src/main/java/google/registry/batch/AsyncTaskEnqueuer.java +++ b/core/src/main/java/google/registry/batch/AsyncTaskEnqueuer.java @@ -169,10 +169,12 @@ public final class AsyncTaskEnqueuer { lock.getRelockDuration().isPresent(), "Lock with ID %s not configured for relock", lock.getRevisionId()); + String backendHostname = appEngineServiceUtils.getServiceHostname("backend"); addTaskToQueueWithRetry( asyncActionsPushQueue, TaskOptions.Builder.withUrl(RelockDomainAction.PATH) .method(Method.POST) + .header("Host", backendHostname) .param( RelockDomainAction.OLD_UNLOCK_REVISION_ID_PARAM, String.valueOf(lock.getRevisionId())) diff --git a/core/src/test/java/google/registry/batch/AsyncTaskEnqueuerTest.java b/core/src/test/java/google/registry/batch/AsyncTaskEnqueuerTest.java index 57cc8ab02..ab9856146 100644 --- a/core/src/test/java/google/registry/batch/AsyncTaskEnqueuerTest.java +++ b/core/src/test/java/google/registry/batch/AsyncTaskEnqueuerTest.java @@ -168,6 +168,7 @@ public class AsyncTaskEnqueuerTest { new TaskMatcher() .url(RelockDomainAction.PATH) .method("POST") + .header("Host", "backend.hostname.fake") .param( RelockDomainAction.OLD_UNLOCK_REVISION_ID_PARAM, String.valueOf(lock.getRevisionId())) diff --git a/core/src/test/java/google/registry/tools/DomainLockUtilsTest.java b/core/src/test/java/google/registry/tools/DomainLockUtilsTest.java index aa0f10ac6..201f29bd4 100644 --- a/core/src/test/java/google/registry/tools/DomainLockUtilsTest.java +++ b/core/src/test/java/google/registry/tools/DomainLockUtilsTest.java @@ -33,6 +33,7 @@ import static org.joda.time.Duration.standardHours; import static org.joda.time.Duration.standardSeconds; import static org.junit.Assert.assertThrows; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; import com.google.common.collect.ImmutableList; import google.registry.batch.AsyncTaskEnqueuerTest; @@ -71,12 +72,7 @@ public final class DomainLockUtilsTest { private static final String POC_ID = "marla.singer@example.com"; private final FakeClock clock = new FakeClock(DateTime.now(DateTimeZone.UTC)); - private final DomainLockUtils domainLockUtils = - new DomainLockUtils( - new DeterministicStringGenerator(Alphabets.BASE_58), - "adminreg", - AsyncTaskEnqueuerTest.createForTesting( - mock(AppEngineServiceUtils.class), clock, standardSeconds(90))); + private DomainLockUtils domainLockUtils; @Rule public final AppEngineRule appEngineRule = @@ -94,6 +90,14 @@ public final class DomainLockUtilsTest { createTlds("tld", "net"); HostResource host = persistActiveHost("ns1.example.net"); domain = persistResource(newDomainBase(DOMAIN_NAME, host)); + + AppEngineServiceUtils appEngineServiceUtils = mock(AppEngineServiceUtils.class); + when(appEngineServiceUtils.getServiceHostname("backend")).thenReturn("backend.hostname.fake"); + domainLockUtils = new DomainLockUtils( + new DeterministicStringGenerator(Alphabets.BASE_58), + "adminreg", + AsyncTaskEnqueuerTest.createForTesting( + appEngineServiceUtils, clock, standardSeconds(90))); } @Test @@ -264,6 +268,7 @@ public final class DomainLockUtilsTest { new TaskMatcher() .url(RelockDomainAction.PATH) .method("POST") + .header("Host", "backend.hostname.fake") .param( RelockDomainAction.OLD_UNLOCK_REVISION_ID_PARAM, String.valueOf(lock.getRevisionId()))