diff --git a/core/src/main/java/google/registry/model/EntityClasses.java b/core/src/main/java/google/registry/model/EntityClasses.java
index b44fede22..1879c6278 100644
--- a/core/src/main/java/google/registry/model/EntityClasses.java
+++ b/core/src/main/java/google/registry/model/EntityClasses.java
@@ -26,7 +26,6 @@ import google.registry.model.host.HostHistory;
import google.registry.model.index.EppResourceIndex;
import google.registry.model.index.EppResourceIndexBucket;
import google.registry.model.reporting.HistoryEntry;
-import google.registry.model.server.ServerSecret;
/** Sets of classes of the Objectify-registered entities in use throughout the model. */
@DeleteAfterMigration
@@ -44,8 +43,7 @@ public final class EntityClasses {
GaeUserIdConverter.class,
HistoryEntry.class,
Host.class,
- HostHistory.class,
- ServerSecret.class);
+ HostHistory.class);
private EntityClasses() {}
}
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 f8ef86288..ed23ae0f4 100644
--- a/core/src/main/java/google/registry/model/common/CrossTldSingleton.java
+++ b/core/src/main/java/google/registry/model/common/CrossTldSingleton.java
@@ -19,7 +19,12 @@ import google.registry.model.ImmutableObject;
import google.registry.model.annotations.DeleteAfterMigration;
import javax.persistence.MappedSuperclass;
-/** A singleton entity in the database. */
+/**
+ * A singleton entity in the database.
+ *
+ *
This class should not be deleted after the migration, because there is still a concept of
+ * singleton in SQL. We should remove the ofy @Id annotation after all of its subclass are Ofy-free.
+ */
@DeleteAfterMigration
@MappedSuperclass
public abstract class CrossTldSingleton extends ImmutableObject {
diff --git a/core/src/main/java/google/registry/model/server/ServerSecret.java b/core/src/main/java/google/registry/model/server/ServerSecret.java
index 61a06a55e..0e8473986 100644
--- a/core/src/main/java/google/registry/model/server/ServerSecret.java
+++ b/core/src/main/java/google/registry/model/server/ServerSecret.java
@@ -19,27 +19,16 @@ import static google.registry.persistence.transaction.TransactionManagerFactory.
import com.github.benmanes.caffeine.cache.LoadingCache;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.primitives.Longs;
-import com.googlecode.objectify.annotation.Entity;
-import com.googlecode.objectify.annotation.Ignore;
-import com.googlecode.objectify.annotation.OnLoad;
-import com.googlecode.objectify.annotation.Unindex;
import google.registry.model.CacheUtils;
-import google.registry.model.annotations.NotBackedUp;
-import google.registry.model.annotations.NotBackedUp.Reason;
import google.registry.model.common.CrossTldSingleton;
import java.nio.ByteBuffer;
import java.util.Optional;
import java.util.UUID;
import javax.persistence.Column;
-import javax.persistence.PostLoad;
-import javax.persistence.Transient;
+import javax.persistence.Entity;
/** A secret number used for generating tokens (such as XSRF tokens). */
@Entity
-@javax.persistence.Entity
-@Unindex
-@NotBackedUp(reason = Reason.AUTO_GENERATED)
-// TODO(b/27427316): Replace this with an entry in KMSKeyring
public class ServerSecret extends CrossTldSingleton {
/**
@@ -52,13 +41,6 @@ public class ServerSecret extends CrossTldSingleton {
CacheUtils.newCacheBuilder().build(singletonClazz -> retrieveAndSaveSecret());
private static ServerSecret retrieveAndSaveSecret() {
- if (tm().isOfy()) {
- // Attempt a quick load if we're in ofy first to short-circuit sans transaction
- Optional secretWithoutTransaction = tm().loadSingleton(ServerSecret.class);
- if (secretWithoutTransaction.isPresent()) {
- return secretWithoutTransaction.get();
- }
- }
return tm().transact(
() -> {
// Make sure we're in a transaction and attempt to load any existing secret, then
@@ -77,35 +59,13 @@ public class ServerSecret extends CrossTldSingleton {
return CACHE.get(ServerSecret.class);
}
- /** Most significant 8 bytes of the UUID value (stored separately for legacy purposes). */
- @Transient long mostSignificant;
-
- /** Least significant 8 bytes of the UUID value (stored separately for legacy purposes). */
- @Transient long leastSignificant;
-
/** The UUID value itself. */
@Column(columnDefinition = "uuid")
- @Ignore
UUID secret;
- /** Convert the Datastore representation to SQL. */
- @OnLoad
- void onLoad() {
- secret = new UUID(mostSignificant, leastSignificant);
- }
-
- /** Convert the SQL representation to Datastore. */
- @PostLoad
- void postLoad() {
- mostSignificant = secret.getMostSignificantBits();
- leastSignificant = secret.getLeastSignificantBits();
- }
-
@VisibleForTesting
static ServerSecret create(UUID uuid) {
ServerSecret secret = new ServerSecret();
- secret.mostSignificant = uuid.getMostSignificantBits();
- secret.leastSignificant = uuid.getLeastSignificantBits();
secret.secret = uuid;
return secret;
}
@@ -113,8 +73,8 @@ public class ServerSecret extends CrossTldSingleton {
/** Returns the value of this ServerSecret as a byte array. */
public byte[] asBytes() {
return ByteBuffer.allocate(Longs.BYTES * 2)
- .putLong(mostSignificant)
- .putLong(leastSignificant)
+ .putLong(secret.getMostSignificantBits())
+ .putLong(secret.getLeastSignificantBits())
.array();
}
diff --git a/core/src/test/java/google/registry/model/common/ClassPathManagerTest.java b/core/src/test/java/google/registry/model/common/ClassPathManagerTest.java
index c22b4010f..b8d99be33 100644
--- a/core/src/test/java/google/registry/model/common/ClassPathManagerTest.java
+++ b/core/src/test/java/google/registry/model/common/ClassPathManagerTest.java
@@ -24,7 +24,6 @@ import google.registry.model.host.Host;
import google.registry.model.index.EppResourceIndex;
import google.registry.model.index.EppResourceIndexBucket;
import google.registry.model.reporting.HistoryEntry;
-import google.registry.model.server.ServerSecret;
import google.registry.testing.TestObject;
import org.junit.jupiter.api.Test;
@@ -48,7 +47,6 @@ public class ClassPathManagerTest {
.isEqualTo(EppResourceIndexBucket.class);
assertThat(ClassPathManager.getClass("Domain")).isEqualTo(Domain.class);
assertThat(ClassPathManager.getClass("HistoryEntry")).isEqualTo(HistoryEntry.class);
- assertThat(ClassPathManager.getClass("ServerSecret")).isEqualTo(ServerSecret.class);
assertThat(ClassPathManager.getClass("EppResourceIndex")).isEqualTo(EppResourceIndex.class);
}
@@ -90,7 +88,6 @@ public class ClassPathManagerTest {
.isEqualTo("EppResourceIndexBucket");
assertThat(ClassPathManager.getClassName(Domain.class)).isEqualTo("Domain");
assertThat(ClassPathManager.getClassName(HistoryEntry.class)).isEqualTo("HistoryEntry");
- assertThat(ClassPathManager.getClassName(ServerSecret.class)).isEqualTo("ServerSecret");
assertThat(ClassPathManager.getClassName(EppResourceIndex.class)).isEqualTo("EppResourceIndex");
}
diff --git a/core/src/test/resources/google/registry/model/schema.txt b/core/src/test/resources/google/registry/model/schema.txt
index f751964ff..21d451ef6 100644
--- a/core/src/test/resources/google/registry/model/schema.txt
+++ b/core/src/test/resources/google/registry/model/schema.txt
@@ -188,8 +188,3 @@ enum google.registry.model.reporting.HistoryEntry$Type {
RDE_IMPORT;
SYNTHETIC;
}
-class google.registry.model.server.ServerSecret {
- @Id long id;
- long leastSignificant;
- long mostSignificant;
-}