diff --git a/core/src/main/java/google/registry/model/EntityClasses.java b/core/src/main/java/google/registry/model/EntityClasses.java index c0870301d..ba5fd409a 100644 --- a/core/src/main/java/google/registry/model/EntityClasses.java +++ b/core/src/main/java/google/registry/model/EntityClasses.java @@ -15,6 +15,7 @@ package google.registry.model; import com.google.common.collect.ImmutableSet; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.model.billing.BillingEvent; import google.registry.model.common.Cursor; import google.registry.model.common.EntityGroupRoot; @@ -45,6 +46,7 @@ import google.registry.model.server.ServerSecret; import google.registry.model.tld.Registry; /** Sets of classes of the Objectify-registered entities in use throughout the model. */ +@DeleteAfterMigration public final class EntityClasses { /** Set of entity classes. */ diff --git a/core/src/main/java/google/registry/model/IdService.java b/core/src/main/java/google/registry/model/IdService.java index f41291194..8074c0583 100644 --- a/core/src/main/java/google/registry/model/IdService.java +++ b/core/src/main/java/google/registry/model/IdService.java @@ -20,6 +20,7 @@ import com.google.appengine.api.datastore.DatastoreServiceFactory; import com.google.common.annotations.VisibleForTesting; import google.registry.beam.common.RegistryPipelineWorkerInitializer; import google.registry.config.RegistryEnvironment; +import google.registry.model.annotations.DeleteAfterMigration; import java.util.concurrent.atomic.AtomicLong; /** @@ -28,6 +29,7 @@ import java.util.concurrent.atomic.AtomicLong; *

In non-test, non-beam environments the Id is generated by Datastore, otherwise it's from an * atomic long number that's incremented every time this method is called. */ +@DeleteAfterMigration public final class IdService { /** diff --git a/core/src/main/java/google/registry/model/SchemaVersion.java b/core/src/main/java/google/registry/model/SchemaVersion.java index 5c5bc152c..06b4791a9 100644 --- a/core/src/main/java/google/registry/model/SchemaVersion.java +++ b/core/src/main/java/google/registry/model/SchemaVersion.java @@ -19,12 +19,14 @@ import static com.google.common.base.Predicates.subtypeOf; import static java.util.stream.Collectors.joining; import com.google.common.collect.Ordering; +import google.registry.model.annotations.DeleteAfterMigration; import java.util.ArrayDeque; import java.util.Queue; import java.util.SortedSet; import java.util.TreeSet; /** Utility methods for getting the version of the model schema from the model code. */ +@DeleteAfterMigration public final class SchemaVersion { /** diff --git a/core/src/main/java/google/registry/model/common/CrossTldSingleton.java b/core/src/main/java/google/registry/model/common/CrossTldSingleton.java index acc9baa0e..d57db4afe 100644 --- a/core/src/main/java/google/registry/model/common/CrossTldSingleton.java +++ b/core/src/main/java/google/registry/model/common/CrossTldSingleton.java @@ -20,11 +20,13 @@ import com.googlecode.objectify.Key; import com.googlecode.objectify.annotation.Id; import com.googlecode.objectify.annotation.Parent; import google.registry.model.ImmutableObject; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.model.annotations.InCrossTld; import javax.persistence.MappedSuperclass; import javax.persistence.Transient; /** A singleton entity in Datastore. */ +@DeleteAfterMigration @MappedSuperclass @InCrossTld public abstract class CrossTldSingleton extends ImmutableObject { diff --git a/core/src/main/java/google/registry/model/common/DatabaseMigrationStateSchedule.java b/core/src/main/java/google/registry/model/common/DatabaseMigrationStateSchedule.java index a87d73235..8bd4f7572 100644 --- a/core/src/main/java/google/registry/model/common/DatabaseMigrationStateSchedule.java +++ b/core/src/main/java/google/registry/model/common/DatabaseMigrationStateSchedule.java @@ -26,6 +26,7 @@ import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.ImmutableSortedMap; import com.google.common.flogger.FluentLogger; import google.registry.config.RegistryEnvironment; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.model.common.TimedTransitionProperty.TimedTransition; import google.registry.model.replay.SqlOnlyEntity; import java.time.Duration; @@ -39,6 +40,7 @@ import org.joda.time.DateTime; *

The entity is stored in SQL throughout the entire migration so as to have a single point of * access. */ +@DeleteAfterMigration @Entity public class DatabaseMigrationStateSchedule extends CrossTldSingleton implements SqlOnlyEntity { diff --git a/core/src/main/java/google/registry/model/common/EntityGroupRoot.java b/core/src/main/java/google/registry/model/common/EntityGroupRoot.java index 791432461..6009ad454 100644 --- a/core/src/main/java/google/registry/model/common/EntityGroupRoot.java +++ b/core/src/main/java/google/registry/model/common/EntityGroupRoot.java @@ -19,6 +19,7 @@ import com.googlecode.objectify.Key; import com.googlecode.objectify.annotation.Entity; import com.googlecode.objectify.annotation.Id; import google.registry.model.BackupGroupRoot; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.model.replay.DatastoreOnlyEntity; import javax.annotation.Nullable; @@ -37,6 +38,7 @@ import javax.annotation.Nullable; * entity group for the single namespace where global data applicable for all TLDs lived. */ @Entity +@DeleteAfterMigration public class EntityGroupRoot extends BackupGroupRoot implements DatastoreOnlyEntity { @SuppressWarnings("unused") diff --git a/core/src/main/java/google/registry/model/index/EppResourceIndex.java b/core/src/main/java/google/registry/model/index/EppResourceIndex.java index bfa80c8fa..2920af6b8 100644 --- a/core/src/main/java/google/registry/model/index/EppResourceIndex.java +++ b/core/src/main/java/google/registry/model/index/EppResourceIndex.java @@ -24,12 +24,14 @@ import com.googlecode.objectify.annotation.Index; import com.googlecode.objectify.annotation.Parent; import google.registry.model.BackupGroupRoot; import google.registry.model.EppResource; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.model.annotations.ReportedOn; import google.registry.model.replay.DatastoreOnlyEntity; /** An index that allows for quick enumeration of all EppResource entities (e.g. via map reduce). */ @ReportedOn @Entity +@DeleteAfterMigration public class EppResourceIndex extends BackupGroupRoot implements DatastoreOnlyEntity { @Id String id; diff --git a/core/src/main/java/google/registry/model/index/EppResourceIndexBucket.java b/core/src/main/java/google/registry/model/index/EppResourceIndexBucket.java index 6a228ba51..ad41ff035 100644 --- a/core/src/main/java/google/registry/model/index/EppResourceIndexBucket.java +++ b/core/src/main/java/google/registry/model/index/EppResourceIndexBucket.java @@ -23,12 +23,14 @@ import com.googlecode.objectify.annotation.Entity; import com.googlecode.objectify.annotation.Id; import google.registry.model.EppResource; import google.registry.model.ImmutableObject; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.model.annotations.VirtualEntity; import google.registry.model.replay.DatastoreOnlyEntity; /** A virtual entity to represent buckets to which EppResourceIndex objects are randomly added. */ @Entity @VirtualEntity +@DeleteAfterMigration public class EppResourceIndexBucket extends ImmutableObject implements DatastoreOnlyEntity { @SuppressWarnings("unused") diff --git a/core/src/main/java/google/registry/model/index/ForeignKeyIndex.java b/core/src/main/java/google/registry/model/index/ForeignKeyIndex.java index 19ac5b258..0437931e2 100644 --- a/core/src/main/java/google/registry/model/index/ForeignKeyIndex.java +++ b/core/src/main/java/google/registry/model/index/ForeignKeyIndex.java @@ -43,6 +43,7 @@ import com.googlecode.objectify.annotation.Index; import google.registry.config.RegistryConfig; import google.registry.model.BackupGroupRoot; import google.registry.model.EppResource; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.model.annotations.ReportedOn; import google.registry.model.contact.ContactResource; import google.registry.model.domain.DomainBase; @@ -65,6 +66,7 @@ import org.joda.time.Duration; * the foreign key string. The instance is never deleted, but it is updated if a newer entity * becomes the active entity. */ +@DeleteAfterMigration public abstract class ForeignKeyIndex extends BackupGroupRoot { /** The {@link ForeignKeyIndex} type for {@link ContactResource} entities. */ diff --git a/core/src/main/java/google/registry/model/ofy/AugmentedDeleter.java b/core/src/main/java/google/registry/model/ofy/AugmentedDeleter.java index 2ccca290e..94a6c33a9 100644 --- a/core/src/main/java/google/registry/model/ofy/AugmentedDeleter.java +++ b/core/src/main/java/google/registry/model/ofy/AugmentedDeleter.java @@ -23,6 +23,7 @@ import com.googlecode.objectify.Key; import com.googlecode.objectify.Result; import com.googlecode.objectify.cmd.DeleteType; import com.googlecode.objectify.cmd.Deleter; +import google.registry.model.annotations.DeleteAfterMigration; import java.util.Arrays; import java.util.stream.Stream; @@ -30,6 +31,7 @@ import java.util.stream.Stream; * A Deleter that forwards to {@code auditedOfy().delete()}, but can be augmented via subclassing to * do custom processing on the keys to be deleted prior to their deletion. */ +@DeleteAfterMigration abstract class AugmentedDeleter implements Deleter { private final Deleter delegate = ofy().delete(); diff --git a/core/src/main/java/google/registry/model/ofy/AugmentedSaver.java b/core/src/main/java/google/registry/model/ofy/AugmentedSaver.java index b42c1df4d..9896572c0 100644 --- a/core/src/main/java/google/registry/model/ofy/AugmentedSaver.java +++ b/core/src/main/java/google/registry/model/ofy/AugmentedSaver.java @@ -21,13 +21,15 @@ import com.google.common.collect.ImmutableList; import com.googlecode.objectify.Key; import com.googlecode.objectify.Result; import com.googlecode.objectify.cmd.Saver; +import google.registry.model.annotations.DeleteAfterMigration; import java.util.Arrays; import java.util.Map; /** - * A Saver that forwards to {@code ofy().save()}, but can be augmented via subclassing to - * do custom processing on the entities to be saved prior to their saving. + * A Saver that forwards to {@code ofy().save()}, but can be augmented via subclassing to do custom + * processing on the entities to be saved prior to their saving. */ +@DeleteAfterMigration abstract class AugmentedSaver implements Saver { private final Saver delegate = ofy().save(); diff --git a/core/src/main/java/google/registry/model/ofy/CommitLogBucket.java b/core/src/main/java/google/registry/model/ofy/CommitLogBucket.java index 61b72f03a..c8e53747f 100644 --- a/core/src/main/java/google/registry/model/ofy/CommitLogBucket.java +++ b/core/src/main/java/google/registry/model/ofy/CommitLogBucket.java @@ -31,6 +31,7 @@ import com.googlecode.objectify.annotation.Id; import google.registry.config.RegistryConfig; import google.registry.model.Buildable; import google.registry.model.ImmutableObject; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.model.annotations.NotBackedUp; import google.registry.model.annotations.NotBackedUp.Reason; import google.registry.model.replay.DatastoreOnlyEntity; @@ -51,6 +52,7 @@ import org.joda.time.DateTime; */ @Entity @NotBackedUp(reason = Reason.COMMIT_LOGS) +@DeleteAfterMigration public class CommitLogBucket extends ImmutableObject implements Buildable, DatastoreOnlyEntity { /** diff --git a/core/src/main/java/google/registry/model/ofy/CommitLogCheckpoint.java b/core/src/main/java/google/registry/model/ofy/CommitLogCheckpoint.java index 08262a924..867f5f804 100644 --- a/core/src/main/java/google/registry/model/ofy/CommitLogCheckpoint.java +++ b/core/src/main/java/google/registry/model/ofy/CommitLogCheckpoint.java @@ -25,6 +25,7 @@ import com.googlecode.objectify.annotation.Entity; import com.googlecode.objectify.annotation.Id; import com.googlecode.objectify.annotation.Parent; import google.registry.model.ImmutableObject; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.model.annotations.NotBackedUp; import google.registry.model.annotations.NotBackedUp.Reason; import google.registry.model.replay.DatastoreOnlyEntity; @@ -45,6 +46,7 @@ import org.joda.time.DateTime; */ @Entity @NotBackedUp(reason = Reason.COMMIT_LOGS) +@DeleteAfterMigration public class CommitLogCheckpoint extends ImmutableObject implements DatastoreOnlyEntity { /** Shared singleton parent entity for commit log checkpoints. */ diff --git a/core/src/main/java/google/registry/model/ofy/CommitLogCheckpointRoot.java b/core/src/main/java/google/registry/model/ofy/CommitLogCheckpointRoot.java index 4f7a6eb78..e173f61d6 100644 --- a/core/src/main/java/google/registry/model/ofy/CommitLogCheckpointRoot.java +++ b/core/src/main/java/google/registry/model/ofy/CommitLogCheckpointRoot.java @@ -21,6 +21,7 @@ import com.googlecode.objectify.Key; import com.googlecode.objectify.annotation.Entity; import com.googlecode.objectify.annotation.Id; import google.registry.model.ImmutableObject; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.model.annotations.NotBackedUp; import google.registry.model.annotations.NotBackedUp.Reason; import google.registry.model.replay.DatastoreOnlyEntity; @@ -29,6 +30,7 @@ import org.joda.time.DateTime; /** Singleton parent entity for all commit log checkpoints. */ @Entity @NotBackedUp(reason = Reason.COMMIT_LOGS) +@DeleteAfterMigration public class CommitLogCheckpointRoot extends ImmutableObject implements DatastoreOnlyEntity { public static final long SINGLETON_ID = 1; // There is always exactly one of these. diff --git a/core/src/main/java/google/registry/model/ofy/CommitLogManifest.java b/core/src/main/java/google/registry/model/ofy/CommitLogManifest.java index 4df6cec3e..8ad8248f7 100644 --- a/core/src/main/java/google/registry/model/ofy/CommitLogManifest.java +++ b/core/src/main/java/google/registry/model/ofy/CommitLogManifest.java @@ -23,6 +23,7 @@ import com.googlecode.objectify.annotation.Entity; import com.googlecode.objectify.annotation.Id; import com.googlecode.objectify.annotation.Parent; import google.registry.model.ImmutableObject; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.model.annotations.NotBackedUp; import google.registry.model.annotations.NotBackedUp.Reason; import google.registry.model.replay.DatastoreOnlyEntity; @@ -39,6 +40,7 @@ import org.joda.time.DateTime; */ @Entity @NotBackedUp(reason = Reason.COMMIT_LOGS) +@DeleteAfterMigration public class CommitLogManifest extends ImmutableObject implements DatastoreOnlyEntity { /** Commit log manifests are parented on a random bucket. */ diff --git a/core/src/main/java/google/registry/model/ofy/CommitLogMutation.java b/core/src/main/java/google/registry/model/ofy/CommitLogMutation.java index 1706748de..65ba03823 100644 --- a/core/src/main/java/google/registry/model/ofy/CommitLogMutation.java +++ b/core/src/main/java/google/registry/model/ofy/CommitLogMutation.java @@ -27,6 +27,7 @@ import com.googlecode.objectify.annotation.Entity; import com.googlecode.objectify.annotation.Id; import com.googlecode.objectify.annotation.Parent; import google.registry.model.ImmutableObject; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.model.annotations.NotBackedUp; import google.registry.model.annotations.NotBackedUp.Reason; import google.registry.model.replay.DatastoreOnlyEntity; @@ -34,6 +35,7 @@ import google.registry.model.replay.DatastoreOnlyEntity; /** Representation of a saved entity in a {@link CommitLogManifest} (not deletes). */ @Entity @NotBackedUp(reason = Reason.COMMIT_LOGS) +@DeleteAfterMigration public class CommitLogMutation extends ImmutableObject implements DatastoreOnlyEntity { /** The manifest this belongs to. */ diff --git a/core/src/main/java/google/registry/model/ofy/CommitLoggedWork.java b/core/src/main/java/google/registry/model/ofy/CommitLoggedWork.java index 0237bb717..d3efc043a 100644 --- a/core/src/main/java/google/registry/model/ofy/CommitLoggedWork.java +++ b/core/src/main/java/google/registry/model/ofy/CommitLoggedWork.java @@ -30,6 +30,7 @@ import com.google.common.collect.ImmutableSet; import com.googlecode.objectify.Key; import google.registry.model.BackupGroupRoot; import google.registry.model.ImmutableObject; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.util.Clock; import java.util.HashSet; import java.util.Map; @@ -39,6 +40,7 @@ import java.util.function.Supplier; import org.joda.time.DateTime; /** Wrapper for {@link Supplier} that associates a time with each attempt. */ +@DeleteAfterMigration class CommitLoggedWork implements Runnable { private final Supplier work; diff --git a/core/src/main/java/google/registry/model/ofy/DatastoreTransactionManager.java b/core/src/main/java/google/registry/model/ofy/DatastoreTransactionManager.java index 566020fa6..e8187d2f3 100644 --- a/core/src/main/java/google/registry/model/ofy/DatastoreTransactionManager.java +++ b/core/src/main/java/google/registry/model/ofy/DatastoreTransactionManager.java @@ -33,6 +33,7 @@ import com.googlecode.objectify.Key; import com.googlecode.objectify.Result; import com.googlecode.objectify.cmd.Query; import google.registry.model.ImmutableObject; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.model.annotations.InCrossTld; import google.registry.model.contact.ContactHistory; import google.registry.model.domain.DomainHistory; @@ -55,6 +56,7 @@ import javax.persistence.NonUniqueResultException; import org.joda.time.DateTime; /** Datastore implementation of {@link TransactionManager}. */ +@DeleteAfterMigration public class DatastoreTransactionManager implements TransactionManager { private Ofy injectedOfy; diff --git a/core/src/main/java/google/registry/model/ofy/EntityWritePriorities.java b/core/src/main/java/google/registry/model/ofy/EntityWritePriorities.java index a2afbf61a..e3aec086f 100644 --- a/core/src/main/java/google/registry/model/ofy/EntityWritePriorities.java +++ b/core/src/main/java/google/registry/model/ofy/EntityWritePriorities.java @@ -16,6 +16,7 @@ package google.registry.model.ofy; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableMap; +import google.registry.model.annotations.DeleteAfterMigration; /** * Contains the mapping from class names to SQL-replay-write priorities. @@ -26,6 +27,7 @@ import com.google.common.collect.ImmutableMap; * values represent an earlier write (and later delete). Higher-valued classes can have foreign keys * on lower-valued classes, but not vice versa. */ +@DeleteAfterMigration public class EntityWritePriorities { /** diff --git a/core/src/main/java/google/registry/model/ofy/ObjectifyService.java b/core/src/main/java/google/registry/model/ofy/ObjectifyService.java index 26fc23e3d..ca486e187 100644 --- a/core/src/main/java/google/registry/model/ofy/ObjectifyService.java +++ b/core/src/main/java/google/registry/model/ofy/ObjectifyService.java @@ -35,6 +35,7 @@ import google.registry.config.RegistryEnvironment; import google.registry.model.Buildable; import google.registry.model.EntityClasses; import google.registry.model.ImmutableObject; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.model.translators.BloomFilterOfStringTranslatorFactory; import google.registry.model.translators.CidrAddressBlockTranslatorFactory; import google.registry.model.translators.CommitLogRevisionsTranslatorFactory; @@ -52,6 +53,7 @@ import google.registry.model.translators.VKeyTranslatorFactory; * objects. The class contains a static initializer to call factory().register(...) on all * persistable objects in this package. */ +@DeleteAfterMigration public class ObjectifyService { /** A singleton instance of our Ofy wrapper. */ diff --git a/core/src/main/java/google/registry/model/ofy/Ofy.java b/core/src/main/java/google/registry/model/ofy/Ofy.java index a8df05fdc..be69d7efe 100644 --- a/core/src/main/java/google/registry/model/ofy/Ofy.java +++ b/core/src/main/java/google/registry/model/ofy/Ofy.java @@ -37,6 +37,7 @@ import com.googlecode.objectify.ObjectifyFactory; import com.googlecode.objectify.cmd.Deleter; import com.googlecode.objectify.cmd.Loader; import com.googlecode.objectify.cmd.Saver; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.model.annotations.NotBackedUp; import google.registry.model.annotations.VirtualEntity; import google.registry.model.ofy.ReadOnlyWork.KillTransactionException; @@ -59,6 +60,7 @@ import org.joda.time.Duration; * simpler to wrap {@link Objectify} rather than extend it because this way we can remove some * methods that we don't really want exposed and add some shortcuts. */ +@DeleteAfterMigration public class Ofy { private static final FluentLogger logger = FluentLogger.forEnclosingClass(); diff --git a/core/src/main/java/google/registry/model/ofy/OfyFilter.java b/core/src/main/java/google/registry/model/ofy/OfyFilter.java index 19417c0da..b3daa3412 100644 --- a/core/src/main/java/google/registry/model/ofy/OfyFilter.java +++ b/core/src/main/java/google/registry/model/ofy/OfyFilter.java @@ -14,6 +14,7 @@ package google.registry.model.ofy; +import google.registry.model.annotations.DeleteAfterMigration; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; @@ -23,6 +24,7 @@ import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; /** A filter that statically registers types with Objectify. */ +@DeleteAfterMigration public class OfyFilter implements Filter { @Override diff --git a/core/src/main/java/google/registry/model/ofy/ReadOnlyWork.java b/core/src/main/java/google/registry/model/ofy/ReadOnlyWork.java index aca72f196..d3113cbcf 100644 --- a/core/src/main/java/google/registry/model/ofy/ReadOnlyWork.java +++ b/core/src/main/java/google/registry/model/ofy/ReadOnlyWork.java @@ -14,10 +14,12 @@ package google.registry.model.ofy; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.util.Clock; import java.util.function.Supplier; /** Wrapper for {@link Supplier} that disallows mutations and fails the transaction at the end. */ +@DeleteAfterMigration class ReadOnlyWork extends CommitLoggedWork { ReadOnlyWork(Supplier work, Clock clock) { diff --git a/core/src/main/java/google/registry/model/ofy/ReplayQueue.java b/core/src/main/java/google/registry/model/ofy/ReplayQueue.java index c4c184a86..47ffef9a3 100644 --- a/core/src/main/java/google/registry/model/ofy/ReplayQueue.java +++ b/core/src/main/java/google/registry/model/ofy/ReplayQueue.java @@ -22,6 +22,7 @@ import com.google.common.collect.ImmutableMap; import com.googlecode.objectify.Key; import google.registry.config.RegistryEnvironment; import google.registry.model.UpdateAutoTimestamp; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.model.replay.DatastoreEntity; import google.registry.model.replay.ReplaySpecializer; import google.registry.persistence.VKey; @@ -34,6 +35,7 @@ import java.util.concurrent.ConcurrentLinkedQueue; * *

This code is to be removed when the actual replay cron job is implemented. */ +@DeleteAfterMigration public class ReplayQueue { static ConcurrentLinkedQueue, Object>> queue = diff --git a/core/src/main/java/google/registry/model/ofy/RequestCapturingAsyncDatastoreService.java b/core/src/main/java/google/registry/model/ofy/RequestCapturingAsyncDatastoreService.java index 37cab637f..f036a5abf 100644 --- a/core/src/main/java/google/registry/model/ofy/RequestCapturingAsyncDatastoreService.java +++ b/core/src/main/java/google/registry/model/ofy/RequestCapturingAsyncDatastoreService.java @@ -28,6 +28,7 @@ import com.google.appengine.api.datastore.Query; import com.google.appengine.api.datastore.Transaction; import com.google.appengine.api.datastore.TransactionOptions; import com.google.common.collect.ImmutableList; +import google.registry.model.annotations.DeleteAfterMigration; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -35,6 +36,7 @@ import java.util.Map; import java.util.concurrent.Future; /** A proxy for {@link AsyncDatastoreService} that exposes call counts. */ +@DeleteAfterMigration public class RequestCapturingAsyncDatastoreService implements AsyncDatastoreService { private final AsyncDatastoreService delegate; diff --git a/core/src/main/java/google/registry/model/ofy/SessionKeyExposingObjectify.java b/core/src/main/java/google/registry/model/ofy/SessionKeyExposingObjectify.java index eb938cbfb..103181828 100644 --- a/core/src/main/java/google/registry/model/ofy/SessionKeyExposingObjectify.java +++ b/core/src/main/java/google/registry/model/ofy/SessionKeyExposingObjectify.java @@ -18,8 +18,10 @@ import com.google.common.collect.ImmutableSet; import com.googlecode.objectify.Key; import com.googlecode.objectify.ObjectifyFactory; import com.googlecode.objectify.impl.ObjectifyImpl; +import google.registry.model.annotations.DeleteAfterMigration; /** Registry-specific Objectify subclass that exposes the keys used in the current session. */ +@DeleteAfterMigration public class SessionKeyExposingObjectify extends ObjectifyImpl { public SessionKeyExposingObjectify(ObjectifyFactory factory) { diff --git a/core/src/main/java/google/registry/model/ofy/TimestampInversionException.java b/core/src/main/java/google/registry/model/ofy/TimestampInversionException.java index 33b1c4ad2..653cec8c3 100644 --- a/core/src/main/java/google/registry/model/ofy/TimestampInversionException.java +++ b/core/src/main/java/google/registry/model/ofy/TimestampInversionException.java @@ -17,6 +17,7 @@ package google.registry.model.ofy; import com.googlecode.objectify.Key; import com.googlecode.objectify.Objectify; import google.registry.model.BackupGroupRoot; +import google.registry.model.annotations.DeleteAfterMigration; import java.util.Arrays; import java.util.Map; import org.joda.time.DateTime; @@ -25,6 +26,7 @@ import org.joda.time.DateTime; * Exception when trying to write to Datastore with a timestamp that is inconsistent with a partial * ordering on transactions that touch the same entities. */ +@DeleteAfterMigration class TimestampInversionException extends RuntimeException { static String getFileAndLine(StackTraceElement callsite) { diff --git a/core/src/main/java/google/registry/model/ofy/TransactionInfo.java b/core/src/main/java/google/registry/model/ofy/TransactionInfo.java index 4e4518f9c..5ae239d36 100644 --- a/core/src/main/java/google/registry/model/ofy/TransactionInfo.java +++ b/core/src/main/java/google/registry/model/ofy/TransactionInfo.java @@ -26,10 +26,12 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.googlecode.objectify.Key; +import google.registry.model.annotations.DeleteAfterMigration; import java.util.Map; import org.joda.time.DateTime; /** Metadata for an {@link Ofy} transaction that saves commit logs. */ +@DeleteAfterMigration public class TransactionInfo { @VisibleForTesting diff --git a/core/src/main/java/google/registry/model/replay/DatastoreAndSqlEntity.java b/core/src/main/java/google/registry/model/replay/DatastoreAndSqlEntity.java index eb6d54646..8fb61dc90 100644 --- a/core/src/main/java/google/registry/model/replay/DatastoreAndSqlEntity.java +++ b/core/src/main/java/google/registry/model/replay/DatastoreAndSqlEntity.java @@ -14,9 +14,11 @@ package google.registry.model.replay; +import google.registry.model.annotations.DeleteAfterMigration; import java.util.Optional; /** An entity that has the same Java object representation in SQL and Datastore. */ +@DeleteAfterMigration public interface DatastoreAndSqlEntity extends DatastoreEntity, SqlEntity { @Override diff --git a/core/src/main/java/google/registry/model/replay/DatastoreEntity.java b/core/src/main/java/google/registry/model/replay/DatastoreEntity.java index 8c719b22b..f78644e7a 100644 --- a/core/src/main/java/google/registry/model/replay/DatastoreEntity.java +++ b/core/src/main/java/google/registry/model/replay/DatastoreEntity.java @@ -14,6 +14,7 @@ package google.registry.model.replay; +import google.registry.model.annotations.DeleteAfterMigration; import java.util.Optional; /** @@ -24,6 +25,7 @@ import java.util.Optional; * transactions and data into the secondary SQL store during the first, Datastore-primary, phase of * the migration. */ +@DeleteAfterMigration public interface DatastoreEntity { Optional toSqlEntity(); diff --git a/core/src/main/java/google/registry/model/replay/DatastoreOnlyEntity.java b/core/src/main/java/google/registry/model/replay/DatastoreOnlyEntity.java index 621d7cb37..842e31a51 100644 --- a/core/src/main/java/google/registry/model/replay/DatastoreOnlyEntity.java +++ b/core/src/main/java/google/registry/model/replay/DatastoreOnlyEntity.java @@ -14,9 +14,11 @@ package google.registry.model.replay; +import google.registry.model.annotations.DeleteAfterMigration; import java.util.Optional; /** An entity that is only stored in Datastore, that should not be replayed to SQL. */ +@DeleteAfterMigration public interface DatastoreOnlyEntity extends DatastoreEntity { @Override default Optional toSqlEntity() { diff --git a/core/src/main/java/google/registry/model/replay/LastSqlTransaction.java b/core/src/main/java/google/registry/model/replay/LastSqlTransaction.java index 6d2e90e72..678e24c8b 100644 --- a/core/src/main/java/google/registry/model/replay/LastSqlTransaction.java +++ b/core/src/main/java/google/registry/model/replay/LastSqlTransaction.java @@ -22,9 +22,11 @@ import com.googlecode.objectify.Key; import com.googlecode.objectify.annotation.Entity; import com.googlecode.objectify.annotation.Id; import google.registry.model.ImmutableObject; +import google.registry.model.annotations.DeleteAfterMigration; /** Datastore entity to keep track of the last SQL transaction imported into the datastore. */ @Entity +@DeleteAfterMigration public class LastSqlTransaction extends ImmutableObject implements DatastoreOnlyEntity { /** The key for this singleton. */ diff --git a/core/src/main/java/google/registry/model/replay/NonReplicatedEntity.java b/core/src/main/java/google/registry/model/replay/NonReplicatedEntity.java index 0059f560e..7878a3132 100644 --- a/core/src/main/java/google/registry/model/replay/NonReplicatedEntity.java +++ b/core/src/main/java/google/registry/model/replay/NonReplicatedEntity.java @@ -14,6 +14,7 @@ package google.registry.model.replay; +import google.registry.model.annotations.DeleteAfterMigration; import java.util.Optional; /** @@ -21,6 +22,7 @@ import java.util.Optional; * *

We expect that this is a result of the entity being dually-written. */ +@DeleteAfterMigration public interface NonReplicatedEntity extends DatastoreEntity, SqlEntity { @Override diff --git a/core/src/main/java/google/registry/model/replay/ReplaySpecializer.java b/core/src/main/java/google/registry/model/replay/ReplaySpecializer.java index b09794772..26018d57c 100644 --- a/core/src/main/java/google/registry/model/replay/ReplaySpecializer.java +++ b/core/src/main/java/google/registry/model/replay/ReplaySpecializer.java @@ -14,6 +14,7 @@ package google.registry.model.replay; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.persistence.VKey; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -25,6 +26,7 @@ import java.lang.reflect.Method; * not directly present in the other database. This class allows us to do that by using reflection * to invoke special class methods if they are present. */ +@DeleteAfterMigration public class ReplaySpecializer { public static void beforeSqlDelete(VKey key) { diff --git a/core/src/main/java/google/registry/model/replay/ReplicateToDatastoreAction.java b/core/src/main/java/google/registry/model/replay/ReplicateToDatastoreAction.java index 2292bb4aa..794cfe840 100644 --- a/core/src/main/java/google/registry/model/replay/ReplicateToDatastoreAction.java +++ b/core/src/main/java/google/registry/model/replay/ReplicateToDatastoreAction.java @@ -27,6 +27,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableList; import com.google.common.flogger.FluentLogger; import google.registry.model.UpdateAutoTimestamp; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.model.common.DatabaseMigrationStateSchedule; import google.registry.model.common.DatabaseMigrationStateSchedule.MigrationState; import google.registry.model.common.DatabaseMigrationStateSchedule.ReplayDirection; @@ -53,6 +54,7 @@ import org.joda.time.Duration; automaticallyPrintOk = true, auth = Auth.AUTH_INTERNAL_OR_ADMIN) @VisibleForTesting +@DeleteAfterMigration public class ReplicateToDatastoreAction implements Runnable { public static final String PATH = "/_dr/cron/replicateToDatastore"; private static final FluentLogger logger = FluentLogger.forEnclosingClass(); diff --git a/core/src/main/java/google/registry/model/replay/SqlEntity.java b/core/src/main/java/google/registry/model/replay/SqlEntity.java index 6fb618790..e22f00572 100644 --- a/core/src/main/java/google/registry/model/replay/SqlEntity.java +++ b/core/src/main/java/google/registry/model/replay/SqlEntity.java @@ -16,6 +16,7 @@ package google.registry.model.replay; import static google.registry.persistence.transaction.TransactionManagerFactory.jpaTm; +import google.registry.model.annotations.DeleteAfterMigration; import java.util.Optional; /** @@ -25,6 +26,7 @@ import java.util.Optional; *

This will be used when replaying SQL transactions into Datastore, during the second, * SQL-primary, phase of the migration from Datastore to SQL. */ +@DeleteAfterMigration public interface SqlEntity { Optional toDatastoreEntity(); diff --git a/core/src/main/java/google/registry/model/replay/SqlOnlyEntity.java b/core/src/main/java/google/registry/model/replay/SqlOnlyEntity.java index 0c25349da..ac156b758 100644 --- a/core/src/main/java/google/registry/model/replay/SqlOnlyEntity.java +++ b/core/src/main/java/google/registry/model/replay/SqlOnlyEntity.java @@ -14,9 +14,11 @@ package google.registry.model.replay; +import google.registry.model.annotations.DeleteAfterMigration; import java.util.Optional; /** An entity that is only stored in SQL, that should not be replayed to Datastore. */ +@DeleteAfterMigration public interface SqlOnlyEntity extends SqlEntity { @Override default Optional toDatastoreEntity() { diff --git a/core/src/main/java/google/registry/model/replay/SqlReplayCheckpoint.java b/core/src/main/java/google/registry/model/replay/SqlReplayCheckpoint.java index 4f2df5633..89f8cedf1 100644 --- a/core/src/main/java/google/registry/model/replay/SqlReplayCheckpoint.java +++ b/core/src/main/java/google/registry/model/replay/SqlReplayCheckpoint.java @@ -17,12 +17,14 @@ package google.registry.model.replay; import static google.registry.persistence.transaction.TransactionManagerFactory.jpaTm; import static google.registry.util.DateTimeUtils.START_OF_TIME; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.model.common.CrossTldSingleton; import javax.persistence.Column; import javax.persistence.Entity; import org.joda.time.DateTime; @Entity +@DeleteAfterMigration public class SqlReplayCheckpoint extends CrossTldSingleton implements SqlOnlyEntity { @Column(nullable = false) diff --git a/core/src/main/java/google/registry/model/translators/CommitLogRevisionsTranslatorFactory.java b/core/src/main/java/google/registry/model/translators/CommitLogRevisionsTranslatorFactory.java index e25a67fc8..1ab51d66d 100644 --- a/core/src/main/java/google/registry/model/translators/CommitLogRevisionsTranslatorFactory.java +++ b/core/src/main/java/google/registry/model/translators/CommitLogRevisionsTranslatorFactory.java @@ -23,6 +23,7 @@ import static google.registry.util.DateTimeUtils.START_OF_TIME; import com.google.common.collect.ImmutableSortedMap; import com.google.common.collect.Ordering; import com.googlecode.objectify.Key; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.model.ofy.CommitLogManifest; import google.registry.persistence.transaction.Transaction; import org.joda.time.DateTime; @@ -31,11 +32,12 @@ import org.joda.time.DateTime; * Objectify translator for {@code ImmutableSortedMap>} fields. * *

This translator is responsible for doing three things: + * *

    - *
  1. Translating the data into two lists of {@code Date} and {@code Key} objects, in a manner - * similar to {@code @Mapify}. - *
  2. Inserting a key to the transaction's {@link CommitLogManifest} on save. - *
  3. Truncating the map to include only the last key per day for the last 30 days. + *
  4. Translating the data into two lists of {@code Date} and {@code Key} objects, in a manner + * similar to {@code @Mapify}. + *
  5. Inserting a key to the transaction's {@link CommitLogManifest} on save. + *
  6. Truncating the map to include only the last key per day for the last 30 days. *
* *

This allows you to have a field on your model object that tracks historical revisions of @@ -46,6 +48,7 @@ import org.joda.time.DateTime; * * @see google.registry.model.EppResource */ +@DeleteAfterMigration public final class CommitLogRevisionsTranslatorFactory extends ImmutableSortedMapTranslatorFactory> { diff --git a/core/src/main/java/google/registry/persistence/converter/DatabaseMigrationScheduleTransitionConverter.java b/core/src/main/java/google/registry/persistence/converter/DatabaseMigrationScheduleTransitionConverter.java index 979ae3a33..70f2b5ff6 100644 --- a/core/src/main/java/google/registry/persistence/converter/DatabaseMigrationScheduleTransitionConverter.java +++ b/core/src/main/java/google/registry/persistence/converter/DatabaseMigrationScheduleTransitionConverter.java @@ -15,6 +15,7 @@ package google.registry.persistence.converter; import com.google.common.collect.Maps; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.model.common.DatabaseMigrationStateSchedule; import google.registry.model.common.DatabaseMigrationStateSchedule.MigrationState; import google.registry.model.common.DatabaseMigrationStateSchedule.MigrationStateTransition; @@ -23,6 +24,7 @@ import javax.persistence.Converter; import org.joda.time.DateTime; /** JPA converter for {@link DatabaseMigrationStateSchedule} transitions. */ +@DeleteAfterMigration @Converter(autoApply = true) public class DatabaseMigrationScheduleTransitionConverter extends TimedTransitionPropertyConverterBase { diff --git a/core/src/main/java/google/registry/persistence/transaction/ReadOnlyCheckingEntityManager.java b/core/src/main/java/google/registry/persistence/transaction/ReadOnlyCheckingEntityManager.java index 7fe305666..227f99cb3 100644 --- a/core/src/main/java/google/registry/persistence/transaction/ReadOnlyCheckingEntityManager.java +++ b/core/src/main/java/google/registry/persistence/transaction/ReadOnlyCheckingEntityManager.java @@ -16,6 +16,7 @@ package google.registry.persistence.transaction; import static google.registry.persistence.transaction.TransactionManagerFactory.assertNotReadOnlyMode; +import google.registry.model.annotations.DeleteAfterMigration; import java.util.List; import java.util.Map; import javax.persistence.EntityGraph; @@ -34,6 +35,7 @@ import javax.persistence.criteria.CriteriaUpdate; import javax.persistence.metamodel.Metamodel; /** An {@link EntityManager} that throws exceptions on write actions if in read-only mode. */ +@DeleteAfterMigration public class ReadOnlyCheckingEntityManager implements EntityManager { private final EntityManager delegate; diff --git a/core/src/main/java/google/registry/persistence/transaction/ReadOnlyCheckingQuery.java b/core/src/main/java/google/registry/persistence/transaction/ReadOnlyCheckingQuery.java index e7b57c33a..345946253 100644 --- a/core/src/main/java/google/registry/persistence/transaction/ReadOnlyCheckingQuery.java +++ b/core/src/main/java/google/registry/persistence/transaction/ReadOnlyCheckingQuery.java @@ -16,6 +16,7 @@ package google.registry.persistence.transaction; import static google.registry.persistence.transaction.TransactionManagerFactory.assertNotReadOnlyMode; +import google.registry.model.annotations.DeleteAfterMigration; import java.util.Calendar; import java.util.Date; import java.util.List; @@ -29,6 +30,7 @@ import javax.persistence.Query; import javax.persistence.TemporalType; /** A {@link Query} that throws exceptions on write actions if in read-only mode. */ +@DeleteAfterMigration class ReadOnlyCheckingQuery implements Query { private final Query delegate; diff --git a/core/src/main/java/google/registry/persistence/transaction/ReadOnlyCheckingTypedQuery.java b/core/src/main/java/google/registry/persistence/transaction/ReadOnlyCheckingTypedQuery.java index f0077c835..e3eab9e2f 100644 --- a/core/src/main/java/google/registry/persistence/transaction/ReadOnlyCheckingTypedQuery.java +++ b/core/src/main/java/google/registry/persistence/transaction/ReadOnlyCheckingTypedQuery.java @@ -16,6 +16,7 @@ package google.registry.persistence.transaction; import static google.registry.persistence.transaction.TransactionManagerFactory.assertNotReadOnlyMode; +import google.registry.model.annotations.DeleteAfterMigration; import java.util.Calendar; import java.util.Date; import java.util.List; @@ -29,6 +30,7 @@ import javax.persistence.TemporalType; import javax.persistence.TypedQuery; /** A {@link TypedQuery } that throws exceptions on write actions if in read-only mode. */ +@DeleteAfterMigration class ReadOnlyCheckingTypedQuery implements TypedQuery { private final TypedQuery delegate; diff --git a/core/src/main/java/google/registry/tools/CompareDbBackups.java b/core/src/main/java/google/registry/tools/CompareDbBackups.java index e58c73b97..44e58bbdf 100644 --- a/core/src/main/java/google/registry/tools/CompareDbBackups.java +++ b/core/src/main/java/google/registry/tools/CompareDbBackups.java @@ -17,6 +17,7 @@ package google.registry.tools; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; import com.google.common.collect.Sets.SetView; +import google.registry.model.annotations.DeleteAfterMigration; import java.io.File; /** @@ -27,6 +28,7 @@ import java.io.File; * two-level directory hierarchy with data files in level-db format (output-*) and Datastore * metadata files (*.export_metadata). */ +@DeleteAfterMigration class CompareDbBackups { private static final String DS_V3_BACKUP_FILE_PREFIX = "output-"; diff --git a/core/src/main/java/google/registry/tools/GetDatabaseMigrationStateCommand.java b/core/src/main/java/google/registry/tools/GetDatabaseMigrationStateCommand.java index 1f858473c..8a4c680f2 100644 --- a/core/src/main/java/google/registry/tools/GetDatabaseMigrationStateCommand.java +++ b/core/src/main/java/google/registry/tools/GetDatabaseMigrationStateCommand.java @@ -15,12 +15,14 @@ package google.registry.tools; import com.beust.jcommander.Parameters; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.model.common.DatabaseMigrationStateSchedule; import google.registry.model.common.DatabaseMigrationStateSchedule.MigrationState; import google.registry.model.common.DatabaseMigrationStateSchedule.MigrationStateTransition; import google.registry.model.common.TimedTransitionProperty; /** A command to check the current Registry 3.0 migration state of the database. */ +@DeleteAfterMigration @Parameters(separators = " =", commandDescription = "Check current Registry 3.0 migration state") public class GetDatabaseMigrationStateCommand implements CommandWithRemoteApi { diff --git a/core/src/main/java/google/registry/tools/GetResourceByKeyCommand.java b/core/src/main/java/google/registry/tools/GetResourceByKeyCommand.java index 8a83e63b9..aa06cc23f 100644 --- a/core/src/main/java/google/registry/tools/GetResourceByKeyCommand.java +++ b/core/src/main/java/google/registry/tools/GetResourceByKeyCommand.java @@ -20,12 +20,12 @@ import static google.registry.model.ofy.ObjectifyService.auditedOfy; import com.beust.jcommander.Parameter; import com.beust.jcommander.Parameters; import google.registry.model.EppResource; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.persistence.VKey; import java.util.List; -/** - * Command to get info on a Datastore resource by websafe key. - */ +/** Command to get info on a Datastore resource by websafe key. */ +@DeleteAfterMigration @Parameters(separators = " =", commandDescription = "Fetch a Datastore resource by websafe key") final class GetResourceByKeyCommand implements CommandWithRemoteApi { diff --git a/core/src/main/java/google/registry/tools/GetSchemaCommand.java b/core/src/main/java/google/registry/tools/GetSchemaCommand.java index 5e1c628fc..3e2e77fa4 100644 --- a/core/src/main/java/google/registry/tools/GetSchemaCommand.java +++ b/core/src/main/java/google/registry/tools/GetSchemaCommand.java @@ -19,11 +19,13 @@ import static java.nio.charset.StandardCharsets.UTF_8; import com.beust.jcommander.Parameter; import com.beust.jcommander.Parameters; import google.registry.model.SchemaVersion; +import google.registry.model.annotations.DeleteAfterMigration; import java.io.File; import java.io.IOException; import java.nio.file.Files; /** Generates the schema file used for model versioning. */ +@DeleteAfterMigration @Parameters(commandDescription = "Generate a model schema file") final class GetSchemaCommand implements Command { diff --git a/core/src/main/java/google/registry/tools/GetSchemaTreeCommand.java b/core/src/main/java/google/registry/tools/GetSchemaTreeCommand.java index 305a176e2..fa3a9f581 100644 --- a/core/src/main/java/google/registry/tools/GetSchemaTreeCommand.java +++ b/core/src/main/java/google/registry/tools/GetSchemaTreeCommand.java @@ -29,6 +29,7 @@ import com.googlecode.objectify.annotation.Entity; import com.googlecode.objectify.annotation.EntitySubclass; import com.googlecode.objectify.annotation.Parent; import google.registry.model.BackupGroupRoot; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.model.annotations.NotBackedUp; import google.registry.model.annotations.VirtualEntity; import java.io.Serializable; @@ -40,6 +41,7 @@ import java.util.Map; import java.util.Set; /** Visualizes the schema parentage tree. */ +@DeleteAfterMigration @Parameters(commandDescription = "Generate a model schema file") final class GetSchemaTreeCommand implements Command { diff --git a/core/src/main/java/google/registry/tools/ImportDatastoreCommand.java b/core/src/main/java/google/registry/tools/ImportDatastoreCommand.java index ca4c537d7..7e2e3d31f 100644 --- a/core/src/main/java/google/registry/tools/ImportDatastoreCommand.java +++ b/core/src/main/java/google/registry/tools/ImportDatastoreCommand.java @@ -22,6 +22,7 @@ import com.google.common.base.Ascii; import com.google.common.collect.ImmutableList; import google.registry.export.datastore.DatastoreAdmin; import google.registry.export.datastore.Operation; +import google.registry.model.annotations.DeleteAfterMigration; import java.util.List; import java.util.concurrent.TimeUnit; import javax.annotation.Nullable; @@ -35,6 +36,7 @@ import org.joda.time.Duration; * href="http://playbooks/domain_registry/procedures/backup-restore-testing.md">the playbook for * the entire process. */ +@DeleteAfterMigration @Parameters(separators = " =", commandDescription = "Imports a backup of the Datastore.") public class ImportDatastoreCommand extends ConfirmingCommand { diff --git a/core/src/main/java/google/registry/tools/ListDatastoreOperationsCommand.java b/core/src/main/java/google/registry/tools/ListDatastoreOperationsCommand.java index bcef363f5..dca5fef9c 100644 --- a/core/src/main/java/google/registry/tools/ListDatastoreOperationsCommand.java +++ b/core/src/main/java/google/registry/tools/ListDatastoreOperationsCommand.java @@ -20,6 +20,7 @@ import com.google.api.client.json.JsonFactory; import com.google.api.client.json.jackson2.JacksonFactory; import google.registry.export.datastore.DatastoreAdmin; import google.registry.export.datastore.DatastoreAdmin.ListOperations; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.util.Clock; import java.util.Optional; import javax.annotation.Nullable; @@ -28,6 +29,7 @@ import org.joda.time.DateTime; import org.joda.time.Duration; /** Command that lists Datastore operations. */ +@DeleteAfterMigration @Parameters(separators = " =", commandDescription = "List Datastore operations.") public class ListDatastoreOperationsCommand implements Command { diff --git a/core/src/main/java/google/registry/tools/LoadSnapshotCommand.java b/core/src/main/java/google/registry/tools/LoadSnapshotCommand.java index 8319af524..a5d09d088 100644 --- a/core/src/main/java/google/registry/tools/LoadSnapshotCommand.java +++ b/core/src/main/java/google/registry/tools/LoadSnapshotCommand.java @@ -26,12 +26,14 @@ import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import google.registry.bigquery.BigqueryUtils.SourceFormat; import google.registry.export.AnnotatedEntities; +import google.registry.model.annotations.DeleteAfterMigration; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; /** Command to load Datastore snapshots into Bigquery. */ +@DeleteAfterMigration @Parameters(separators = " =", commandDescription = "Load Datastore snapshot into Bigquery") final class LoadSnapshotCommand extends BigqueryCommand { diff --git a/core/src/main/java/google/registry/tools/ReadEntityFromKeyPathCommand.java b/core/src/main/java/google/registry/tools/ReadEntityFromKeyPathCommand.java index 37973367d..43d28dd55 100644 --- a/core/src/main/java/google/registry/tools/ReadEntityFromKeyPathCommand.java +++ b/core/src/main/java/google/registry/tools/ReadEntityFromKeyPathCommand.java @@ -25,6 +25,7 @@ import com.google.common.io.CharStreams; import com.google.common.io.Files; import com.googlecode.objectify.Key; import google.registry.model.ImmutableObject; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.model.domain.DomainBase; import google.registry.persistence.VKey; import google.registry.util.NonFinalForTesting; @@ -40,6 +41,7 @@ import java.util.List; *

The key path is the value of column __key__.path of the entity's BigQuery table. Its value is * converted from the entity's key. */ +@DeleteAfterMigration abstract class ReadEntityFromKeyPathCommand extends MutatingCommand { @Parameter( diff --git a/core/src/main/java/google/registry/tools/SetDatabaseMigrationStateCommand.java b/core/src/main/java/google/registry/tools/SetDatabaseMigrationStateCommand.java index 199d3a78d..f880eced6 100644 --- a/core/src/main/java/google/registry/tools/SetDatabaseMigrationStateCommand.java +++ b/core/src/main/java/google/registry/tools/SetDatabaseMigrationStateCommand.java @@ -19,12 +19,14 @@ import static google.registry.persistence.transaction.TransactionManagerFactory. import com.beust.jcommander.Parameter; import com.beust.jcommander.Parameters; import com.google.common.collect.ImmutableSortedMap; +import google.registry.model.annotations.DeleteAfterMigration; import google.registry.model.common.DatabaseMigrationStateSchedule; import google.registry.model.common.DatabaseMigrationStateSchedule.MigrationState; import google.registry.tools.params.TransitionListParameter.MigrationStateTransitions; import org.joda.time.DateTime; /** Command to set the Registry 3.0 database migration state schedule. */ +@DeleteAfterMigration @Parameters( separators = " =", commandDescription = "Set the current database migration state schedule.")