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 @Inject
ing 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 @Inject
ing 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);
}
}