1
0
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:
sarahcaseybot
2024-03-29 16:51:19 -04:00
committed by GitHub
parent fa344776a1
commit dff2d90325
7 changed files with 145 additions and 65 deletions

View File

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