diff --git a/build.gradle b/build.gradle index d5c905e73..c3629696e 100644 --- a/build.gradle +++ b/build.gradle @@ -84,10 +84,10 @@ tasks.build.dependsOn(tasks.checkLicense) // Paths to main and test sources. ext.projectRootDir = "${rootDir}" -// Tasks to deploy/stage all App Engine services +// Tasks to deploy/stage all services task deploy { group = 'deployment' - description = 'Deploys all services to App Engine.' + description = 'Deploys all services.' } task stage { diff --git a/common/src/main/java/google/registry/util/DateTimeUtils.java b/common/src/main/java/google/registry/util/DateTimeUtils.java index b82de8130..b085fbabd 100644 --- a/common/src/main/java/google/registry/util/DateTimeUtils.java +++ b/common/src/main/java/google/registry/util/DateTimeUtils.java @@ -33,8 +33,8 @@ public abstract class DateTimeUtils { /** * A date in the far future that we can treat as infinity. * - *
This value is (2^63-1)/1000 rounded down. AppEngine stores dates as 64 bit microseconds, but - * Java uses milliseconds, so this is the largest representable date that will survive a + *
This value is (2^63-1)/1000 rounded down. Postgres can store dates as 64 bit microseconds, + * but Java uses milliseconds, so this is the largest representable date that will survive a * round-trip through the database. */ public static final DateTime END_OF_TIME = new DateTime(Long.MAX_VALUE / 1000, DateTimeZone.UTC); diff --git a/config/nom_build.py b/config/nom_build.py index 45d02c9e7..095a91541 100644 --- a/config/nom_build.py +++ b/config/nom_build.py @@ -104,7 +104,7 @@ PROPERTIES = [ Property('testFilter', 'Comma separated list of test patterns, if specified run only ' 'these.'), - Property('environment', 'GAE Environment for deployment and staging.'), + Property('environment', 'Environment for deployment and staging.'), # Cloud SQL properties Property('dbServer', diff --git a/console-webapp/README.md b/console-webapp/README.md index bf4adaa37..99866a140 100644 --- a/console-webapp/README.md +++ b/console-webapp/README.md @@ -9,7 +9,7 @@ expected to change. ## Deployment -Webapp is deployed with the nomulus default service war to Google App Engine. +The webapp is deployed with the nomulus default service war to GKE. During nomulus default service war build task, gradle script triggers the following: diff --git a/core/build.gradle b/core/build.gradle index c40058ec8..f4c5b0bcc 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -110,7 +110,7 @@ configurations { // for details. nomulus_test - // Exclude non-canonical servlet-api jars. Our AppEngine deployment uses + // Exclude non-canonical servlet-api jars. Our deployment uses // javax.servlet:servlet-api:2.5 // For reasons we do not understand, marking the following dependencies as // compileOnly instead of compile does not exclude them from runtimeClasspath. diff --git a/core/src/main/java/google/registry/batch/CloudTasksUtils.java b/core/src/main/java/google/registry/batch/CloudTasksUtils.java index a11d48615..06b7d5fb1 100644 --- a/core/src/main/java/google/registry/batch/CloudTasksUtils.java +++ b/core/src/main/java/google/registry/batch/CloudTasksUtils.java @@ -55,8 +55,6 @@ import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.Optional; import java.util.Random; -import java.util.function.BiConsumer; -import java.util.function.Consumer; import java.util.function.Supplier; import org.joda.time.Duration; @@ -118,19 +116,13 @@ public class CloudTasksUtils implements Serializable { *
For GET requests we add them on to the URL, and for POST requests we add them in the body of * the request. * - *
The parameters {@code putHeadersFunction} and {@code setBodyFunction} are used so that this
- * method can be called with either an AppEngine HTTP request or a standard non-AppEngine HTTP
- * request. The two objects do not have the same methods, but both have ways of setting headers /
- * body.
- *
* @return the resulting path (unchanged for POST requests, with params added for GET requests)
*/
private static String processRequestParameters(
String path,
Method method,
Multimap The caller of this method is responsible for passing in the appropriate service based on the
- * runtime (GAE/GKE). Use the overload that takes an action class if possible.
+ * The caller of this method is responsible for passing in the appropriate service. Use the
+ * overload that takes an action class if possible.
*
* @param path the relative URI (staring with a slash and ending without one).
* @param method the HTTP method to be used for the request.
- * @param service the GAE/GKE service to route the request to.
+ * @param service the service to route the request to.
* @param params a multimap of URL query parameters. Duplicate keys are saved as is, and it is up
* to the server to process the duplicate keys.
* @return the enqueued task.
- * @see Specifyinig
- * the worker service
+ * @see Creating
+ * HTTP target tasks
*/
protected Task createTask(
String path, Method method, Action.Service service, Multimap Prefer this overload over the one where the path and service are explicitly defined, as this
- * class will automatically determine the service to use based on the action and the runtime.
+ * class will automatically determine the service to use based on the action.
*
* @param actionClazz the action class to run, must be annotated with {@link Action}.
* @param method the HTTP method to be used for the request.
* @param params a multimap of URL query parameters. Duplicate keys are saved as is, and it is up
* to the server to process the duplicate keys.
* @return the enqueued task.
- * @see Specifyinig
- * the worker service
+ * @see Creating
+ * HTTP target tasks
*/
public Task createTask(
Class extends Runnable> actionClazz, Method method, Multimap The caller of this method is responsible for passing in the appropriate service based on the
- * runtime (GAE/GKE). Use the overload that takes an action class if possible.
+ * The caller of this method is responsible for passing in the appropriate service. Use the
+ * overload that takes an action class if possible.
*
* @param path the relative URI (staring with a slash and ending without one).
* @param method the HTTP method to be used for the request.
- * @param service the GAE/GKE service to route the request to.
+ * @param service the service to route the request to.
* @param params a multimap of URL query parameters. Duplicate keys are saved as is, and it is up
* to the server to process the duplicate keys.
* @param jitterSeconds the number of seconds that a task is randomly delayed up to.
* @return the enqueued task.
- * @see Specifyinig
- * the worker service
+ * @see Creating
+ * HTTP target tasks
*/
public Task createTaskWithJitter(
String path,
@@ -271,7 +258,7 @@ public class CloudTasksUtils implements Serializable {
* Create a {@link Task} to be enqueued with a random delay up to {@code jitterSeconds}.
*
* Prefer this overload over the one where the path and service are explicitly defined, as this
- * class will automatically determine the service to use based on the action and the runtime.
+ * class will automatically determine the service to use based on the action.
*
* @param actionClazz the action class to run, must be annotated with {@link Action}.
* @param method the HTTP method to be used for the request.
@@ -279,9 +266,8 @@ public class CloudTasksUtils implements Serializable {
* to the server to process the duplicate keys.
* @param jitterSeconds the number of seconds that a task is randomly delayed up to.
* @return the enqueued task.
- * @see Specifyinig
- * the worker service
+ * @see Creating
+ * HTTP target tasks
*/
public Task createTaskWithJitter(
Class extends Runnable> actionClazz,
@@ -302,14 +288,13 @@ public class CloudTasksUtils implements Serializable {
*
* @param path the relative URI (staring with a slash and ending without one).
* @param method the HTTP method to be used for the request.
- * @param service the GAE/GKE service to route the request to.
+ * @param service the service to route the request to.
* @param params a multimap of URL query parameters. Duplicate keys are saved as is, and it is up
* to the server to process the duplicate keys.
* @param delay the amount of time that a task needs to be delayed for.
* @return the enqueued task.
- * @see Specifyinig
- * the worker service
+ * @see Creating
+ * HTTP target tasks
*/
private Task createTaskWithDelay(
String path,
@@ -330,7 +315,7 @@ public class CloudTasksUtils implements Serializable {
* Create a {@link Task} to be enqueued with delay of {@code duration}.
*
* Prefer this overload over the one where the path and service are explicitly defined, as this
- * class will automatically determine the service to use based on the action and the runtime.
+ * class will automatically determine the service to use based on the action.
*
* @param actionClazz the action class to run, must be annotated with {@link Action}.
* @param method the HTTP method to be used for the request.
@@ -338,9 +323,8 @@ public class CloudTasksUtils implements Serializable {
* to the server to process the duplicate keys.
* @param delay the amount of time that a task needs to be delayed for.
* @return the enqueued task.
- * @see Specifyinig
- * the worker service
+ * @see Creating
+ * HTTP target tasks
*/
public Task createTaskWithDelay(
Class extends Runnable> actionClazz,
diff --git a/core/src/main/java/google/registry/batch/RelockDomainAction.java b/core/src/main/java/google/registry/batch/RelockDomainAction.java
index 710ead346..f9a5ab5be 100644
--- a/core/src/main/java/google/registry/batch/RelockDomainAction.java
+++ b/core/src/main/java/google/registry/batch/RelockDomainAction.java
@@ -112,11 +112,11 @@ public class RelockDomainAction implements Runnable {
public void run() {
/* We wish to manually control our retry behavior, in order to limit the number of retries
* and/or notify registrars / support only after a certain number of retries, or only
- * with a certain type of failure. AppEngine will automatically retry on any non-2xx status
+ * with a certain type of failure. Cloud Tasks will automatically retry on any non-2xx status
* code, so return SC_NO_CONTENT (204) by default to avoid this auto-retry.
*
- * See https://cloud.google.com/appengine/docs/standard/java/taskqueue/push/retrying-tasks
- * for more details on retry behavior. */
+ * See https://docs.cloud.google.com/tasks/docs/configuring-queues#retry for more details on
+ * retry behavior. */
response.setStatus(SC_NO_CONTENT);
response.setContentType(MediaType.PLAIN_TEXT_UTF_8);
tm().transact(this::relockDomain);
diff --git a/core/src/main/java/google/registry/beam/common/RegistryPipelineWorkerInitializer.java b/core/src/main/java/google/registry/beam/common/RegistryPipelineWorkerInitializer.java
index 7b98135f6..5dd54019b 100644
--- a/core/src/main/java/google/registry/beam/common/RegistryPipelineWorkerInitializer.java
+++ b/core/src/main/java/google/registry/beam/common/RegistryPipelineWorkerInitializer.java
@@ -40,8 +40,6 @@ public class RegistryPipelineWorkerInitializer implements JvmInitializer {
@Override
public void beforeProcessing(PipelineOptions options) {
- // TODO(b/416299900): remove next line after GAE is removed.
- System.setProperty("google.registry.jetty", "true");
RegistryPipelineOptions registryOptions = options.as(RegistryPipelineOptions.class);
RegistryEnvironment environment = registryOptions.getRegistryEnvironment();
if (environment == null || environment.equals(RegistryEnvironment.UNITTEST)) {
diff --git a/core/src/main/java/google/registry/bigquery/BigqueryConnection.java b/core/src/main/java/google/registry/bigquery/BigqueryConnection.java
index 4f542896c..93bf6fae9 100644
--- a/core/src/main/java/google/registry/bigquery/BigqueryConnection.java
+++ b/core/src/main/java/google/registry/bigquery/BigqueryConnection.java
@@ -279,20 +279,6 @@ public class BigqueryConnection implements AutoCloseable {
private TableReference getTableReference() {
return table.getTableReference().clone();
}
-
- /** Returns a string representation of the TableReference for the wrapped table. */
- public String getStringReference() {
- return tableReferenceToString(table.getTableReference());
- }
-
- /** Returns a string representation of the given TableReference. */
- private static String tableReferenceToString(TableReference tableRef) {
- return String.format(
- "%s:%s.%s",
- tableRef.getProjectId(),
- tableRef.getDatasetId(),
- tableRef.getTableId());
- }
}
/**
@@ -398,29 +384,12 @@ public class BigqueryConnection implements AutoCloseable {
}
/**
- * Starts an asynchronous query job to dump the results of the specified query into a local
- * ImmutableTable object, row-keyed by the row number (indexed from 1), column-keyed by the
- * TableFieldSchema for that column, and with the value object as the cell value. Note that null
- * values will not actually be null, but they can be checked for using Data.isNull().
+ * Dumps the results of the specified query into a local ImmutableTable object, row-keyed by the
+ * row number (indexed from 1), column-keyed by the TableFieldSchema for that column, and with the
+ * value object as the cell value.
*
- * Returns a ListenableFuture that holds the ImmutableTable on success.
- */
- public ListenableFuture Note that null values will not actually be null, but they can be checked for using
+ * Data.isNull()
*/
public ImmutableTable The credential returned by the Cloud Runtime depends on the runtime environment:
*
* The Workspace domain must grant delegated admin access to the default service account user
- * (project-id@appspot.gserviceaccount.com on AppEngine) with all scopes in {@code defaultScopes}
- * and {@code delegationScopes}. In addition, the user {@code gSuiteOutgoingEmailAddress} must
- * have the permission to send emails.
+ * (nomulus-service-account@{project-id}.iam.gserviceaccount.com on GCP) with all scopes in {@code
+ * defaultScopes} and {@code delegationScopes}. In addition, the user {@code
+ * gSuiteOutgoingEmailAddress} must have the permission to send emails.
*/
@GmailDelegatedCredential
@Provides
diff --git a/core/src/main/java/google/registry/config/DelegatedCredentials.java b/core/src/main/java/google/registry/config/DelegatedCredentials.java
index cf7d716c3..b13567f32 100644
--- a/core/src/main/java/google/registry/config/DelegatedCredentials.java
+++ b/core/src/main/java/google/registry/config/DelegatedCredentials.java
@@ -55,8 +55,9 @@ import org.apache.commons.codec.binary.Base64;
*
* This class accepts the application-default-credential as {@code ServiceAccountSigner},
* avoiding the need for exported private keys. In this case, the default credential user itself
- * (project-id@appspot.gserviceaccount.com on AppEngine) must have domain-wide delegation to the
- * Workspace APIs. The default credential user also must have the Token Creator role to itself.
+ * (nomulus-service-account@{project-id}.iam.gserviceaccount.com on GCP) must have domain-wide
+ * delegation to the Workspace APIs. The default credential user also must have the Token Creator
+ * role to itself.
*
* If the user provides a credential {@code S} that carries its own private key, such as {@link
* com.google.auth.oauth2.ServiceAccountCredentials}, this class can use {@code S} to impersonate
diff --git a/core/src/main/java/google/registry/config/RegistryConfig.java b/core/src/main/java/google/registry/config/RegistryConfig.java
index 4f71d7d07..3f97dbe9d 100644
--- a/core/src/main/java/google/registry/config/RegistryConfig.java
+++ b/core/src/main/java/google/registry/config/RegistryConfig.java
@@ -961,7 +961,7 @@ public final class RegistryConfig {
}
/**
- * Number of times to retry a GAE operation when {@code TransientFailureException} is thrown.
+ * Number of times to retry an operation when {@code TransientFailureException} is thrown.
*
* The number of milliseconds it'll sleep before giving up is {@code (2^n - 2) * 100}.
*
@@ -1422,7 +1422,7 @@ public final class RegistryConfig {
}
}
- /** Returns the App Engine project ID, which is based off the environment name. */
+ /** Returns the project ID, which is based off the environment name. */
public static String getProjectId() {
return CONFIG_SETTINGS.get().gcpProject.projectId;
}
@@ -1448,51 +1448,6 @@ public final class RegistryConfig {
return makeUrl(String.format("https://%s.%s", service.getServiceId(), getBaseDomain()));
}
- /**
- * Returns the address of the Nomulus app default HTTP server.
- *
- * This is used by the {@code nomulus} tool to connect to the App Engine remote API.
- */
- public static URL getDefaultServer() {
- return makeUrl(CONFIG_SETTINGS.get().gcpProject.defaultServiceUrl);
- }
-
- /**
- * Returns the address of the Nomulus app backend HTTP server.
- *
- * This is used by the {@code nomulus} tool to connect to the App Engine remote API.
- */
- public static URL getBackendServer() {
- return makeUrl(CONFIG_SETTINGS.get().gcpProject.backendServiceUrl);
- }
-
- /**
- * Returns the address of the Nomulus app bsa HTTP server.
- *
- * This is used by the {@code nomulus} tool to connect to the App Engine remote API.
- */
- public static URL getBsaServer() {
- return makeUrl(CONFIG_SETTINGS.get().gcpProject.bsaServiceUrl);
- }
-
- /**
- * Returns the address of the Nomulus app tools HTTP server.
- *
- * This is used by the {@code nomulus} tool to connect to the App Engine remote API.
- */
- public static URL getToolsServer() {
- return makeUrl(CONFIG_SETTINGS.get().gcpProject.toolsServiceUrl);
- }
-
- /**
- * Returns the address of the Nomulus app pubapi HTTP server.
- *
- * This is used by the {@code nomulus} tool to connect to the App Engine remote API.
- */
- public static URL getPubapiServer() {
- return makeUrl(CONFIG_SETTINGS.get().gcpProject.pubapiServiceUrl);
- }
-
/** Returns the amount of time a singleton should be cached, before expiring. */
public static java.time.Duration getSingletonCacheRefreshDuration() {
return java.time.Duration.ofSeconds(CONFIG_SETTINGS.get().caching.singletonCacheRefreshSeconds);
diff --git a/core/src/main/java/google/registry/config/RegistryConfigSettings.java b/core/src/main/java/google/registry/config/RegistryConfigSettings.java
index b4b8c6fad..1f0a6cace 100644
--- a/core/src/main/java/google/registry/config/RegistryConfigSettings.java
+++ b/core/src/main/java/google/registry/config/RegistryConfigSettings.java
@@ -50,11 +50,6 @@ public class RegistryConfigSettings {
public long projectIdNumber;
public String locationId;
public boolean isLocal;
- public String defaultServiceUrl;
- public String backendServiceUrl;
- public String bsaServiceUrl;
- public String toolsServiceUrl;
- public String pubapiServiceUrl;
public String baseDomain;
}
diff --git a/core/src/main/java/google/registry/config/files/default-config.yaml b/core/src/main/java/google/registry/config/files/default-config.yaml
index 9aa6756c4..923e3d57f 100644
--- a/core/src/main/java/google/registry/config/files/default-config.yaml
+++ b/core/src/main/java/google/registry/config/files/default-config.yaml
@@ -12,17 +12,11 @@ gcpProject:
projectIdNumber: 123456789012
# Location of the GCP project, note that us-central1 and europe-west1 are special in that
# they are used without the trailing number in GCP commands and Google Cloud Console.
- # See: https://cloud.google.com/appengine/docs/locations as an example
+ # See: https://docs.cloud.google.com/compute/docs/regions-zones as an example
locationId: registry-location-id
# whether to use local/test credentials when connecting to the servers
isLocal: true
- # URLs of the services for the project.
- defaultServiceUrl: https://default.example.com
- backendServiceUrl: https://backend.example.com
- bsaServiceUrl: https://bsa.example.com
- toolsServiceUrl: https://tools.example.com
- pubapiServiceUrl: https://pubapi.example.com
# The base domain name of the registry service. Services are reachable at [service].baseDomain.
baseDomain: registry.test
@@ -32,9 +26,9 @@ gSuite:
domainName: domain-registry.example
# Display name and email address used on outgoing emails through G Suite.
- # The email address must be valid and have permission in the GAE app to send
- # emails. For more info see:
- # https://cloud.google.com/appengine/docs/standard/java/mail/#who_can_send_mail
+ # The email address must be valid and the domain must be set up to send emails.
+ # For more info see
+ # https://docs.cloud.google.com/compute/docs/tutorials/sending-mail
outgoingEmailDisplayName: Example Registry
outgoingEmailAddress: noreply@project-id.appspotmail.com
# TODO(b/279671974): reuse `outgoingEmailAddress` after migration
@@ -201,18 +195,16 @@ hibernate:
# but lock tables explicitly, either using framework-dependent API, or execute
# "select table for update" statements directly.
connectionIsolation: TRANSACTION_SERIALIZABLE
- # Whether to log all SQL queries to App Engine logs. Overridable at runtime.
+ # Whether to log all SQL queries. Overridable at runtime.
logSqlQueries: false
# Connection pool configurations.
hikariConnectionTimeout: 20000
# Cloud SQL connections are a relatively scarce resource (maximum is 1000 as
# of March 2021). The minimumIdle should be a small value so that machines may
- # release connections after a demand spike. The maximumPoolSize is set to 10
- # because that is the maximum number of concurrent requests a Nomulus server
- # instance can handle (as limited by AppEngine for basic/manual scaling). Note
- # that BEAM pipelines are not subject to the maximumPoolSize value defined
- # here. See PersistenceModule.java for more information.
+ # release connections after a demand spike. Note that BEAM pipelines are not
+ # subject to the maximumPoolSize value defined here. See PersistenceModule.java
+ # for more information.
hikariMinimumIdle: 1
hikariMaximumPoolSize: 40
hikariIdleTimeout: 300000
@@ -264,8 +256,8 @@ caching:
# Maximum total number of static premium list entry entities to cache in
# memory, across all premium lists for all TLDs. Tuning this up will use more
- # memory (and might require using larger App Engine instances). Note that
- # premium list entries that are absent are cached in addition to ones that are
+ # memory (and might require using larger instances). Note that premium list
+ # entries that are absent are cached in addition to ones that are
# present, so the total cache size is not bounded by the total number of
# premium price entries that exist.
staticPremiumListMaxCachedEntries: 200000
@@ -346,12 +338,8 @@ credentialOAuth:
localCredentialOauthScopes:
# View and manage data in all Google Cloud APIs.
- https://www.googleapis.com/auth/cloud-platform
- # Call App Engine APIs locally.
- - https://www.googleapis.com/auth/appengine.apis
# View your email address.
- https://www.googleapis.com/auth/userinfo.email
- # View and manage your applications deployed on Google App Engine
- - https://www.googleapis.com/auth/appengine.admin
# The lifetime of an access token generated by our custom credentials classes
# Must be shorter than one hour.
tokenRefreshDelaySeconds: 1800
@@ -433,7 +421,7 @@ misc:
spec11BccEmailAddresses:
- abuse@example.com
- # Number of times to retry a GAE operation when a transient exception is thrown.
+ # Number of times to retry an operation when a transient exception is thrown.
# The number of milliseconds it'll sleep before giving up is (2^n - 2) * 100.
transientFailureRetries: 12
diff --git a/core/src/main/java/google/registry/cron/TldFanoutAction.java b/core/src/main/java/google/registry/cron/TldFanoutAction.java
index 31957cf45..726703862 100644
--- a/core/src/main/java/google/registry/cron/TldFanoutAction.java
+++ b/core/src/main/java/google/registry/cron/TldFanoutAction.java
@@ -57,8 +57,7 @@ import java.util.stream.Stream;
*
* TODO(b/463732345): now that we're no longer on AppEngine, see if we can use the dnsjava
+ * library's {@link org.xbill.DNS.SimpleResolver} class instead of this (that requires {@link
+ * java.nio.channels.SocketChannel} which is not supported on AppEngine).
*/
public class DnsMessageTransport {
diff --git a/core/src/main/java/google/registry/flows/FlowReporter.java b/core/src/main/java/google/registry/flows/FlowReporter.java
index 3674cfbab..19e8e79c4 100644
--- a/core/src/main/java/google/registry/flows/FlowReporter.java
+++ b/core/src/main/java/google/registry/flows/FlowReporter.java
@@ -51,7 +51,7 @@ public class FlowReporter {
@Inject Class extends Flow> flowClass;
@Inject FlowReporter() {}
- /** Records information about the current flow execution in the GAE request logs. */
+ /** Records information about the current flow execution in the request logs. */
public void recordToLogs() {
// Explicitly log flow metadata separately from the EPP XML itself so that it stays compact
// enough to be sure to fit in a single log entry (the XML part in rare cases could be long
diff --git a/core/src/main/java/google/registry/flows/FlowRunner.java b/core/src/main/java/google/registry/flows/FlowRunner.java
index f1e6c202b..b93191a8f 100644
--- a/core/src/main/java/google/registry/flows/FlowRunner.java
+++ b/core/src/main/java/google/registry/flows/FlowRunner.java
@@ -73,7 +73,7 @@ public class FlowRunner {
eppRequestSource,
isDryRun ? "DRY_RUN" : "LIVE",
isSuperuser ? "SUPERUSER" : "NORMAL");
- // Record flow info to the GAE request logs for reporting purposes if it's not a dry run.
+ // Record flow info to the request logs for reporting purposes if it's not a dry run.
if (!isDryRun) {
flowReporter.recordToLogs();
}
diff --git a/core/src/main/java/google/registry/keyring/api/Keyring.java b/core/src/main/java/google/registry/keyring/api/Keyring.java
index cb64cdf10..db3d45877 100644
--- a/core/src/main/java/google/registry/keyring/api/Keyring.java
+++ b/core/src/main/java/google/registry/keyring/api/Keyring.java
@@ -44,7 +44,7 @@ public interface Keyring extends AutoCloseable {
* Returns public key for encrypting escrow deposits being staged to cloud storage.
*
* This adds an additional layer of security so cloud storage administrators won't be tempted
- * to go poking around the App Engine Cloud Console and see a dump of the entire database.
+ * to go poking around the Pantheon Cloud Console and see a dump of the entire database.
*
* This keypair should only be known to the domain registry shared registry system.
*
diff --git a/core/src/main/java/google/registry/model/common/Cursor.java b/core/src/main/java/google/registry/model/common/Cursor.java
index 8a30521de..554f21722 100644
--- a/core/src/main/java/google/registry/model/common/Cursor.java
+++ b/core/src/main/java/google/registry/model/common/Cursor.java
@@ -76,7 +76,7 @@ public class Cursor extends UpdateAutoTimestampEntity {
*
* The way we solve this problem is by having {@code RdeUploadAction} check this cursor
* before performing an upload for a given TLD. If the cursor is less than two hours old, the
- * action will fail with a status code above 300 and App Engine will keep retrying the action
+ * action will fail with a status code above 300 and Cloud Tasks will keep retrying the action
* until it's ready.
*/
RDE_UPLOAD_SFTP(true),
diff --git a/core/src/main/java/google/registry/module/ServletBase.java b/core/src/main/java/google/registry/module/ServletBase.java
index ff0f6a2b2..b558d096a 100644
--- a/core/src/main/java/google/registry/module/ServletBase.java
+++ b/core/src/main/java/google/registry/module/ServletBase.java
@@ -28,7 +28,7 @@ import java.util.concurrent.TimeoutException;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.joda.time.DateTime;
-/** Base for Servlets that handle all requests to our App Engine modules. */
+/** Base for Servlets that handle all requests to our modules. */
public class ServletBase extends HttpServlet {
private final RequestHandler> requestHandler;
diff --git a/core/src/main/java/google/registry/rde/EscrowTaskRunner.java b/core/src/main/java/google/registry/rde/EscrowTaskRunner.java
index 7a1ae5e0d..76c20ea46 100644
--- a/core/src/main/java/google/registry/rde/EscrowTaskRunner.java
+++ b/core/src/main/java/google/registry/rde/EscrowTaskRunner.java
@@ -33,10 +33,10 @@ import org.joda.time.Duration;
* Runner applying guaranteed reliability to an {@link EscrowTask}.
*
* This class implements the Locking Rolling Cursor pattern, which solves the problem of
- * how to reliably execute App Engine tasks which can't be made idempotent.
+ * how to reliably execute Cloud Tasks which can't be made idempotent.
*
* {@link LockHandler} is used to ensure only one task executes at a time for a given {@code
- * LockedCursorTask} subclass + TLD combination. This is necessary because App Engine tasks might
+ * LockedCursorTask} subclass + TLD combination. This is necessary because Cloud Task tasks might
* double-execute. Normally tasks solve this by being idempotent, but that's not possible for RDE,
* which writes to a GCS filename with a deterministic name. So locks are used to guarantee
* isolation. If we can't acquire the lock, it means the task is already running, so {@link
diff --git a/core/src/main/java/google/registry/rde/RdeStagingAction.java b/core/src/main/java/google/registry/rde/RdeStagingAction.java
index 6fde7d818..79c85243e 100644
--- a/core/src/main/java/google/registry/rde/RdeStagingAction.java
+++ b/core/src/main/java/google/registry/rde/RdeStagingAction.java
@@ -100,8 +100,8 @@ import org.joda.time.Duration;
*
* To identify the reduce worker request for a deposit in App Engine's log viewer, you can use
- * search text like {@code tld=soy}, {@code watermark=2015-01-01}, and {@code mode=FULL}.
+ * To identify the reduce worker request for a deposit in the log viewer, you can use search text
+ * like {@code tld=soy}, {@code watermark=2015-01-01}, and {@code mode=FULL}.
*
* This is useful for App Engine task queue handlers that want to display an error, but don't
- * want the task to automatically retry, since the status code is less than 300.
+ * This is useful for task queue handlers that want to display an error, but don't want the
+ * task to automatically retry, since the status code is less than 300.
*/
public static final class NoContentException extends HttpException {
public NoContentException(String message) {
diff --git a/core/src/main/java/google/registry/request/Modules.java b/core/src/main/java/google/registry/request/Modules.java
index 9ff211886..0dbd86e52 100644
--- a/core/src/main/java/google/registry/request/Modules.java
+++ b/core/src/main/java/google/registry/request/Modules.java
@@ -25,7 +25,7 @@ import java.net.HttpURLConnection;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
-/** Dagger modules for App Engine services and other vendor classes. */
+/** Dagger modules for services and other vendor classes. */
public final class Modules {
/** Dagger module for {@link UrlConnectionService}. */
diff --git a/core/src/main/java/google/registry/request/Router.java b/core/src/main/java/google/registry/request/Router.java
index 181e9ef87..29b5eae3c 100644
--- a/core/src/main/java/google/registry/request/Router.java
+++ b/core/src/main/java/google/registry/request/Router.java
@@ -69,7 +69,7 @@ final class Router {
ImmutableSortedMap.Builder Each of the App Engine services (frontend, backend, and tools) has a Dagger component used for
- * routing requests (e.g., FrontendRequestComponent). This class produces a text file representation
- * of the routing configuration, showing what paths map to what action classes, as well as the
- * properties of the action classes' annotations (which cover things like allowable HTTP methods,
- * authentication settings, etc.). The text file can be useful for documentation, and is also used
- * in unit tests to check against golden routing maps to find possibly unexpected changes.
+ * The request-handling service has a Dagger component (RequestComponent) used for routing
+ * requests. This class produces a text file representation of the routing configuration, showing
+ * what paths map to what action classes, as well as the properties of the action classes'
+ * annotations (which cover things like allowable HTTP methods, authentication settings, etc.). The
+ * text file can be useful for documentation, and is also used in unit tests to check against golden
+ * routing maps to find possibly unexpected changes.
*
* The file has fixed-width columns with a header row. The width of the columns is determined by
* the content to be displayed. The columns are:
diff --git a/core/src/main/java/google/registry/tmch/NordnVerifyAction.java b/core/src/main/java/google/registry/tmch/NordnVerifyAction.java
index d31d04610..7b2d48432 100644
--- a/core/src/main/java/google/registry/tmch/NordnVerifyAction.java
+++ b/core/src/main/java/google/registry/tmch/NordnVerifyAction.java
@@ -112,7 +112,7 @@ public final class NordnVerifyAction implements Runnable {
logger.atInfo().log(
"LORDN verify task %s response: HTTP response code %d", actionLogId, responseCode);
if (responseCode == SC_NO_CONTENT) {
- // Send a 400+ status code so App Engine will retry the task.
+ // Send a 400+ status code so Cloud Tasks will retry the task.
throw new ConflictException("Not ready");
}
if (responseCode != SC_OK) {
diff --git a/core/src/main/java/google/registry/tools/RegistryCli.java b/core/src/main/java/google/registry/tools/RegistryCli.java
index 7a00a103c..038a4ea34 100644
--- a/core/src/main/java/google/registry/tools/RegistryCli.java
+++ b/core/src/main/java/google/registry/tools/RegistryCli.java
@@ -70,9 +70,6 @@ final class RegistryCli implements CommandRunner {
+ "Beam pipelines")
private String sqlAccessInfoFile = null;
- @Parameter(names = "--gae", description = "Whether to use GAE runtime, instead of GKE")
- private boolean useGae = false;
-
@Parameter(names = "--canary", description = "Whether to connect to the canary instances")
private boolean useCanary = false;
@@ -169,7 +166,6 @@ final class RegistryCli implements CommandRunner {
DaggerRegistryToolComponent.builder()
.credentialFilePath(credentialJson)
.sqlAccessInfoFile(sqlAccessInfoFile)
- .useGke(!useGae)
.useCanary(useCanary)
.build();
@@ -203,7 +199,8 @@ final class RegistryCli implements CommandRunner {
"""
This error is likely the result of having another instance of
nomulus running at the same time. Check your system, shut down
- the other instance, and try again.""");
+ the other instance, and try again.\
+ """);
System.err.println("===================================================================");
} else {
throw e;
@@ -213,7 +210,7 @@ final class RegistryCli implements CommandRunner {
}
private ServiceConnection getConnection() {
- // Get the App Engine connection, advise the user if they are not currently logged in.
+ // Get the service connection, advise the user if they are not currently logged in.
if (connection == null) {
connection = component.serviceConnection();
}
diff --git a/core/src/main/java/google/registry/tools/RegistryToolComponent.java b/core/src/main/java/google/registry/tools/RegistryToolComponent.java
index 4846e77b3..6e9dd7ebf 100644
--- a/core/src/main/java/google/registry/tools/RegistryToolComponent.java
+++ b/core/src/main/java/google/registry/tools/RegistryToolComponent.java
@@ -180,9 +180,6 @@ interface RegistryToolComponent {
@BindsInstance
Builder sqlAccessInfoFile(@Nullable @Config("sqlAccessInfoFile") String sqlAccessInfoFile);
- @BindsInstance
- Builder useGke(@Config("useGke") boolean useGke);
-
@BindsInstance
Builder useCanary(@Config("useCanary") boolean useCanary);
diff --git a/core/src/main/java/google/registry/tools/RequestFactoryModule.java b/core/src/main/java/google/registry/tools/RequestFactoryModule.java
index 8b8a69883..16018c64d 100644
--- a/core/src/main/java/google/registry/tools/RequestFactoryModule.java
+++ b/core/src/main/java/google/registry/tools/RequestFactoryModule.java
@@ -29,8 +29,8 @@ import google.registry.util.OidcTokenUtils;
/**
* Module for providing the HttpRequestFactory.
*
- * Localhost connections go to the App Engine dev server. The dev server differs from most HTTP
- * connections in that they don't require OAuth2 credentials, but instead require a special cookie.
+ * Localhost connections go to the dev server. The dev server differs from most HTTP connections
+ * in that it doesn't require OAuth2 credentials, but instead requires a special cookie.
*/
@Module
final class RequestFactoryModule {
@@ -61,10 +61,9 @@ final class RequestFactoryModule {
AUTHORIZATION,
"Bearer "
+ OidcTokenUtils.createOidcToken(credentialsBundle, oauthClientId));
- // GAE request times out after 10 min, so here we set the timeout to 10 min. This is
+ // Requests time out after 10 min, so here we set the timeout to 10 min. This is
// needed to support some nomulus commands like updating premium lists that take
- // a lot of time to complete.
- // See
+ // a lot of time to complete. See
// https://developers.google.com/api-client-library/java/google-api-java-client/errors
request.setConnectTimeout(REQUEST_TIMEOUT_MS);
request.setReadTimeout(REQUEST_TIMEOUT_MS);
diff --git a/core/src/main/java/google/registry/tools/ServiceConnection.java b/core/src/main/java/google/registry/tools/ServiceConnection.java
index 068eaec07..24fef0777 100644
--- a/core/src/main/java/google/registry/tools/ServiceConnection.java
+++ b/core/src/main/java/google/registry/tools/ServiceConnection.java
@@ -47,8 +47,8 @@ import org.json.simple.JSONValue;
/**
* An HTTP connection to a service.
*
- * By default - connects to the TOOLS service in GAE and the BACKEND service in GKE. To create a
- * Connection to another service, call the {@link #withService} function.
+ * By default - connects the BACKEND service. To create a connection to another service, call the
+ * {@link #withService} function.
*/
public class ServiceConnection {
diff --git a/core/src/main/java/google/registry/tools/server/ListDomainsAction.java b/core/src/main/java/google/registry/tools/server/ListDomainsAction.java
index 421dccde9..4b1e424f1 100644
--- a/core/src/main/java/google/registry/tools/server/ListDomainsAction.java
+++ b/core/src/main/java/google/registry/tools/server/ListDomainsAction.java
@@ -22,7 +22,6 @@ import static google.registry.request.Action.Method.GET;
import static google.registry.request.Action.Method.POST;
import static google.registry.request.RequestParameters.PARAM_TLDS;
-import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import google.registry.model.EppResourceUtils;
@@ -31,7 +30,6 @@ import google.registry.request.Action;
import google.registry.request.Parameter;
import google.registry.request.auth.Auth;
import google.registry.util.Clock;
-import google.registry.util.NonFinalForTesting;
import jakarta.inject.Inject;
/** An action that lists domains, for use by the {@code nomulus list_domains} command. */
@@ -42,9 +40,6 @@ import jakarta.inject.Inject;
auth = Auth.AUTH_ADMIN)
public final class ListDomainsAction extends ListObjectsAction The ssl handler added can require client authentication, but it uses an {@link
* InsecureTrustManagerFactory}, which accepts any ssl certificate presented by the client, as long
* as the client uses the corresponding private key to establish SSL handshake. The client
- * certificate hash will be passed along to GAE as an HTTP header for verification (not handled by
- * this handler).
+ * certificate hash will be passed along to the service as an HTTP header for verification (not
+ * handled by this handler).
*/
@Sharable
public class SslServerInitializer This protocol is associated to a {@link NioSocketChannel} established by the proxy
* connecting to a remote peer.
diff --git a/proxy/src/main/java/google/registry/proxy/ProxyServer.java b/proxy/src/main/java/google/registry/proxy/ProxyServer.java
index 3dfb53bb7..bf5266e0c 100644
--- a/proxy/src/main/java/google/registry/proxy/ProxyServer.java
+++ b/proxy/src/main/java/google/registry/proxy/ProxyServer.java
@@ -50,7 +50,7 @@ import java.util.Queue;
import java.util.concurrent.TimeoutException;
/**
- * A multi-protocol proxy server that listens for protocols in {@link
+ * A multiprotocol proxy server that listens for protocols in {@link
* ProxyModule.ProxyComponent#protocols()} }.
*/
public class ProxyServer implements Runnable {
@@ -157,8 +157,8 @@ public class ProxyServer implements Runnable {
* Establishes an outbound relay channel and sets the relevant metadata on both channels.
*
* This method also adds a listener that is called when the established outbound connection
- * is closed. The outbound connection to GAE is *not* guaranteed to persist. In case that the
- * outbound connection closes but the inbound connection is still active, the listener calls
+ * is closed. The outbound connection to Nomulus is *not* guaranteed to persist. In case that
+ * the outbound connection closes but the inbound connection is still active, the listener calls
* this function again to re-establish another outbound connection. The metadata is also reset
* so that the inbound channel knows to relay to the new outbound channel.
*/
@@ -226,7 +226,7 @@ public class ProxyServer implements Runnable {
}
});
} else {
- // We cannot connect to GAE for unknown reasons, no relay can be done so drop the
+ // We cannot connect to Nomulus for unknown reasons, no relay can be done so drop the
// inbound connection as well.
logger.atSevere().withCause(future.cause()).log(
"Cannot connect to relay channel for %s channel: %s.",
diff --git a/proxy/src/main/java/google/registry/proxy/config/default-config.yaml b/proxy/src/main/java/google/registry/proxy/config/default-config.yaml
index 1a3c8e010..5205fa074 100644
--- a/proxy/src/main/java/google/registry/proxy/config/default-config.yaml
+++ b/proxy/src/main/java/google/registry/proxy/config/default-config.yaml
@@ -22,7 +22,7 @@ gcpScopes:
# Cloud KMS and Stackdriver Monitoring APIs.
- https://www.googleapis.com/auth/cloud-platform
- # The OAuth scope required to be included in the access token for the GAE app
+ # The OAuth scope required to be included in the access token for the app
# to authenticate.
- https://www.googleapis.com/auth/userinfo.email
diff --git a/proxy/src/main/java/google/registry/proxy/handler/BackendMetricsHandler.java b/proxy/src/main/java/google/registry/proxy/handler/BackendMetricsHandler.java
index 2d95df774..4c3378412 100644
--- a/proxy/src/main/java/google/registry/proxy/handler/BackendMetricsHandler.java
+++ b/proxy/src/main/java/google/registry/proxy/handler/BackendMetricsHandler.java
@@ -57,7 +57,7 @@ public class BackendMetricsHandler extends ChannelDuplexHandler {
private Channel relayedChannel;
/**
- * A queue that saves the time at which a request is sent to the GAE app.
+ * A queue that saves the time at which a request is sent to Nomulus.
*
* This queue is used to calculate HTTP request-response latency. HTTP 1.1 specification allows
* for pipelining, in which a client can sent multiple requests without waiting for each
@@ -123,7 +123,7 @@ public class BackendMetricsHandler extends ChannelDuplexHandler {
.addListener(
future -> {
if (future.isSuccess()) {
- // Only instrument request metrics when the request is actually sent to GAE.
+ // Only instrument request metrics when the request is actually sent to Nomulus
metrics.requestSent(relayedProtocolName, clientCertHash, bytes);
requestSentTimeQueue.add(clock.nowUtc());
}
diff --git a/proxy/src/main/java/google/registry/proxy/handler/HttpsRelayServiceHandler.java b/proxy/src/main/java/google/registry/proxy/handler/HttpsRelayServiceHandler.java
index 56deaf64e..278f66d8e 100644
--- a/proxy/src/main/java/google/registry/proxy/handler/HttpsRelayServiceHandler.java
+++ b/proxy/src/main/java/google/registry/proxy/handler/HttpsRelayServiceHandler.java
@@ -209,7 +209,7 @@ public abstract class HttpsRelayServiceHandler extends ByteToMessageCodec The structured logs written to {@code STDOUT} and {@code STDERR} will be picked up by GAE/GKE
+ * The structured logs written to {@code STDOUT} and {@code STDERR} will be picked up by GKE
* logging agent and automatically ingested by Stackdriver. Certain fields (see below) in the JSON
* will be converted to the corresponding {@code Log Entry}
diff --git a/util/src/main/java/google/registry/util/ProxyHttpHeaders.java b/util/src/main/java/google/registry/util/ProxyHttpHeaders.java
index 133c875f1..7a3a9a46a 100644
--- a/util/src/main/java/google/registry/util/ProxyHttpHeaders.java
+++ b/util/src/main/java/google/registry/util/ProxyHttpHeaders.java
@@ -36,9 +36,9 @@ public final class ProxyHttpHeaders {
/**
* Fallback HTTP header name used to pass the client IP address from the proxy to Nomulus.
*
- * Note that Java 17's servlet implementation (at least on App Engine) injects some seemingly
- * unrelated addresses into this header. We only use this as a fallback so the proxy can
- * transition to use the above header that should not be interfered with.
+ * Note that Java 17's servlet implementation may inject some seemingly unrelated addresses
+ * into this header. We only use this as a fallback so the proxy can transition to use the above
+ * header that should not be interfered with.
*/
public static final String FALLBACK_IP_ADDRESS = HttpHeaders.X_FORWARDED_FOR;
diff --git a/util/src/main/java/google/registry/util/TypeUtils.java b/util/src/main/java/google/registry/util/TypeUtils.java
index fafccbf51..850ec7f18 100644
--- a/util/src/main/java/google/registry/util/TypeUtils.java
+++ b/util/src/main/java/google/registry/util/TypeUtils.java
@@ -51,7 +51,7 @@ public final class TypeUtils {
public static There are always two YAML configuration files that are used: the {@code default-config.yaml}
* file, which contains default configuration for all environments, and the environment-specific
* {@code nomulus-config-ENVIRONMENT.yaml} file, which contains overrides for the default values for
- * environment-specific settings such as the App Engine project ID. The environment-specific
- * configuration can be blank, but it must exist.
+ * environment-specific settings such as the project ID. The environment-specific configuration can
+ * be blank, but it must exist.
*/
public final class YamlUtils {
- *
*
Logging
*
- * Error Handling
*
diff --git a/core/src/main/java/google/registry/reporting/icann/TransactionsReportingQueryBuilder.java b/core/src/main/java/google/registry/reporting/icann/TransactionsReportingQueryBuilder.java
index 7c395fc58..8e7e2afb4 100644
--- a/core/src/main/java/google/registry/reporting/icann/TransactionsReportingQueryBuilder.java
+++ b/core/src/main/java/google/registry/reporting/icann/TransactionsReportingQueryBuilder.java
@@ -107,7 +107,7 @@ public final class TransactionsReportingQueryBuilder implements QueryBuilder {
queriesBuilder.put(
getTableName(TRANSACTION_TRANSFER_LOSING, yearMonth), transactionTransferLosingQuery);
- // App Engine log table suffixes use YYYYMMDD format
+ // Log table suffixes use YYYYMMDD format
DateTimeFormatter logTableFormatter = DateTimeFormat.forPattern("yyyyMMdd");
String attemptedAddsQuery =
SqlTemplate.create(getQueryFromFile(ATTEMPTED_ADDS + ".sql"))
diff --git a/core/src/main/java/google/registry/request/HttpException.java b/core/src/main/java/google/registry/request/HttpException.java
index 28c160903..8ecd3b5e1 100644
--- a/core/src/main/java/google/registry/request/HttpException.java
+++ b/core/src/main/java/google/registry/request/HttpException.java
@@ -73,8 +73,8 @@ public abstract class HttpException extends RuntimeException {
/**
* Exception that causes a 204 response.
*
- *