mirror of
https://github.com/google/nomulus
synced 2026-04-21 08:40:44 +00:00
Add batching to DeleteProberDataAction (#2322)
* Add batching to DeleteProberDataAction * Only get time once * Add separate query for dry run * Update querries to actually properly delete all the data * Fix merge conflicts * Add test for foreign key constraints * Make transaction repeatable read * Make queries to subtables native * Add native query for GracePeriodHistory * Kill job after 20 hours * remove extra time check from read query
This commit is contained in:
@@ -17,6 +17,7 @@ package google.registry.batch;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static com.google.common.truth.Truth.assertWithMessage;
|
||||
import static google.registry.model.EppResourceUtils.loadByForeignKey;
|
||||
import static google.registry.model.domain.rgp.GracePeriodStatus.ADD;
|
||||
import static google.registry.testing.DatabaseHelper.assertDomainDnsRequests;
|
||||
import static google.registry.testing.DatabaseHelper.createTld;
|
||||
import static google.registry.testing.DatabaseHelper.loadByEntitiesIfPresent;
|
||||
@@ -37,6 +38,7 @@ import google.registry.model.billing.BillingBase.Reason;
|
||||
import google.registry.model.billing.BillingEvent;
|
||||
import google.registry.model.domain.Domain;
|
||||
import google.registry.model.domain.DomainHistory;
|
||||
import google.registry.model.domain.GracePeriod;
|
||||
import google.registry.model.poll.PollMessage;
|
||||
import google.registry.model.reporting.HistoryEntry;
|
||||
import google.registry.model.tld.Tld;
|
||||
@@ -92,11 +94,7 @@ class DeleteProberDataActionTest {
|
||||
}
|
||||
|
||||
private void resetAction() {
|
||||
action = new DeleteProberDataAction();
|
||||
action.isDryRun = false;
|
||||
action.tlds = ImmutableSet.of();
|
||||
action.registryAdminRegistrarId = "TheRegistrar";
|
||||
// RegistryEnvironment.SANDBOX.setup(systemPropertyExtension);
|
||||
action = new DeleteProberDataAction(false, ImmutableSet.of(), Optional.empty(), "TheRegistrar");
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
@@ -119,6 +117,19 @@ class DeleteProberDataActionTest {
|
||||
assertAllAbsent(oaEntities);
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_deletesAllInBatches() throws Exception {
|
||||
// Persist 40 domains
|
||||
Set<ImmutableObject> ibEntities = persistLotsOfDomains("ib-any.test");
|
||||
Set<ImmutableObject> oaEntities = persistLotsOfDomains("oa-canary.test");
|
||||
// Create action with batch size of 3
|
||||
DeleteProberDataAction batchedAction =
|
||||
new DeleteProberDataAction(false, ImmutableSet.of(), Optional.of(3), "TheRegistrar");
|
||||
batchedAction.run();
|
||||
assertAllAbsent(ibEntities);
|
||||
assertAllAbsent(oaEntities);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testSuccess_deletesAllAndOnlyGivenTlds() throws Exception {
|
||||
Set<ImmutableObject> tldEntities = persistLotsOfDomains("tld");
|
||||
@@ -303,12 +314,22 @@ class DeleteProberDataActionTest {
|
||||
.setRegistrarId("TheRegistrar")
|
||||
.setMsg("Domain registered")
|
||||
.build());
|
||||
GracePeriod gracePeriod =
|
||||
persistSimpleResource(
|
||||
GracePeriod.create(
|
||||
ADD,
|
||||
domain.getRepoId(),
|
||||
DELETION_TIME.plusDays(5),
|
||||
"TheRegistrar",
|
||||
billingEvent.createVKey()));
|
||||
domain = persistResource(domain.asBuilder().addGracePeriod(gracePeriod).build());
|
||||
ImmutableSet.Builder<ImmutableObject> builder =
|
||||
new ImmutableSet.Builder<ImmutableObject>()
|
||||
.add(domain)
|
||||
.add(historyEntry)
|
||||
.add(billingEvent)
|
||||
.add(pollMessage);
|
||||
.add(pollMessage)
|
||||
.add(gracePeriod);
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user