diff --git a/java/google/registry/dns/DnsQueue.java b/java/google/registry/dns/DnsQueue.java index 5a71ea73b..51319e1ef 100644 --- a/java/google/registry/dns/DnsQueue.java +++ b/java/google/registry/dns/DnsQueue.java @@ -14,6 +14,7 @@ package google.registry.dns; +import static com.google.appengine.api.taskqueue.QueueFactory.getQueue; import static com.google.common.base.Preconditions.checkArgument; import static google.registry.dns.DnsConstants.DNS_PULL_QUEUE_NAME; import static google.registry.dns.DnsConstants.DNS_TARGET_NAME_PARAM; @@ -25,7 +26,6 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS; import com.google.appengine.api.taskqueue.Queue; import com.google.appengine.api.taskqueue.QueueConstants; -import com.google.appengine.api.taskqueue.QueueFactory; import com.google.appengine.api.taskqueue.TaskHandle; import com.google.appengine.api.taskqueue.TaskOptions; import com.google.appengine.api.taskqueue.TaskOptions.Method; @@ -48,8 +48,23 @@ public class DnsQueue { private static final FormattingLogger logger = FormattingLogger.getLoggerForCallerClass(); - @Inject @Named(DNS_PULL_QUEUE_NAME) Queue queue; - @Inject DnsQueue() {} + private final Queue queue; + + @Inject + public DnsQueue(@Named(DNS_PULL_QUEUE_NAME) Queue queue) { + this.queue = queue; + } + + /** + * Constructs a new instance. + * + *

Note: Prefer @Injecting DnsQueue instances instead. You should only use + * this helper method in situations for which injection does not work, e.g. inside mapper or + * reducer classes in mapreduces that need to be Serializable. + */ + public static DnsQueue create() { + return new DnsQueue(getQueue(DNS_PULL_QUEUE_NAME)); + } long writeBatchSize = QueueConstants.maxLeaseCount(); @@ -127,17 +142,4 @@ public class DnsQueue { logger.severe(e, "Failed deleting tasks too fast"); } } - - /** - * Creates a new instance. - * - *

Note: Prefer @Injecting DnsQueue instances instead. You should only use - * this helper method in situations for which injection does not work, e.g. inside mapper or - * reducer classes in mapreduces that need to be Serializable. - */ - public static DnsQueue create() { - DnsQueue result = new DnsQueue(); - result.queue = QueueFactory.getQueue(DNS_PULL_QUEUE_NAME); - return result; - } } diff --git a/java/google/registry/flows/domain/DomainAllocateFlow.java b/java/google/registry/flows/domain/DomainAllocateFlow.java index de633f616..d775df769 100644 --- a/java/google/registry/flows/domain/DomainAllocateFlow.java +++ b/java/google/registry/flows/domain/DomainAllocateFlow.java @@ -41,6 +41,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.net.InternetDomainName; import com.googlecode.objectify.Key; +import dagger.Lazy; import google.registry.dns.DnsQueue; import google.registry.flows.EppException; import google.registry.flows.EppException.AuthorizationErrorException; @@ -109,6 +110,7 @@ public class DomainAllocateFlow implements TransactionalFlow { @Inject @Superuser boolean isSuperuser; @Inject HistoryEntry.Builder historyBuilder; @Inject EppInput eppInput; + @Inject Lazy dnsQueue; @Inject EppResponse.Builder responseBuilder; @Inject DomainPricingLogic pricingLogic; @Inject DomainAllocateFlow() {} @@ -360,7 +362,7 @@ public class DomainAllocateFlow implements TransactionalFlow { private void enqueueTasks(AllocateCreateExtension allocateCreate, DomainResource newDomain) { if (newDomain.shouldPublishToDns()) { - DnsQueue.create().addDomainRefreshTask(newDomain.getFullyQualifiedDomainName()); + dnsQueue.get().addDomainRefreshTask(newDomain.getFullyQualifiedDomainName()); } if (allocateCreate.getSmdId() != null || allocateCreate.getNotice() != null) { LordnTask.enqueueDomainResourceTask(newDomain); diff --git a/javatests/google/registry/dns/DnsQueueTest.java b/javatests/google/registry/dns/DnsQueueTest.java index 481da62f0..74925c288 100644 --- a/javatests/google/registry/dns/DnsQueueTest.java +++ b/javatests/google/registry/dns/DnsQueueTest.java @@ -14,7 +14,6 @@ package google.registry.dns; -import static com.google.appengine.api.taskqueue.QueueFactory.getQueue; import static google.registry.testing.DatastoreHelper.createTld; import static google.registry.testing.TaskQueueHelper.assertNoTasksEnqueued; import static google.registry.testing.TaskQueueHelper.assertTasksEnqueued; @@ -45,8 +44,7 @@ public class DnsQueueTest { @Before public void init() { - dnsQueue = new DnsQueue(); - dnsQueue.queue = getQueue("dns-pull"); + dnsQueue = DnsQueue.create(); dnsQueue.writeBatchSize = 10; } diff --git a/javatests/google/registry/dns/ReadDnsQueueActionTest.java b/javatests/google/registry/dns/ReadDnsQueueActionTest.java index 43a884930..dc9ae77f6 100644 --- a/javatests/google/registry/dns/ReadDnsQueueActionTest.java +++ b/javatests/google/registry/dns/ReadDnsQueueActionTest.java @@ -86,8 +86,7 @@ public class ReadDnsQueueActionTest { clock.setTo(DateTime.now(DateTimeZone.UTC)); createTlds("com", "net", "example"); persistResource(Registry.get("example").asBuilder().setTldType(TldType.TEST).build()); - dnsQueue = new DnsQueue(); - dnsQueue.queue = getQueue(DNS_PULL_QUEUE_NAME); + dnsQueue = DnsQueue.create(); } private void run(boolean keepTasks) throws Exception { @@ -132,7 +131,7 @@ public class ReadDnsQueueActionTest { dnsQueue.addDomainRefreshTask("domain.net"); dnsQueue.addDomainRefreshTask("domain.example"); run(false); - assertNoTasksEnqueued(DnsConstants.DNS_PULL_QUEUE_NAME); + assertNoTasksEnqueued(DNS_PULL_QUEUE_NAME); assertTasksEnqueued( DNS_PUBLISH_PUSH_QUEUE_NAME, new TaskMatcher().method("POST"), @@ -146,7 +145,7 @@ public class ReadDnsQueueActionTest { dnsQueue.addDomainRefreshTask("domain.net"); dnsQueue.addDomainRefreshTask("domain.example"); run(false); - assertNoTasksEnqueued(DnsConstants.DNS_PULL_QUEUE_NAME); + assertNoTasksEnqueued(DNS_PULL_QUEUE_NAME); assertTldsEnqueuedInPushQueue("com", "net", "example"); } @@ -157,7 +156,7 @@ public class ReadDnsQueueActionTest { dnsQueue.addDomainRefreshTask("domain.example"); run(true); assertTasksEnqueued( - DnsConstants.DNS_PULL_QUEUE_NAME, + DNS_PULL_QUEUE_NAME, new TaskMatcher().payload("Target-Type=DOMAIN&Target-Name=domain.com&tld=com"), new TaskMatcher().payload("Target-Type=DOMAIN&Target-Name=domain.net&tld=net"), new TaskMatcher().payload("Target-Type=DOMAIN&Target-Name=domain.example&tld=example")); @@ -171,7 +170,7 @@ public class ReadDnsQueueActionTest { dnsQueue.addDomainRefreshTask("domain.net"); dnsQueue.addDomainRefreshTask("domain.example"); run(false); - assertTasksEnqueued(DnsConstants.DNS_PULL_QUEUE_NAME, new TaskMatcher()); + assertTasksEnqueued(DNS_PULL_QUEUE_NAME, new TaskMatcher()); assertTldsEnqueuedInPushQueue("com", "example"); } @@ -181,7 +180,7 @@ public class ReadDnsQueueActionTest { dnsQueue.addDomainRefreshTask("domain.net"); dnsQueue.addZoneRefreshTask("example"); run(false); - assertNoTasksEnqueued(DnsConstants.DNS_PULL_QUEUE_NAME); + assertNoTasksEnqueued(DNS_PULL_QUEUE_NAME); assertTasksEnqueued(DNS_PUBLISH_PUSH_QUEUE_NAME, new TaskMatcher() .url(PublishDnsUpdatesAction.PATH) @@ -213,11 +212,13 @@ public class ReadDnsQueueActionTest { task.param("domains", domainName); break; case 1: - dnsQueue.queue.add(createRefreshTask("ns1." + domainName, TargetType.HOST)); + getQueue(DNS_PULL_QUEUE_NAME) + .add(createRefreshTask("ns1." + domainName, TargetType.HOST)); task.param("hosts", "ns1." + domainName); break; case 2: - dnsQueue.queue.add(createRefreshTask("ns2." + domainName, TargetType.HOST)); + getQueue(DNS_PULL_QUEUE_NAME) + .add(createRefreshTask("ns2." + domainName, TargetType.HOST)); task.param("hosts", "ns2." + domainName); break; } @@ -231,7 +232,7 @@ public class ReadDnsQueueActionTest { } } run(false); - assertNoTasksEnqueued(DnsConstants.DNS_PULL_QUEUE_NAME); + assertNoTasksEnqueued(DNS_PULL_QUEUE_NAME); assertTasksEnqueued(DNS_PUBLISH_PUSH_QUEUE_NAME, expectedTasks); } }