From 9b65f7109b30bdcfbf1a69babe304406b9be4f6f Mon Sep 17 00:00:00 2001 From: gbrodman Date: Thu, 23 Jun 2022 12:54:47 -0400 Subject: [PATCH] Remove CommitLog and MapReduce-related code (#1670) --- .../gradle/dependency-locks/compile.lockfile | 4 +- .../compileClasspath.lockfile | 4 +- .../dependency-locks/deploy_jar.lockfile | 4 +- .../gradle/dependency-locks/runtime.lockfile | 4 +- .../runtimeClasspath.lockfile | 4 +- .../dependency-locks/testCompile.lockfile | 4 +- .../testCompileClasspath.lockfile | 4 +- .../dependency-locks/testRuntime.lockfile | 4 +- .../testRuntimeClasspath.lockfile | 4 +- core/build.gradle | 1 - core/gradle/dependency-locks/compile.lockfile | 44 +- .../compileClasspath.lockfile | 44 +- core/gradle/dependency-locks/default.lockfile | 46 +- .../dependency-locks/deploy_jar.lockfile | 46 +- core/gradle/dependency-locks/jaxb.lockfile | 2 +- .../dependency-locks/nonprodCompile.lockfile | 44 +- .../nonprodCompileClasspath.lockfile | 44 +- .../dependency-locks/nonprodRuntime.lockfile | 44 +- .../nonprodRuntimeClasspath.lockfile | 44 +- core/gradle/dependency-locks/runtime.lockfile | 44 +- .../runtimeClasspath.lockfile | 46 +- .../dependency-locks/testCompile.lockfile | 47 +- .../testCompileClasspath.lockfile | 48 +- .../dependency-locks/testRuntime.lockfile | 49 +- .../testRuntimeClasspath.lockfile | 49 +- .../google/registry/backup/BackupModule.java | 111 --- .../google/registry/backup/BackupUtils.java | 83 -- .../backup/CommitLogCheckpointAction.java | 127 --- .../backup/CommitLogCheckpointStrategy.java | 164 ---- .../backup/DeleteOldCommitLogsAction.java | 346 ------- .../google/registry/backup/EntityImports.java | 114 --- .../backup/ExportCommitLogDiffAction.java | 223 ----- .../registry/backup/GcsDiffFileLister.java | 246 ----- .../backup/RestoreCommitLogsAction.java | 208 ---- .../registry/backup/VersionedEntity.java | 200 ---- .../google/registry/backup/package-info.java | 16 - .../registry/batch/AsyncTaskEnqueuer.java | 2 +- .../google/registry/batch/BatchModule.java | 16 +- .../batch/DeleteLoadTestDataAction.java | 98 +- .../batch/DeleteProberDataAction.java | 155 +-- .../ExpandRecurringBillingEventsAction.java | 156 +-- .../batch/ResaveAllEppResourcesAction.java | 128 --- .../ResaveAllEppResourcesPipelineAction.java | 8 +- .../java/google/registry/beam/rde/RdeIO.java | 3 - .../registry/config/RegistryConfig.java | 72 +- .../config/RegistryConfigSettings.java | 1 - .../registry/config/files/default-config.yaml | 4 - .../config/files/nomulus-config-unittest.yaml | 1 - .../registry/cron/CommitLogFanoutAction.java | 56 -- .../java/google/registry/dns/DnsQueue.java | 12 - .../env/alpha/default/WEB-INF/cron.xml | 5 +- .../env/common/backend/WEB-INF/web.xml | 78 +- .../registry/env/common/tools/WEB-INF/web.xml | 34 - .../env/production/default/WEB-INF/cron.xml | 5 +- .../registry/env/qa/default/WEB-INF/cron.xml | 1 - .../env/sandbox/default/WEB-INF/cron.xml | 5 +- .../export/ExportDomainListsAction.java | 185 +--- .../google/registry/flows/EppToolAction.java | 6 + .../registry/flows/host/HostDeleteFlow.java | 3 +- .../java/google/registry/gcs/GcsUtils.java | 2 +- .../registry/mapreduce/MapreduceModule.java | 57 -- .../registry/mapreduce/MapreduceRunner.java | 315 ------- .../registry/mapreduce/UnlockerOutput.java | 65 -- .../mapreduce/inputs/ChildEntityInput.java | 54 -- .../mapreduce/inputs/ChildEntityReader.java | 255 ----- .../mapreduce/inputs/ChunkingKeyInput.java | 112 --- .../inputs/CommitLogManifestInput.java | 64 -- .../inputs/CommitLogManifestReader.java | 98 -- .../mapreduce/inputs/ConcatenatingInput.java | 65 -- .../inputs/EppResourceBaseInput.java | 42 - .../inputs/EppResourceBaseReader.java | 89 -- .../inputs/EppResourceEntityInput.java | 42 - .../inputs/EppResourceEntityReader.java | 80 -- .../inputs/EppResourceIndexInput.java | 34 - .../inputs/EppResourceIndexReader.java | 45 - .../mapreduce/inputs/EppResourceInputs.java | 91 -- .../mapreduce/inputs/EppResourceKeyInput.java | 48 - .../inputs/EppResourceKeyReader.java | 56 -- .../registry/mapreduce/inputs/NullInput.java | 53 -- .../mapreduce/inputs/RetryingInputReader.java | 168 ---- .../google/registry/model/EntityClasses.java | 10 - .../google/registry/model/EppResource.java | 18 - .../registry/model/EppResourceUtils.java | 97 +- .../registry/model/eppcommon/StatusValue.java | 4 +- .../registry/model/ofy/CommitLogBucket.java | 169 ---- .../model/ofy/CommitLogCheckpoint.java | 111 --- .../model/ofy/CommitLogCheckpointRoot.java | 62 -- .../registry/model/ofy/CommitLogManifest.java | 89 -- .../registry/model/ofy/CommitLogMutation.java | 100 -- .../registry/model/ofy/CommitLoggedWork.java | 119 --- .../model/ofy/EntityWritePriorities.java | 63 -- .../registry/model/ofy/ObjectifyService.java | 2 - .../java/google/registry/model/ofy/Ofy.java | 51 +- .../registry/model/ofy/TransactionInfo.java | 32 - .../CommitLogRevisionsTranslatorFactory.java | 79 -- .../backend/BackendRequestComponent.java | 19 - .../module/tools/ToolsRequestComponent.java | 12 - .../google/registry/rde/BrdaCopyAction.java | 6 +- .../registry/rde/PendingDepositChecker.java | 18 +- .../google/registry/rde/RdeStagingAction.java | 178 ++-- .../google/registry/rde/RdeStagingMapper.java | 157 ---- .../registry/rde/RdeStagingReducer.java | 291 ------ .../registry/tools/CompareDbBackups.java | 87 -- .../tools/GenerateZoneFilesCommand.java | 1 - .../registry/tools/GetEppResourceCommand.java | 2 - .../tools/GetResourceByKeyCommand.java | 55 -- .../registry/tools/RecordAccumulator.java | 65 -- .../google/registry/tools/RegistryTool.java | 2 - .../tools/RemoveRegistryOneKeyCommand.java | 71 -- .../tools/server/GenerateZoneFilesAction.java | 18 +- .../tools/server/KillAllCommitLogsAction.java | 111 --- .../tools/server/KillAllEntitiesReducer.java | 47 - .../server/KillAllEppResourcesAction.java | 108 --- .../server/RefreshDnsForAllDomainsAction.java | 122 +-- .../server/ResaveAllHistoryEntriesAction.java | 83 -- .../beam/spec11_pipeline_metadata.json | 2 +- .../backup/CommitLogCheckpointActionTest.java | 104 -- .../CommitLogCheckpointStrategyTest.java | 307 ------ .../registry/backup/CommitLogExports.java | 231 ----- .../backup/DeleteOldCommitLogsActionTest.java | 140 --- .../registry/backup/EntityImportsTest.java | 87 -- .../backup/ExportCommitLogDiffActionTest.java | 464 --------- .../backup/GcsDiffFileListerTest.java | 212 ----- .../backup/RestoreCommitLogsActionTest.java | 346 ------- .../batch/DeleteProberDataActionTest.java | 63 +- ...xpandRecurringBillingEventsActionTest.java | 40 +- .../ResaveAllEppResourcesActionTest.java | 102 -- ...saveAllEppResourcesPipelineActionTest.java | 11 +- .../cron/CommitLogFanoutActionTest.java | 68 -- .../export/ExportDomainListsActionTest.java | 41 +- .../registry/flows/EppTestComponent.java | 2 +- .../flows/host/HostUpdateFlowTest.java | 2 +- .../inputs/ChildEntityInputTest.java | 375 -------- .../inputs/CommitLogManifestInputTest.java | 138 --- .../inputs/EppResourceInputsTest.java | 258 ----- .../registry/model/EppResourceUtilsTest.java | 106 --- .../model/common/ClassPathManagerTest.java | 21 - .../model/index/EppResourceIndexTest.java | 83 -- .../model/ofy/CommitLogBucketTest.java | 117 --- .../model/ofy/CommitLogCheckpointTest.java | 95 -- .../model/ofy/CommitLogMutationTest.java | 90 -- .../model/ofy/EntityWritePrioritiesTest.java | 53 -- .../registry/model/ofy/OfyCommitLogTest.java | 480 ---------- .../google/registry/model/ofy/OfyTest.java | 83 -- ...mmitLogRevisionsTranslatorFactoryTest.java | 183 ---- .../VKeyTranslatorFactoryTest.java | 17 - .../java/google/registry/rde/RdeFixtures.java | 10 +- .../rde/RdeStagingActionDatastoreTest.java | 885 ------------------ ...SqlTest.java => RdeStagingActionTest.java} | 2 +- .../registry/rde/RdeStagingMapperTest.java | 109 --- .../registry/rde/RdeStagingReducerTest.java | 254 ----- .../google/registry/rde/RdeTestSuite.java | 3 +- .../registry/testing/DatabaseHelper.java | 4 +- .../testing/mapreduce/MapreduceTestCase.java | 250 ----- .../registry/tools/CompareDbBackupsTest.java | 114 --- .../tools/GetResourceByKeyCommandTest.java | 235 ----- .../registry/tools/LevelDbFileBuilder.java | 63 -- .../tools/LevelDbFileBuilderTest.java | 123 --- .../registry/tools/RecordAccumulatorTest.java | 85 -- .../RemoveRegistryOneKeyCommandTest.java | 130 --- .../tools/ResaveEntitiesCommandTest.java | 88 -- .../ResaveEnvironmentEntitiesCommandTest.java | 92 -- .../tools/ResaveEppResourcesCommandTest.java | 60 -- .../server/GenerateZoneFilesActionTest.java | 2 +- .../server/KillAllCommitLogsActionTest.java | 106 --- .../server/KillAllEppResourcesActionTest.java | 178 ---- .../RefreshDnsForAllDomainsActionTest.java | 56 +- .../ResaveAllHistoryEntriesActionTest.java | 106 --- .../google/registry/model/schema.txt | 29 - .../module/backend/backend_routing.txt | 5 - .../registry/module/tools/tools_routing.txt | 4 - db/gradle/dependency-locks/default.lockfile | 26 +- .../dependency-locks/deploy_jar.lockfile | 26 +- .../runtimeClasspath.lockfile | 26 +- .../testRuntimeClasspath.lockfile | 26 +- dependencies.gradle | 1 - docs/code-structure.md | 22 - docs/gradle/dependency-locks/compile.lockfile | 46 +- .../compileClasspath.lockfile | 44 +- docs/gradle/dependency-locks/default.lockfile | 46 +- .../dependency-locks/deploy_jar.lockfile | 46 +- docs/gradle/dependency-locks/runtime.lockfile | 46 +- .../runtimeClasspath.lockfile | 46 +- .../dependency-locks/testCompile.lockfile | 46 +- .../testCompileClasspath.lockfile | 44 +- .../dependency-locks/testRuntime.lockfile | 46 +- .../testRuntimeClasspath.lockfile | 46 +- docs/operational-procedures/brda-deposits.md | 2 +- .../gradle/dependency-locks/compile.lockfile | 10 +- .../compileClasspath.lockfile | 14 +- .../gradle/dependency-locks/default.lockfile | 14 +- .../dependency-locks/deploy_jar.lockfile | 14 +- .../gradle/dependency-locks/runtime.lockfile | 14 +- .../runtimeClasspath.lockfile | 14 +- .../dependency-locks/testCompile.lockfile | 10 +- .../testCompileClasspath.lockfile | 14 +- .../dependency-locks/testRuntime.lockfile | 14 +- .../testRuntimeClasspath.lockfile | 14 +- .../gradle/dependency-locks/compile.lockfile | 14 +- .../compileClasspath.lockfile | 18 +- .../gradle/dependency-locks/default.lockfile | 14 +- .../dependency-locks/deploy_jar.lockfile | 14 +- .../gradle/dependency-locks/runtime.lockfile | 14 +- .../runtimeClasspath.lockfile | 14 +- .../dependency-locks/testCompile.lockfile | 14 +- .../testCompileClasspath.lockfile | 18 +- .../dependency-locks/testRuntime.lockfile | 14 +- .../testRuntimeClasspath.lockfile | 14 +- .../gradle/dependency-locks/compile.lockfile | 8 +- .../compileClasspath.lockfile | 8 +- .../gradle/dependency-locks/default.lockfile | 8 +- .../dependency-locks/deploy_jar.lockfile | 8 +- .../gradle/dependency-locks/runtime.lockfile | 8 +- .../runtimeClasspath.lockfile | 8 +- .../dependency-locks/testCompile.lockfile | 8 +- .../testCompileClasspath.lockfile | 8 +- .../dependency-locks/testRuntime.lockfile | 8 +- .../testRuntimeClasspath.lockfile | 8 +- .../gradle/dependency-locks/compile.lockfile | 46 +- .../compileClasspath.lockfile | 46 +- .../gradle/dependency-locks/default.lockfile | 46 +- .../gradle/dependency-locks/runtime.lockfile | 46 +- .../runtimeClasspath.lockfile | 46 +- .../dependency-locks/testCompile.lockfile | 46 +- .../testCompileClasspath.lockfile | 46 +- .../dependency-locks/testRuntime.lockfile | 46 +- .../testRuntimeClasspath.lockfile | 46 +- .../gradle/dependency-locks/compile.lockfile | 46 +- .../compileClasspath.lockfile | 46 +- .../gradle/dependency-locks/default.lockfile | 46 +- .../gradle/dependency-locks/runtime.lockfile | 46 +- .../runtimeClasspath.lockfile | 46 +- .../dependency-locks/testCompile.lockfile | 46 +- .../testCompileClasspath.lockfile | 46 +- .../dependency-locks/testRuntime.lockfile | 46 +- .../testRuntimeClasspath.lockfile | 46 +- .../gradle/dependency-locks/compile.lockfile | 46 +- .../compileClasspath.lockfile | 46 +- .../gradle/dependency-locks/default.lockfile | 46 +- .../gradle/dependency-locks/runtime.lockfile | 46 +- .../runtimeClasspath.lockfile | 46 +- .../dependency-locks/testCompile.lockfile | 46 +- .../testCompileClasspath.lockfile | 46 +- .../dependency-locks/testRuntime.lockfile | 46 +- .../testRuntimeClasspath.lockfile | 46 +- .../gradle/dependency-locks/compile.lockfile | 46 +- .../compileClasspath.lockfile | 46 +- .../gradle/dependency-locks/default.lockfile | 46 +- .../gradle/dependency-locks/runtime.lockfile | 46 +- .../runtimeClasspath.lockfile | 46 +- .../dependency-locks/testCompile.lockfile | 46 +- .../testCompileClasspath.lockfile | 46 +- .../dependency-locks/testRuntime.lockfile | 46 +- .../testRuntimeClasspath.lockfile | 46 +- util/gradle/dependency-locks/compile.lockfile | 10 +- .../compileClasspath.lockfile | 14 +- util/gradle/dependency-locks/default.lockfile | 10 +- .../dependency-locks/deploy_jar.lockfile | 10 +- util/gradle/dependency-locks/runtime.lockfile | 10 +- .../runtimeClasspath.lockfile | 10 +- .../dependency-locks/testCompile.lockfile | 10 +- .../testCompileClasspath.lockfile | 14 +- .../dependency-locks/testRuntime.lockfile | 10 +- .../testRuntimeClasspath.lockfile | 10 +- 264 files changed, 1834 insertions(+), 16033 deletions(-) delete mode 100644 core/src/main/java/google/registry/backup/BackupModule.java delete mode 100644 core/src/main/java/google/registry/backup/BackupUtils.java delete mode 100644 core/src/main/java/google/registry/backup/CommitLogCheckpointAction.java delete mode 100644 core/src/main/java/google/registry/backup/CommitLogCheckpointStrategy.java delete mode 100644 core/src/main/java/google/registry/backup/DeleteOldCommitLogsAction.java delete mode 100644 core/src/main/java/google/registry/backup/EntityImports.java delete mode 100644 core/src/main/java/google/registry/backup/ExportCommitLogDiffAction.java delete mode 100644 core/src/main/java/google/registry/backup/GcsDiffFileLister.java delete mode 100644 core/src/main/java/google/registry/backup/RestoreCommitLogsAction.java delete mode 100644 core/src/main/java/google/registry/backup/VersionedEntity.java delete mode 100644 core/src/main/java/google/registry/backup/package-info.java delete mode 100644 core/src/main/java/google/registry/batch/ResaveAllEppResourcesAction.java delete mode 100644 core/src/main/java/google/registry/cron/CommitLogFanoutAction.java delete mode 100644 core/src/main/java/google/registry/mapreduce/MapreduceModule.java delete mode 100644 core/src/main/java/google/registry/mapreduce/MapreduceRunner.java delete mode 100644 core/src/main/java/google/registry/mapreduce/UnlockerOutput.java delete mode 100644 core/src/main/java/google/registry/mapreduce/inputs/ChildEntityInput.java delete mode 100644 core/src/main/java/google/registry/mapreduce/inputs/ChildEntityReader.java delete mode 100644 core/src/main/java/google/registry/mapreduce/inputs/ChunkingKeyInput.java delete mode 100644 core/src/main/java/google/registry/mapreduce/inputs/CommitLogManifestInput.java delete mode 100644 core/src/main/java/google/registry/mapreduce/inputs/CommitLogManifestReader.java delete mode 100644 core/src/main/java/google/registry/mapreduce/inputs/ConcatenatingInput.java delete mode 100644 core/src/main/java/google/registry/mapreduce/inputs/EppResourceBaseInput.java delete mode 100644 core/src/main/java/google/registry/mapreduce/inputs/EppResourceBaseReader.java delete mode 100644 core/src/main/java/google/registry/mapreduce/inputs/EppResourceEntityInput.java delete mode 100644 core/src/main/java/google/registry/mapreduce/inputs/EppResourceEntityReader.java delete mode 100644 core/src/main/java/google/registry/mapreduce/inputs/EppResourceIndexInput.java delete mode 100644 core/src/main/java/google/registry/mapreduce/inputs/EppResourceIndexReader.java delete mode 100644 core/src/main/java/google/registry/mapreduce/inputs/EppResourceInputs.java delete mode 100644 core/src/main/java/google/registry/mapreduce/inputs/EppResourceKeyInput.java delete mode 100644 core/src/main/java/google/registry/mapreduce/inputs/EppResourceKeyReader.java delete mode 100644 core/src/main/java/google/registry/mapreduce/inputs/NullInput.java delete mode 100644 core/src/main/java/google/registry/mapreduce/inputs/RetryingInputReader.java delete mode 100644 core/src/main/java/google/registry/model/ofy/CommitLogBucket.java delete mode 100644 core/src/main/java/google/registry/model/ofy/CommitLogCheckpoint.java delete mode 100644 core/src/main/java/google/registry/model/ofy/CommitLogCheckpointRoot.java delete mode 100644 core/src/main/java/google/registry/model/ofy/CommitLogManifest.java delete mode 100644 core/src/main/java/google/registry/model/ofy/CommitLogMutation.java delete mode 100644 core/src/main/java/google/registry/model/ofy/EntityWritePriorities.java delete mode 100644 core/src/main/java/google/registry/model/translators/CommitLogRevisionsTranslatorFactory.java delete mode 100644 core/src/main/java/google/registry/rde/RdeStagingMapper.java delete mode 100644 core/src/main/java/google/registry/rde/RdeStagingReducer.java delete mode 100644 core/src/main/java/google/registry/tools/CompareDbBackups.java delete mode 100644 core/src/main/java/google/registry/tools/GetResourceByKeyCommand.java delete mode 100644 core/src/main/java/google/registry/tools/RecordAccumulator.java delete mode 100644 core/src/main/java/google/registry/tools/RemoveRegistryOneKeyCommand.java delete mode 100644 core/src/main/java/google/registry/tools/server/KillAllCommitLogsAction.java delete mode 100644 core/src/main/java/google/registry/tools/server/KillAllEntitiesReducer.java delete mode 100644 core/src/main/java/google/registry/tools/server/KillAllEppResourcesAction.java delete mode 100644 core/src/main/java/google/registry/tools/server/ResaveAllHistoryEntriesAction.java delete mode 100644 core/src/test/java/google/registry/backup/CommitLogCheckpointActionTest.java delete mode 100644 core/src/test/java/google/registry/backup/CommitLogCheckpointStrategyTest.java delete mode 100644 core/src/test/java/google/registry/backup/CommitLogExports.java delete mode 100644 core/src/test/java/google/registry/backup/DeleteOldCommitLogsActionTest.java delete mode 100644 core/src/test/java/google/registry/backup/EntityImportsTest.java delete mode 100644 core/src/test/java/google/registry/backup/ExportCommitLogDiffActionTest.java delete mode 100644 core/src/test/java/google/registry/backup/GcsDiffFileListerTest.java delete mode 100644 core/src/test/java/google/registry/backup/RestoreCommitLogsActionTest.java delete mode 100644 core/src/test/java/google/registry/batch/ResaveAllEppResourcesActionTest.java delete mode 100644 core/src/test/java/google/registry/cron/CommitLogFanoutActionTest.java delete mode 100644 core/src/test/java/google/registry/mapreduce/inputs/ChildEntityInputTest.java delete mode 100644 core/src/test/java/google/registry/mapreduce/inputs/CommitLogManifestInputTest.java delete mode 100644 core/src/test/java/google/registry/mapreduce/inputs/EppResourceInputsTest.java delete mode 100644 core/src/test/java/google/registry/model/index/EppResourceIndexTest.java delete mode 100644 core/src/test/java/google/registry/model/ofy/CommitLogBucketTest.java delete mode 100644 core/src/test/java/google/registry/model/ofy/CommitLogCheckpointTest.java delete mode 100644 core/src/test/java/google/registry/model/ofy/CommitLogMutationTest.java delete mode 100644 core/src/test/java/google/registry/model/ofy/EntityWritePrioritiesTest.java delete mode 100644 core/src/test/java/google/registry/model/ofy/OfyCommitLogTest.java delete mode 100644 core/src/test/java/google/registry/model/translators/CommitLogRevisionsTranslatorFactoryTest.java delete mode 100644 core/src/test/java/google/registry/rde/RdeStagingActionDatastoreTest.java rename core/src/test/java/google/registry/rde/{RdeStagingActionCloudSqlTest.java => RdeStagingActionTest.java} (99%) delete mode 100644 core/src/test/java/google/registry/rde/RdeStagingMapperTest.java delete mode 100644 core/src/test/java/google/registry/rde/RdeStagingReducerTest.java delete mode 100644 core/src/test/java/google/registry/testing/mapreduce/MapreduceTestCase.java delete mode 100644 core/src/test/java/google/registry/tools/CompareDbBackupsTest.java delete mode 100644 core/src/test/java/google/registry/tools/GetResourceByKeyCommandTest.java delete mode 100644 core/src/test/java/google/registry/tools/LevelDbFileBuilder.java delete mode 100644 core/src/test/java/google/registry/tools/LevelDbFileBuilderTest.java delete mode 100644 core/src/test/java/google/registry/tools/RecordAccumulatorTest.java delete mode 100644 core/src/test/java/google/registry/tools/RemoveRegistryOneKeyCommandTest.java delete mode 100644 core/src/test/java/google/registry/tools/ResaveEntitiesCommandTest.java delete mode 100644 core/src/test/java/google/registry/tools/ResaveEnvironmentEntitiesCommandTest.java delete mode 100644 core/src/test/java/google/registry/tools/ResaveEppResourcesCommandTest.java delete mode 100644 core/src/test/java/google/registry/tools/server/KillAllCommitLogsActionTest.java delete mode 100644 core/src/test/java/google/registry/tools/server/KillAllEppResourcesActionTest.java delete mode 100644 core/src/test/java/google/registry/tools/server/ResaveAllHistoryEntriesActionTest.java diff --git a/buildSrc/gradle/dependency-locks/compile.lockfile b/buildSrc/gradle/dependency-locks/compile.lockfile index c93489877..f4f60b75a 100644 --- a/buildSrc/gradle/dependency-locks/compile.lockfile +++ b/buildSrc/gradle/dependency-locks/compile.lockfile @@ -11,13 +11,13 @@ com.google.api.grpc:proto-google-iam-v1:1.3.4 com.google.api:api-common:2.2.0 com.google.api:gax-httpjson:0.103.1 com.google.api:gax:2.18.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.auth:google-auth-library-credentials:1.7.0 com.google.auth:google-auth-library-oauth2-http:1.7.0 com.google.auto.value:auto-value-annotations:1.9 com.google.cloud:google-cloud-core-http:2.7.1 com.google.cloud:google-cloud-core:2.7.1 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 diff --git a/buildSrc/gradle/dependency-locks/compileClasspath.lockfile b/buildSrc/gradle/dependency-locks/compileClasspath.lockfile index c93489877..f4f60b75a 100644 --- a/buildSrc/gradle/dependency-locks/compileClasspath.lockfile +++ b/buildSrc/gradle/dependency-locks/compileClasspath.lockfile @@ -11,13 +11,13 @@ com.google.api.grpc:proto-google-iam-v1:1.3.4 com.google.api:api-common:2.2.0 com.google.api:gax-httpjson:0.103.1 com.google.api:gax:2.18.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.auth:google-auth-library-credentials:1.7.0 com.google.auth:google-auth-library-oauth2-http:1.7.0 com.google.auto.value:auto-value-annotations:1.9 com.google.cloud:google-cloud-core-http:2.7.1 com.google.cloud:google-cloud-core:2.7.1 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 diff --git a/buildSrc/gradle/dependency-locks/deploy_jar.lockfile b/buildSrc/gradle/dependency-locks/deploy_jar.lockfile index c93489877..f4f60b75a 100644 --- a/buildSrc/gradle/dependency-locks/deploy_jar.lockfile +++ b/buildSrc/gradle/dependency-locks/deploy_jar.lockfile @@ -11,13 +11,13 @@ com.google.api.grpc:proto-google-iam-v1:1.3.4 com.google.api:api-common:2.2.0 com.google.api:gax-httpjson:0.103.1 com.google.api:gax:2.18.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.auth:google-auth-library-credentials:1.7.0 com.google.auth:google-auth-library-oauth2-http:1.7.0 com.google.auto.value:auto-value-annotations:1.9 com.google.cloud:google-cloud-core-http:2.7.1 com.google.cloud:google-cloud-core:2.7.1 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 diff --git a/buildSrc/gradle/dependency-locks/runtime.lockfile b/buildSrc/gradle/dependency-locks/runtime.lockfile index c93489877..f4f60b75a 100644 --- a/buildSrc/gradle/dependency-locks/runtime.lockfile +++ b/buildSrc/gradle/dependency-locks/runtime.lockfile @@ -11,13 +11,13 @@ com.google.api.grpc:proto-google-iam-v1:1.3.4 com.google.api:api-common:2.2.0 com.google.api:gax-httpjson:0.103.1 com.google.api:gax:2.18.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.auth:google-auth-library-credentials:1.7.0 com.google.auth:google-auth-library-oauth2-http:1.7.0 com.google.auto.value:auto-value-annotations:1.9 com.google.cloud:google-cloud-core-http:2.7.1 com.google.cloud:google-cloud-core:2.7.1 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 diff --git a/buildSrc/gradle/dependency-locks/runtimeClasspath.lockfile b/buildSrc/gradle/dependency-locks/runtimeClasspath.lockfile index c93489877..f4f60b75a 100644 --- a/buildSrc/gradle/dependency-locks/runtimeClasspath.lockfile +++ b/buildSrc/gradle/dependency-locks/runtimeClasspath.lockfile @@ -11,13 +11,13 @@ com.google.api.grpc:proto-google-iam-v1:1.3.4 com.google.api:api-common:2.2.0 com.google.api:gax-httpjson:0.103.1 com.google.api:gax:2.18.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.auth:google-auth-library-credentials:1.7.0 com.google.auth:google-auth-library-oauth2-http:1.7.0 com.google.auto.value:auto-value-annotations:1.9 com.google.cloud:google-cloud-core-http:2.7.1 com.google.cloud:google-cloud-core:2.7.1 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 diff --git a/buildSrc/gradle/dependency-locks/testCompile.lockfile b/buildSrc/gradle/dependency-locks/testCompile.lockfile index e1231adde..c49926a69 100644 --- a/buildSrc/gradle/dependency-locks/testCompile.lockfile +++ b/buildSrc/gradle/dependency-locks/testCompile.lockfile @@ -11,13 +11,13 @@ com.google.api.grpc:proto-google-iam-v1:1.3.4 com.google.api:api-common:2.2.0 com.google.api:gax-httpjson:0.103.1 com.google.api:gax:2.18.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.auth:google-auth-library-credentials:1.7.0 com.google.auth:google-auth-library-oauth2-http:1.7.0 com.google.auto.value:auto-value-annotations:1.9 com.google.cloud:google-cloud-core-http:2.7.1 com.google.cloud:google-cloud-core:2.7.1 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 diff --git a/buildSrc/gradle/dependency-locks/testCompileClasspath.lockfile b/buildSrc/gradle/dependency-locks/testCompileClasspath.lockfile index 681b189cb..70b4290e7 100644 --- a/buildSrc/gradle/dependency-locks/testCompileClasspath.lockfile +++ b/buildSrc/gradle/dependency-locks/testCompileClasspath.lockfile @@ -11,13 +11,13 @@ com.google.api.grpc:proto-google-iam-v1:1.3.4 com.google.api:api-common:2.2.0 com.google.api:gax-httpjson:0.103.1 com.google.api:gax:2.18.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.auth:google-auth-library-credentials:1.7.0 com.google.auth:google-auth-library-oauth2-http:1.7.0 com.google.auto.value:auto-value-annotations:1.9 com.google.cloud:google-cloud-core-http:2.7.1 com.google.cloud:google-cloud-core:2.7.1 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 diff --git a/buildSrc/gradle/dependency-locks/testRuntime.lockfile b/buildSrc/gradle/dependency-locks/testRuntime.lockfile index e1231adde..c49926a69 100644 --- a/buildSrc/gradle/dependency-locks/testRuntime.lockfile +++ b/buildSrc/gradle/dependency-locks/testRuntime.lockfile @@ -11,13 +11,13 @@ com.google.api.grpc:proto-google-iam-v1:1.3.4 com.google.api:api-common:2.2.0 com.google.api:gax-httpjson:0.103.1 com.google.api:gax:2.18.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.auth:google-auth-library-credentials:1.7.0 com.google.auth:google-auth-library-oauth2-http:1.7.0 com.google.auto.value:auto-value-annotations:1.9 com.google.cloud:google-cloud-core-http:2.7.1 com.google.cloud:google-cloud-core:2.7.1 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 diff --git a/buildSrc/gradle/dependency-locks/testRuntimeClasspath.lockfile b/buildSrc/gradle/dependency-locks/testRuntimeClasspath.lockfile index e1231adde..c49926a69 100644 --- a/buildSrc/gradle/dependency-locks/testRuntimeClasspath.lockfile +++ b/buildSrc/gradle/dependency-locks/testRuntimeClasspath.lockfile @@ -11,13 +11,13 @@ com.google.api.grpc:proto-google-iam-v1:1.3.4 com.google.api:api-common:2.2.0 com.google.api:gax-httpjson:0.103.1 com.google.api:gax:2.18.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.auth:google-auth-library-credentials:1.7.0 com.google.auth:google-auth-library-oauth2-http:1.7.0 com.google.auto.value:auto-value-annotations:1.9 com.google.cloud:google-cloud-core-http:2.7.1 com.google.cloud:google-cloud-core:2.7.1 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 diff --git a/core/build.gradle b/core/build.gradle index f133fbcf7..d74256477 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -196,7 +196,6 @@ dependencies { compile deps['com.google.apis:google-api-services-storage'] testCompile deps['com.google.appengine:appengine-api-stubs'] compile deps['com.google.appengine.tools:appengine-gcs-client'] - compile deps['com.google.appengine.tools:appengine-mapreduce'] compile deps['com.google.appengine.tools:appengine-pipeline'] compile deps['com.google.appengine:appengine-remote-api'] compile deps['com.google.auth:google-auth-library-credentials'] diff --git a/core/gradle/dependency-locks/compile.lockfile b/core/gradle/dependency-locks/compile.lockfile index 2df9f6ab7..d010792d7 100644 --- a/core/gradle/dependency-locks/compile.lockfile +++ b/core/gradle/dependency-locks/compile.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,7 +101,7 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -115,7 +113,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -123,7 +121,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -133,28 +131,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -211,7 +208,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -263,7 +259,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -280,13 +275,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:slf4j-api:1.7.36 org.springframework:spring-core:5.3.18 diff --git a/core/gradle/dependency-locks/compileClasspath.lockfile b/core/gradle/dependency-locks/compileClasspath.lockfile index 3838d118b..3f8f127d4 100644 --- a/core/gradle/dependency-locks/compileClasspath.lockfile +++ b/core/gradle/dependency-locks/compileClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -27,11 +26,11 @@ com.github.jnr:jnr-ffi:2.2.11 com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -84,10 +83,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -102,7 +100,7 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -114,7 +112,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -122,7 +120,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -132,28 +130,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -206,7 +203,6 @@ io.opencensus:opencensus-exporter-stats-stackdriver:0.31.0 io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -256,7 +252,6 @@ org.checkerframework:checker-qual:3.22.0 org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -272,13 +267,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:slf4j-api:1.7.36 org.springframework:spring-core:5.3.18 diff --git a/core/gradle/dependency-locks/default.lockfile b/core/gradle/dependency-locks/default.lockfile index c2e003060..f2545fc2f 100644 --- a/core/gradle/dependency-locks/default.lockfile +++ b/core/gradle/dependency-locks/default.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -273,7 +269,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -290,13 +285,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/core/gradle/dependency-locks/deploy_jar.lockfile b/core/gradle/dependency-locks/deploy_jar.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/core/gradle/dependency-locks/deploy_jar.lockfile +++ b/core/gradle/dependency-locks/deploy_jar.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/core/gradle/dependency-locks/jaxb.lockfile b/core/gradle/dependency-locks/jaxb.lockfile index d18855a7b..1be991e50 100644 --- a/core/gradle/dependency-locks/jaxb.lockfile +++ b/core/gradle/dependency-locks/jaxb.lockfile @@ -4,7 +4,7 @@ com.sun.activation:jakarta.activation:1.2.2 com.sun.activation:javax.activation:1.2.0 com.sun.xml.bind:jaxb-impl:2.3.3 -com.sun.xml.bind:jaxb-osgi:4.0.0 +com.sun.xml.bind:jaxb-osgi:4.0.0-M4 com.sun.xml.bind:jaxb-xjc:2.3.3 jakarta.activation:jakarta.activation-api:2.1.0 jakarta.xml.bind:jakarta.xml.bind-api:4.0.0 diff --git a/core/gradle/dependency-locks/nonprodCompile.lockfile b/core/gradle/dependency-locks/nonprodCompile.lockfile index 2df9f6ab7..d010792d7 100644 --- a/core/gradle/dependency-locks/nonprodCompile.lockfile +++ b/core/gradle/dependency-locks/nonprodCompile.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,7 +101,7 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -115,7 +113,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -123,7 +121,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -133,28 +131,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -211,7 +208,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -263,7 +259,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -280,13 +275,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:slf4j-api:1.7.36 org.springframework:spring-core:5.3.18 diff --git a/core/gradle/dependency-locks/nonprodCompileClasspath.lockfile b/core/gradle/dependency-locks/nonprodCompileClasspath.lockfile index d678a4772..213de1d0a 100644 --- a/core/gradle/dependency-locks/nonprodCompileClasspath.lockfile +++ b/core/gradle/dependency-locks/nonprodCompileClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -27,11 +26,11 @@ com.github.jnr:jnr-ffi:2.2.11 com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -84,10 +83,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -102,7 +100,7 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -114,7 +112,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -122,7 +120,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -132,28 +130,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -206,7 +203,6 @@ io.opencensus:opencensus-exporter-stats-stackdriver:0.31.0 io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -257,7 +253,6 @@ org.checkerframework:checker-qual:3.22.0 org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -274,13 +269,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:slf4j-api:1.7.36 org.springframework:spring-core:5.3.18 diff --git a/core/gradle/dependency-locks/nonprodRuntime.lockfile b/core/gradle/dependency-locks/nonprodRuntime.lockfile index 7b6396786..9381f767a 100644 --- a/core/gradle/dependency-locks/nonprodRuntime.lockfile +++ b/core/gradle/dependency-locks/nonprodRuntime.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,7 +101,7 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -115,7 +113,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -123,7 +121,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -133,28 +131,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -218,7 +215,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -289,13 +284,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/core/gradle/dependency-locks/nonprodRuntimeClasspath.lockfile b/core/gradle/dependency-locks/nonprodRuntimeClasspath.lockfile index 7b6396786..9381f767a 100644 --- a/core/gradle/dependency-locks/nonprodRuntimeClasspath.lockfile +++ b/core/gradle/dependency-locks/nonprodRuntimeClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,7 +101,7 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -115,7 +113,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -123,7 +121,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -133,28 +131,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -218,7 +215,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -289,13 +284,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/core/gradle/dependency-locks/runtime.lockfile b/core/gradle/dependency-locks/runtime.lockfile index 7b6396786..9381f767a 100644 --- a/core/gradle/dependency-locks/runtime.lockfile +++ b/core/gradle/dependency-locks/runtime.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,7 +101,7 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -115,7 +113,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -123,7 +121,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -133,28 +131,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -218,7 +215,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -289,13 +284,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/core/gradle/dependency-locks/runtimeClasspath.lockfile b/core/gradle/dependency-locks/runtimeClasspath.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/core/gradle/dependency-locks/runtimeClasspath.lockfile +++ b/core/gradle/dependency-locks/runtimeClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/core/gradle/dependency-locks/testCompile.lockfile b/core/gradle/dependency-locks/testCompile.lockfile index c3523d3ad..7ee9cf34d 100644 --- a/core/gradle/dependency-locks/testCompile.lockfile +++ b/core/gradle/dependency-locks/testCompile.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-api-stubs:2.0.5 @@ -104,7 +102,7 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -112,12 +110,12 @@ com.google.cloud:google-cloud-core-http:2.7.1 com.google.cloud:google-cloud-core:2.7.1 com.google.cloud:google-cloud-firestore:3.0.14 com.google.cloud:google-cloud-monitoring:1.82.0 -com.google.cloud:google-cloud-nio:0.124.4 +com.google.cloud:google-cloud-nio:0.124.2 com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -125,7 +123,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -136,12 +134,12 @@ com.google.guava:guava-testlib:31.1-jre com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 @@ -149,18 +147,17 @@ com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:contrib:1.0.7 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 com.google.truth.extensions:truth-java8-extension:1.1.3 com.google.truth:truth:1.1.3 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -220,7 +217,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -273,7 +269,7 @@ org.apache.mina:mina-core:2.1.6 org.apache.sshd:sshd-core:2.0.0 org.apache.sshd:sshd-scp:2.0.0 org.apache.sshd:sshd-sftp:2.0.0 -org.apache.tomcat:tomcat-annotations-api:10.1.0-M16 +org.apache.tomcat:tomcat-annotations-api:10.1.0-M15 org.bouncycastle:bcpg-jdk15on:1.67 org.bouncycastle:bcpkix-jdk15on:1.67 org.bouncycastle:bcprov-jdk15on:1.67 @@ -283,7 +279,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -324,7 +319,7 @@ org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.seleniumhq.selenium:selenium-api:3.141.59 org.seleniumhq.selenium:selenium-chrome-driver:3.141.59 diff --git a/core/gradle/dependency-locks/testCompileClasspath.lockfile b/core/gradle/dependency-locks/testCompileClasspath.lockfile index 691a0f51a..4ff791ced 100644 --- a/core/gradle/dependency-locks/testCompileClasspath.lockfile +++ b/core/gradle/dependency-locks/testCompileClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -27,11 +26,11 @@ com.github.jnr:jnr-ffi:2.2.11 com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -84,10 +83,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-api-stubs:2.0.5 @@ -103,7 +101,7 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -111,12 +109,12 @@ com.google.cloud:google-cloud-core-http:2.7.1 com.google.cloud:google-cloud-core:2.7.1 com.google.cloud:google-cloud-firestore:3.0.14 com.google.cloud:google-cloud-monitoring:1.82.0 -com.google.cloud:google-cloud-nio:0.124.4 +com.google.cloud:google-cloud-nio:0.124.2 com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -135,12 +133,12 @@ com.google.guava:guava-testlib:31.1-jre com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 @@ -148,18 +146,17 @@ com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:contrib:1.0.7 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 com.google.truth.extensions:truth-java8-extension:1.1.3 com.google.truth:truth:1.1.3 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -215,7 +212,6 @@ io.opencensus:opencensus-exporter-stats-stackdriver:0.31.0 io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -268,7 +264,7 @@ org.apache.mina:mina-core:2.1.6 org.apache.sshd:sshd-core:2.0.0 org.apache.sshd:sshd-scp:2.0.0 org.apache.sshd:sshd-sftp:2.0.0 -org.apache.tomcat:tomcat-annotations-api:10.1.0-M16 +org.apache.tomcat:tomcat-annotations-api:10.1.0-M15 org.apiguardian:apiguardian-api:1.1.2 org.bouncycastle:bcpg-jdk15on:1.67 org.bouncycastle:bcpkix-jdk15on:1.67 @@ -278,7 +274,6 @@ org.checkerframework:checker-qual:3.22.0 org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -311,14 +306,13 @@ org.mockito:mockito-core:4.6.1 org.mockito:mockito-junit-jupiter:4.6.1 org.mortbay.jetty:jetty-util:6.1.26 org.mortbay.jetty:jetty:6.1.26 -org.objenesis:objenesis:1.2 org.opentest4j:opentest4j:1.2.0 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.seleniumhq.selenium:selenium-api:3.141.59 org.seleniumhq.selenium:selenium-chrome-driver:3.141.59 diff --git a/core/gradle/dependency-locks/testRuntime.lockfile b/core/gradle/dependency-locks/testRuntime.lockfile index 08947b550..28bb6b1ed 100644 --- a/core/gradle/dependency-locks/testRuntime.lockfile +++ b/core/gradle/dependency-locks/testRuntime.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-api-stubs:2.0.5 @@ -104,8 +102,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -113,12 +111,12 @@ com.google.cloud:google-cloud-core-http:2.7.1 com.google.cloud:google-cloud-core:2.7.1 com.google.cloud:google-cloud-firestore:3.0.14 com.google.cloud:google-cloud-monitoring:1.82.0 -com.google.cloud:google-cloud-nio:0.124.4 +com.google.cloud:google-cloud-nio:0.124.2 com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -126,7 +124,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -137,12 +135,12 @@ com.google.guava:guava-testlib:31.1-jre com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 @@ -150,18 +148,17 @@ com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:contrib:1.0.7 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 com.google.truth.extensions:truth-java8-extension:1.1.3 com.google.truth:truth:1.1.3 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -229,7 +226,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -283,7 +279,7 @@ org.apache.mina:mina-core:2.1.6 org.apache.sshd:sshd-core:2.0.0 org.apache.sshd:sshd-scp:2.0.0 org.apache.sshd:sshd-sftp:2.0.0 -org.apache.tomcat:tomcat-annotations-api:10.1.0-M16 +org.apache.tomcat:tomcat-annotations-api:10.1.0-M15 org.bouncycastle:bcpg-jdk15on:1.67 org.bouncycastle:bcpkix-jdk15on:1.67 org.bouncycastle:bcprov-jdk15on:1.67 @@ -293,7 +289,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -334,7 +329,7 @@ org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.seleniumhq.selenium:selenium-api:3.141.59 org.seleniumhq.selenium:selenium-chrome-driver:3.141.59 diff --git a/core/gradle/dependency-locks/testRuntimeClasspath.lockfile b/core/gradle/dependency-locks/testRuntimeClasspath.lockfile index cebd746d0..770cdce26 100644 --- a/core/gradle/dependency-locks/testRuntimeClasspath.lockfile +++ b/core/gradle/dependency-locks/testRuntimeClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-api-stubs:2.0.5 @@ -104,8 +102,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -113,12 +111,12 @@ com.google.cloud:google-cloud-core-http:2.7.1 com.google.cloud:google-cloud-core:2.7.1 com.google.cloud:google-cloud-firestore:3.0.14 com.google.cloud:google-cloud-monitoring:1.82.0 -com.google.cloud:google-cloud-nio:0.124.4 +com.google.cloud:google-cloud-nio:0.124.2 com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -126,7 +124,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -137,12 +135,12 @@ com.google.guava:guava-testlib:31.1-jre com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 @@ -150,18 +148,17 @@ com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:contrib:1.0.7 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 com.google.truth.extensions:truth-java8-extension:1.1.3 com.google.truth:truth:1.1.3 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -229,7 +226,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -283,7 +279,7 @@ org.apache.mina:mina-core:2.1.6 org.apache.sshd:sshd-core:2.0.0 org.apache.sshd:sshd-scp:2.0.0 org.apache.sshd:sshd-sftp:2.0.0 -org.apache.tomcat:tomcat-annotations-api:10.1.0-M16 +org.apache.tomcat:tomcat-annotations-api:10.1.0-M15 org.bouncycastle:bcpg-jdk15on:1.67 org.bouncycastle:bcpkix-jdk15on:1.67 org.bouncycastle:bcprov-jdk15on:1.67 @@ -293,7 +289,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -334,7 +329,7 @@ org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.seleniumhq.selenium:selenium-api:3.141.59 org.seleniumhq.selenium:selenium-chrome-driver:3.141.59 diff --git a/core/src/main/java/google/registry/backup/BackupModule.java b/core/src/main/java/google/registry/backup/BackupModule.java deleted file mode 100644 index bea2d9902..000000000 --- a/core/src/main/java/google/registry/backup/BackupModule.java +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.backup; - -import static com.google.appengine.api.ThreadManager.currentRequestThreadFactory; -import static com.google.common.util.concurrent.MoreExecutors.listeningDecorator; -import static google.registry.backup.ExportCommitLogDiffAction.LOWER_CHECKPOINT_TIME_PARAM; -import static google.registry.backup.ExportCommitLogDiffAction.UPPER_CHECKPOINT_TIME_PARAM; -import static google.registry.backup.RestoreCommitLogsAction.BUCKET_OVERRIDE_PARAM; -import static google.registry.backup.RestoreCommitLogsAction.FROM_TIME_PARAM; -import static google.registry.backup.RestoreCommitLogsAction.TO_TIME_PARAM; -import static google.registry.request.RequestParameters.extractOptionalParameter; -import static google.registry.request.RequestParameters.extractRequiredDatetimeParameter; -import static google.registry.request.RequestParameters.extractRequiredParameter; -import static java.util.concurrent.Executors.newFixedThreadPool; - -import com.google.common.primitives.Ints; -import com.google.common.util.concurrent.ListeningExecutorService; -import dagger.Module; -import dagger.Provides; -import google.registry.cron.CommitLogFanoutAction; -import google.registry.request.HttpException.BadRequestException; -import google.registry.request.Parameter; -import java.lang.annotation.Documented; -import java.util.Optional; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import javax.inject.Qualifier; -import javax.servlet.http.HttpServletRequest; -import org.joda.time.DateTime; - -/** - * Dagger module for backup package. - * - * @see "google.registry.module.backend.BackendComponent" - */ -@Module -public final class BackupModule { - - /** Dagger qualifier for backups. */ - @Qualifier - @Documented - public @interface Backups {} - - /** Number of threads in the threaded executor. */ - private static final int NUM_THREADS = 10; - - @Provides - @Parameter("bucket") - static int provideBucket(HttpServletRequest req) { - String param = extractRequiredParameter(req, CommitLogFanoutAction.BUCKET_PARAM); - Integer bucket = Ints.tryParse(param); - if (bucket == null) { - throw new BadRequestException("Bad bucket id"); - } - return bucket; - } - - @Provides - @Parameter(LOWER_CHECKPOINT_TIME_PARAM) - static DateTime provideLowerCheckpointKey(HttpServletRequest req) { - return extractRequiredDatetimeParameter(req, LOWER_CHECKPOINT_TIME_PARAM); - } - - @Provides - @Parameter(UPPER_CHECKPOINT_TIME_PARAM) - static DateTime provideUpperCheckpointKey(HttpServletRequest req) { - return extractRequiredDatetimeParameter(req, UPPER_CHECKPOINT_TIME_PARAM); - } - - @Provides - @Parameter(BUCKET_OVERRIDE_PARAM) - static Optional provideBucketOverride(HttpServletRequest req) { - return extractOptionalParameter(req, BUCKET_OVERRIDE_PARAM); - } - - @Provides - @Parameter(FROM_TIME_PARAM) - static DateTime provideFromTime(HttpServletRequest req) { - return extractRequiredDatetimeParameter(req, FROM_TIME_PARAM); - } - - @Provides - @Parameter(TO_TIME_PARAM) - static DateTime provideToTime(HttpServletRequest req) { - return extractRequiredDatetimeParameter(req, TO_TIME_PARAM); - } - - @Provides - @Backups - static ListeningExecutorService provideListeningExecutorService() { - return listeningDecorator(newFixedThreadPool(NUM_THREADS, currentRequestThreadFactory())); - } - - @Provides - static ScheduledExecutorService provideScheduledExecutorService() { - return Executors.newSingleThreadScheduledExecutor(); - } -} diff --git a/core/src/main/java/google/registry/backup/BackupUtils.java b/core/src/main/java/google/registry/backup/BackupUtils.java deleted file mode 100644 index 7a81ad108..000000000 --- a/core/src/main/java/google/registry/backup/BackupUtils.java +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.backup; - -import static google.registry.model.ofy.ObjectifyService.auditedOfy; - -import com.google.appengine.api.datastore.EntityTranslator; -import com.google.common.collect.AbstractIterator; -import com.google.common.collect.ImmutableList; -import com.google.storage.onestore.v3.OnestoreEntity.EntityProto; -import google.registry.model.ImmutableObject; -import google.registry.model.annotations.DeleteAfterMigration; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Iterator; - -/** Utilities for working with backups. */ -@DeleteAfterMigration -public class BackupUtils { - - /** Keys for user metadata fields on commit log files in GCS. */ - public static final class GcsMetadataKeys { - - private GcsMetadataKeys() {} - - public static final String NUM_TRANSACTIONS = "num_transactions"; - public static final String LOWER_BOUND_CHECKPOINT = "lower_bound_checkpoint"; - public static final String UPPER_BOUND_CHECKPOINT = "upper_bound_checkpoint"; - } - - /** - * Converts the given {@link ImmutableObject} to a raw Datastore entity and write it to an {@link - * OutputStream} in delimited protocol buffer format. - */ - static void serializeEntity(ImmutableObject entity, OutputStream stream) throws IOException { - EntityTranslator.convertToPb(auditedOfy().saveIgnoringReadOnlyWithoutBackup().toEntity(entity)) - .writeDelimitedTo(stream); - } - - /** - * Return an iterator of {@link ImmutableObject} instances deserialized from the given stream. - * - *

This parses out delimited protocol buffers for raw Datastore entities and then Ofy-loads - * those as {@link ImmutableObject}. - * - *

The iterator reads from the stream on demand, and as such will fail if the stream is closed. - */ - public static Iterator createDeserializingIterator( - final InputStream input, boolean withAppIdOverride) { - return new AbstractIterator() { - @Override - protected ImmutableObject computeNext() { - EntityProto proto = new EntityProto(); - if (proto.parseDelimitedFrom(input)) { // False means end of stream; other errors throw. - if (withAppIdOverride) { - proto = EntityImports.fixEntity(proto); - } - return auditedOfy().load().fromEntity(EntityTranslator.createFromPb(proto)); - } - return endOfData(); - } - }; - } - - public static ImmutableList deserializeEntities(byte[] bytes) { - return ImmutableList.copyOf( - createDeserializingIterator(new ByteArrayInputStream(bytes), false)); - } -} diff --git a/core/src/main/java/google/registry/backup/CommitLogCheckpointAction.java b/core/src/main/java/google/registry/backup/CommitLogCheckpointAction.java deleted file mode 100644 index 057e54632..000000000 --- a/core/src/main/java/google/registry/backup/CommitLogCheckpointAction.java +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.backup; - -import static google.registry.backup.ExportCommitLogDiffAction.LOWER_CHECKPOINT_TIME_PARAM; -import static google.registry.backup.ExportCommitLogDiffAction.UPPER_CHECKPOINT_TIME_PARAM; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.persistence.transaction.TransactionManagerFactory.ofyTm; -import static google.registry.util.DateTimeUtils.isBeforeOrAt; - -import com.google.common.collect.ImmutableMultimap; -import com.google.common.flogger.FluentLogger; -import google.registry.model.annotations.DeleteAfterMigration; -import google.registry.model.ofy.CommitLogCheckpoint; -import google.registry.model.ofy.CommitLogCheckpointRoot; -import google.registry.request.Action; -import google.registry.request.Action.Service; -import google.registry.request.auth.Auth; -import google.registry.util.CloudTasksUtils; -import java.util.Optional; -import javax.inject.Inject; -import org.joda.time.DateTime; -import org.joda.time.Duration; - -/** - * Action that saves commit log checkpoints to Datastore and kicks off a diff export task. - * - *

We separate computing and saving the checkpoint from exporting it because the export to GCS is - * retryable but should not require the computation of a new checkpoint. Saving the checkpoint and - * enqueuing the export task are done transactionally, so any checkpoint that is saved will be - * exported to GCS very soon. - * - *

This action's supported method is GET rather than POST because it gets invoked via cron. - */ -@Action( - service = Action.Service.BACKEND, - path = "/_dr/cron/commitLogCheckpoint", - method = Action.Method.GET, - automaticallyPrintOk = true, - auth = Auth.AUTH_INTERNAL_OR_ADMIN) -@DeleteAfterMigration -public final class CommitLogCheckpointAction implements Runnable { - - private static final FluentLogger logger = FluentLogger.forEnclosingClass(); - - private static final String QUEUE_NAME = "export-commits"; - - /** - * The amount of time enqueueing should be delayed. - * - *

The {@link ExportCommitLogDiffAction} is enqueued in {@link CommitLogCheckpointAction}, - * which is inside a Datastore transaction that persists the checkpoint to be exported. After the - * switch to CloudTasks API, the task may be invoked before the Datastore transaction commits. - * When this happens, the checkpoint is not found which leads to {@link - * com.google.common.base.VerifyException}. - * - *

In order to invoke the task after the transaction commits, a reasonable delay should be - * added to each task. The latency of the request is mostly in the range of 4-6 seconds; Choosing - * a value 30% greater than the upper bound should solve the issue invoking a task before the - * transaction commits. - */ - static final Duration ENQUEUE_DELAY_SECONDS = Duration.standardSeconds(8); - - @Inject CommitLogCheckpointStrategy strategy; - @Inject CloudTasksUtils cloudTasksUtils; - - @Inject CommitLogCheckpointAction() {} - - @Override - public void run() { - createCheckPointAndStartAsyncExport(); - } - - /** - * Creates a {@link CommitLogCheckpoint} and initiates an asynchronous export task. - * - * @return the {@code CommitLogCheckpoint} to be exported - */ - public Optional createCheckPointAndStartAsyncExport() { - final CommitLogCheckpoint checkpoint = strategy.computeCheckpoint(); - logger.atInfo().log( - "Generated candidate checkpoint for time: %s", checkpoint.getCheckpointTime()); - boolean isCheckPointPersisted = - ofyTm() - .transact( - () -> { - DateTime lastWrittenTime = - CommitLogCheckpointRoot.loadRoot().getLastWrittenTime(); - if (isBeforeOrAt(checkpoint.getCheckpointTime(), lastWrittenTime)) { - logger.atInfo().log( - "Newer checkpoint already written at time: %s", lastWrittenTime); - return false; - } - auditedOfy() - .saveIgnoringReadOnlyWithoutBackup() - .entities( - checkpoint, - CommitLogCheckpointRoot.create(checkpoint.getCheckpointTime())); - // Enqueue a diff task between previous and current checkpoints. - cloudTasksUtils.enqueue( - QUEUE_NAME, - cloudTasksUtils.createPostTaskWithDelay( - ExportCommitLogDiffAction.PATH, - Service.BACKEND.toString(), - ImmutableMultimap.of( - LOWER_CHECKPOINT_TIME_PARAM, - lastWrittenTime.toString(), - UPPER_CHECKPOINT_TIME_PARAM, - checkpoint.getCheckpointTime().toString()), - ENQUEUE_DELAY_SECONDS)); - return true; - }); - return isCheckPointPersisted ? Optional.of(checkpoint) : Optional.empty(); - } -} diff --git a/core/src/main/java/google/registry/backup/CommitLogCheckpointStrategy.java b/core/src/main/java/google/registry/backup/CommitLogCheckpointStrategy.java deleted file mode 100644 index 014d7d503..000000000 --- a/core/src/main/java/google/registry/backup/CommitLogCheckpointStrategy.java +++ /dev/null @@ -1,164 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.backup; - -import static com.google.common.collect.Iterables.getOnlyElement; -import static com.google.common.collect.Maps.transformValues; -import static google.registry.model.ofy.CommitLogBucket.getBucketKey; -import static google.registry.util.DateTimeUtils.END_OF_TIME; -import static google.registry.util.DateTimeUtils.earliestOf; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.collect.ImmutableMap; -import com.googlecode.objectify.Key; -import google.registry.model.annotations.DeleteAfterMigration; -import google.registry.model.ofy.CommitLogBucket; -import google.registry.model.ofy.CommitLogCheckpoint; -import google.registry.model.ofy.CommitLogManifest; -import google.registry.model.ofy.Ofy; -import google.registry.util.Clock; -import java.util.List; -import java.util.Map.Entry; -import javax.inject.Inject; -import org.joda.time.DateTime; - -/** - * Implementation of the procedure for determining point-in-time consistent commit log checkpoint. - * - *

This algorithm examines the recently written commit log data and uses a dual-read approach to - * determine a point-in-time consistent set of checkpoint times for the commit log buckets. By - * "consistent" we mean, generally speaking, that if the Datastore were restored by replaying all - * the commit logs up to the checkpoint times of the buckets, the result would be transactionally - * correct; there must be no "holes" where restored state depends on non-restored state. - * - *

The consistency guarantee really has two parts, only one of which is provided by this - * algorithm. The procedure below guarantees only that if the resulting checkpoint includes any - * given commit log, it will also include all the commit logs that were both 1) actually written - * before that commit log "in real life", and 2) have an earlier timestamp than that commit log. - * (These criteria do not necessarily imply each other, due to the lack of a global shared clock.) - * The rest of the guarantee comes from our Ofy customizations, which ensure that any transaction - * that depends on state from a previous transaction does indeed have a later timestamp. - * - *

Procedure description

- * - *
{@code
- * ComputeCheckpoint() -> returns a set consisting of a timestamp c(b_i) for every bucket b_i
- *
- * 1) read off the latest commit timestamp t(b_i) for every bucket b_i
- * 2) iterate over the buckets b_i a second time, and
- *   a) do a consistent query for the next commit timestamp t'(b_i) where t'(b_i) > t(b_i)
- *   b) if present, add this timestamp t'(b_i) to a set S
- * 3) compute a threshold time T* representing a time before all commits in S, as follows:
- *   a) if S is empty, let T* = +∞ (or the "end of time")
- *   b) else, let T* = T - Δ, for T = min(S) and some small Δ > 0
- * 4) return the set given by: min(t(b_i), T*) for all b_i
- * }
- * - *

Correctness proof of algorithm

- * - *

{@literal As described above, the algorithm is correct as long as it can ensure the following: - * given a commit log X written at time t(X) to bucket b_x, and another commit log Y that was - * written "in real life" before X and for which t(Y) < t(X), then if X is included in the - * checkpoint, so is Y; that is, t(X) <= c(b_x) implies t(Y) <= c(b_y). } - * - *

{@literal To prove this, first note that we always have c(b_i) <= t(b_i) for every b_i, i.e. - * every commit log included in the checkpoint must have been seen in the first pass. Hence if X was - * included, then X must have been written by the time we started the second pass. But since Y was - * written "in real life" prior to X, we must have seen Y by the second pass too. } - * - *

{@literal Now assume towards a contradiction that X is indeed included but Y is not, i.e. that - * we have t(X) <= c(b_x) but t(Y) > c(b_y). If Y was seen in the first pass, i.e. t(Y) <= t(b_y), - * then by our assumption c(b_y) < t(Y) <= t(b_y), and therefore c(b_y) != t(b_y). By the definition - * of c(b_y) it must then equal T*, so we have T* < t(Y). However, this is a contradiction since - * t(Y) < t(X) and t(X) <= c(b_x) <= T*. If instead Y was seen in the second pass but not the first, - * t'(b_y) exists and we must have t'(b_y) <= t(Y), but then since T* < T <= t'(b_y) by definition, - * we again reach the contradiction T* < t(Y). } - */ -@DeleteAfterMigration -class CommitLogCheckpointStrategy { - - @Inject Ofy ofy; - @Inject Clock clock; - @Inject CommitLogCheckpointStrategy() {} - - /** Compute and return a new CommitLogCheckpoint for the current point in time. */ - public CommitLogCheckpoint computeCheckpoint() { - DateTime checkpointTime = clock.nowUtc(); - ImmutableMap firstPassTimes = readBucketTimestamps(); - DateTime threshold = readNewCommitLogsAndFindThreshold(firstPassTimes); - return CommitLogCheckpoint.create( - checkpointTime, - computeBucketCheckpointTimes(firstPassTimes, threshold)); - } - - /** - * Returns a map from all bucket IDs to their current last written time values, fetched without - * a transaction so with no guarantee of consistency across buckets. - */ - @VisibleForTesting - ImmutableMap readBucketTimestamps() { - // Use a fresh session cache so that we get the latest data from Datastore. - return ofy.doWithFreshSessionCache( - () -> - CommitLogBucket.loadAllBuckets() - .stream() - .collect( - ImmutableMap.toImmutableMap( - CommitLogBucket::getBucketNum, CommitLogBucket::getLastWrittenTime))); - } - - /** - * Returns a threshold value defined as the latest timestamp that is before all new commit logs, - * where "new" means having a commit time after the per-bucket timestamp in the given map. - * When no such commit logs exist, the threshold value is set to END_OF_TIME. - */ - @VisibleForTesting - DateTime readNewCommitLogsAndFindThreshold(ImmutableMap bucketTimes) { - DateTime timeBeforeAllNewCommits = END_OF_TIME; - for (Entry entry : bucketTimes.entrySet()) { - Key bucketKey = getBucketKey(entry.getKey()); - DateTime bucketTime = entry.getValue(); - // Add 1 to handle START_OF_TIME since 0 isn't a valid id - filter then uses >= instead of >. - Key keyForFilter = - Key.create(CommitLogManifest.create(bucketKey, bucketTime.plusMillis(1), null)); - List> manifestKeys = - ofy.load() - .type(CommitLogManifest.class) - .ancestor(bucketKey) - .filterKey(">=", keyForFilter) - .limit(1) - .keys() - .list(); - if (!manifestKeys.isEmpty()) { - timeBeforeAllNewCommits = earliestOf( - timeBeforeAllNewCommits, - CommitLogManifest.extractCommitTime(getOnlyElement(manifestKeys)).minusMillis(1)); - } - } - return timeBeforeAllNewCommits; - } - - /** - * Returns the bucket checkpoint times produced by clamping the given set of bucket timestamps to - * at most the given threshold value. - */ - @VisibleForTesting - ImmutableMap computeBucketCheckpointTimes( - ImmutableMap firstPassTimes, - final DateTime threshold) { - return ImmutableMap.copyOf( - transformValues(firstPassTimes, firstPassTime -> earliestOf(firstPassTime, threshold))); - } -} diff --git a/core/src/main/java/google/registry/backup/DeleteOldCommitLogsAction.java b/core/src/main/java/google/registry/backup/DeleteOldCommitLogsAction.java deleted file mode 100644 index e3aaf19ee..000000000 --- a/core/src/main/java/google/registry/backup/DeleteOldCommitLogsAction.java +++ /dev/null @@ -1,346 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.backup; - -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.base.Preconditions.checkState; -import static google.registry.mapreduce.MapreduceRunner.PARAM_DRY_RUN; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.persistence.transaction.TransactionManagerFactory.ofyTm; -import static java.lang.Boolean.FALSE; -import static java.lang.Boolean.TRUE; - -import com.google.appengine.tools.mapreduce.Mapper; -import com.google.appengine.tools.mapreduce.Reducer; -import com.google.appengine.tools.mapreduce.ReducerInput; -import com.google.auto.value.AutoValue; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMultiset; -import com.google.common.flogger.FluentLogger; -import com.googlecode.objectify.Key; -import google.registry.config.RegistryConfig.Config; -import google.registry.mapreduce.MapreduceRunner; -import google.registry.mapreduce.inputs.CommitLogManifestInput; -import google.registry.mapreduce.inputs.EppResourceInputs; -import google.registry.model.EppResource; -import google.registry.model.annotations.DeleteAfterMigration; -import google.registry.model.ofy.CommitLogManifest; -import google.registry.model.ofy.CommitLogMutation; -import google.registry.model.translators.CommitLogRevisionsTranslatorFactory; -import google.registry.request.Action; -import google.registry.request.Parameter; -import google.registry.request.Response; -import google.registry.request.auth.Auth; -import google.registry.util.Clock; -import javax.inject.Inject; -import org.joda.time.DateTime; -import org.joda.time.Duration; - -/** - * Task that garbage collects old {@link CommitLogManifest} entities. - * - *

Once commit logs have been written to GCS, we don't really need them in Datastore anymore, - * except to reconstruct point-in-time snapshots of the database. To make that possible, {@link - * EppResource}s have a {@link EppResource#getRevisions} method that returns the commit logs for - * older points in time. But that functionality is not useful after a certain amount of time, e.g. - * thirty days, so unneeded revisions are deleted (see {@link CommitLogRevisionsTranslatorFactory}). - * This leaves commit logs in the system that are unneeded (have no revisions pointing to them). So - * this task runs periodically to delete the "orphan" commit logs. - * - *

This action runs a mapreduce that goes over all existing {@link EppResource} and all {@link - * CommitLogManifest} older than commitLogDatastreRetention, and erases the commit logs aren't in an - * EppResource. - */ -@Action( - service = Action.Service.BACKEND, - path = "/_dr/task/deleteOldCommitLogs", - auth = Auth.AUTH_INTERNAL_OR_ADMIN) -// No longer needed in SQL. Subject to future removal. -@Deprecated -@DeleteAfterMigration -public final class DeleteOldCommitLogsAction implements Runnable { - - private static final int NUM_MAP_SHARDS = 20; - private static final int NUM_REDUCE_SHARDS = 10; - private static final FluentLogger logger = FluentLogger.forEnclosingClass(); - - @Inject MapreduceRunner mrRunner; - @Inject Response response; - @Inject Clock clock; - - @Inject - @Config("commitLogDatastoreRetention") - Duration maxAge; - - @Inject - @Parameter(PARAM_DRY_RUN) - boolean isDryRun; - - @Inject - DeleteOldCommitLogsAction() {} - - @Override - public void run() { - DateTime deletionThreshold = clock.nowUtc().minus(maxAge); - logger.atInfo().log( - "Processing asynchronous deletion of unreferenced CommitLogManifests older than %s.", - deletionThreshold); - - mrRunner - .setJobName("Delete old commit logs") - .setModuleName("backend") - .setDefaultMapShards(NUM_MAP_SHARDS) - .setDefaultReduceShards(NUM_REDUCE_SHARDS) - .runMapreduce( - new DeleteOldCommitLogsMapper(deletionThreshold), - new DeleteOldCommitLogsReducer(deletionThreshold, isDryRun), - ImmutableList.of( - new CommitLogManifestInput(deletionThreshold), - EppResourceInputs.createKeyInput(EppResource.class))) - .sendLinkToMapreduceConsole(response); - } - - /** - * A mapper that iterates over all {@link EppResource} and {CommitLogManifest} entities. - * - *

It emits the target key and {@code false} for all revisions of each EppResources (meaning - * "don't delete this"), and {@code true} for all CommitLogRevisions (meaning "delete this"). - * - *

The reducer will then delete all CommitLogRevisions that only have {@code true}. - */ - private static class DeleteOldCommitLogsMapper - extends Mapper, Key, Boolean> { - - private static final long serialVersionUID = 8008689353479902948L; - - private static final String KIND_MANIFEST = Key.getKind(CommitLogManifest.class); - - private final DateTime threshold; - - DeleteOldCommitLogsMapper(DateTime threshold) { - this.threshold = threshold; - } - - @Override - public void map(final Key key) { - // key is either a Key or a Key. - // - // If it's a CommitLogManifest we just emit it as is (no need to load it). - if (key.getKind().equals(KIND_MANIFEST)) { - getContext().incrementCounter("old commit log manifests found"); - // safe because we checked getKind - @SuppressWarnings("unchecked") - Key manifestKey = (Key) key; - emit(manifestKey, true); - return; - } - - // If it isn't a Key then it should be an EppResource, which we need to - // load to emit the revisions. - // - Object object = auditedOfy().load().key(key).now(); - checkNotNull(object, "Received a key to a missing object. key: %s", key); - checkState( - object instanceof EppResource, - "Received a key to an object that isn't EppResource nor CommitLogManifest." - + " Key: %s object type: %s", - key, - object.getClass().getName()); - - getContext().incrementCounter("EPP resources found"); - EppResource eppResource = (EppResource) object; - if (eppResource.getCreationTime().isAfter(threshold)) { - getContext().incrementCounter("EPP resources newer than threshold"); - } - for (Key manifestKey : eppResource.getRevisions().values()) { - emit(manifestKey, false); - } - getContext() - .incrementCounter("EPP resource revisions found", eppResource.getRevisions().size()); - checkAndLogRevisionCoverageError(eppResource); - } - - /** - * Check if given eppResource has the required revisions. - * - *

Revisions are used to recreate the state of the resource at a given day in the past - * "commitLogDatastoreRenention". To do that, we need at least one revision that's older than - * this duration (is dated before "threshold"), or at least one revision within a day of the - * resource's creation if it was created after the threshold. - * - *

Here we check that the given eppResource has the revisions it needs. - * - *

It's just a sanity check - since we're relying on the revisions to be correct for the - * deletion to work. We want to alert any problems we find in the revisions. - * - *

This really checks {@link CommitLogRevisionsTranslatorFactory#transformBeforeSave}. - * There's nothing we can do at this point to prevent the damage - we only report on it. - */ - private void checkAndLogRevisionCoverageError(EppResource eppResource) { - // First - check if there even are revisions - if (eppResource.getRevisions().isEmpty()) { - getContext().incrementCounter("EPP resources missing all revisions (SEE LOGS)"); - logger.atSevere().log("EPP resource missing all revisions: %s", Key.create(eppResource)); - return; - } - // Next, check if there's a revision that's older than "CommitLogDatastoreRetention". There - // should have been at least one at the time this resource was saved. - // - // Alternatively, if the resource is newer than the threshold - there should be at least one - // revision within a day of the creation time. - DateTime oldestRevisionDate = eppResource.getRevisions().firstKey(); - if (oldestRevisionDate.isBefore(threshold) - || oldestRevisionDate.isBefore(eppResource.getCreationTime().plusDays(1))) { - // We're OK! - return; - } - // The oldest revision date is newer than the threshold! This shouldn't happen. - getContext().incrementCounter("EPP resources missing pre-threshold revision (SEE LOGS)"); - logger.atSevere().log( - "EPP resource missing old enough revision: " - + "%s (created on %s) has %d revisions between %s and %s, while threshold is %s.", - Key.create(eppResource), - eppResource.getCreationTime(), - eppResource.getRevisions().size(), - eppResource.getRevisions().firstKey(), - eppResource.getRevisions().lastKey(), - threshold); - // We want to see how bad it is though: if the difference is less than a day then this might - // still be OK (we only need logs for the end of the day). But if it's more than a day, then - // we are 100% sure we can't recreate all the history we need from the revisions. - Duration interval = new Duration(threshold, oldestRevisionDate); - if (interval.isLongerThan(Duration.standardDays(1))) { - getContext() - .incrementCounter("EPP resources missing pre-(threshold+1d) revision (SEE LOGS)"); - } - } - } - - /** - * Reducer that deletes unreferenced {@link CommitLogManifest} + child {@link CommitLogMutation}. - * - *

It receives the manifestKey to possibly delete, and a list of boolean 'verdicts' from - * various sources (the "old manifests" source and the "still referenced" source) on whether it's - * OK to delete this manifestKey. If even one source returns "false" (meaning "it's not OK to - * delete this manifest") then it won't be deleted. - */ - static class DeleteOldCommitLogsReducer extends Reducer, Boolean, Void> { - - private static final long serialVersionUID = -4918760187627937268L; - - private final DateTime deletionThreshold; - private final boolean isDryRun; - - @AutoValue - abstract static class DeletionResult { - enum Status { - ALREADY_DELETED, - AFTER_THRESHOLD, - SUCCESS - } - - public abstract Status status(); - - public abstract int numDeleted(); - - static DeletionResult create(Status status, int numDeleted) { - return new AutoValue_DeleteOldCommitLogsAction_DeleteOldCommitLogsReducer_DeletionResult( - status, numDeleted); - } - } - - DeleteOldCommitLogsReducer(DateTime deletionThreshold, boolean isDryRun) { - this.deletionThreshold = deletionThreshold; - this.isDryRun = isDryRun; - } - - @Override - public void reduce( - final Key manifestKey, ReducerInput canDeleteVerdicts) { - ImmutableMultiset canDeleteMultiset = ImmutableMultiset.copyOf(canDeleteVerdicts); - if (canDeleteMultiset.count(TRUE) > 1) { - getContext().incrementCounter("commit log manifests incorrectly mapped multiple times"); - } - if (canDeleteMultiset.count(FALSE) > 1) { - getContext().incrementCounter("commit log manifests referenced multiple times"); - } - if (canDeleteMultiset.contains(FALSE)) { - getContext() - .incrementCounter( - canDeleteMultiset.contains(TRUE) - ? "old commit log manifests still referenced" - : "new (or nonexistent) commit log manifests referenced"); - getContext() - .incrementCounter("EPP resource revisions handled", canDeleteMultiset.count(FALSE)); - return; - } - - DeletionResult deletionResult = - ofyTm() - .transactNew( - () -> { - CommitLogManifest manifest = auditedOfy().load().key(manifestKey).now(); - // It is possible that the same manifestKey was run twice, if a shard had to be - // restarted or some weird failure. If this happens, we want to exit - // immediately. Note that this can never happen in dryRun. - if (manifest == null) { - return DeletionResult.create(DeletionResult.Status.ALREADY_DELETED, 0); - } - // Doing a sanity check on the date. This is the only place we use the - // CommitLogManifest, so maybe removing this test will improve performance. - // However, unless it's proven that the performance boost is significant (and - // we've tested this enough to be sure it never happens)- the safety of "let's - // not delete stuff we need from prod" is more important. - if (manifest.getCommitTime().isAfter(deletionThreshold)) { - return DeletionResult.create(DeletionResult.Status.AFTER_THRESHOLD, 0); - } - Iterable> commitLogMutationKeys = - auditedOfy() - .load() - .type(CommitLogMutation.class) - .ancestor(manifestKey) - .keys() - .iterable(); - ImmutableList> keysToDelete = - ImmutableList.>builder() - .addAll(commitLogMutationKeys) - .add(manifestKey) - .build(); - // Normally in a dry run we would log the entities that would be deleted, but - // those can number in the millions so we skip the logging. - if (!isDryRun) { - auditedOfy().deleteWithoutBackup().keys(keysToDelete); - } - return DeletionResult.create( - DeletionResult.Status.SUCCESS, keysToDelete.size()); - }); - - switch (deletionResult.status()) { - case SUCCESS: - getContext().incrementCounter("old commit log manifests deleted"); - getContext().incrementCounter("total entities deleted", deletionResult.numDeleted()); - break; - case ALREADY_DELETED: - getContext().incrementCounter("attempts to delete an already deleted manifest"); - break; - case AFTER_THRESHOLD: - logger.atSevere().log( - "Won't delete CommitLogManifest %s that is too recent.", manifestKey); - getContext().incrementCounter("manifests incorrectly assigned for deletion (SEE LOGS)"); - break; - } - } - } -} diff --git a/core/src/main/java/google/registry/backup/EntityImports.java b/core/src/main/java/google/registry/backup/EntityImports.java deleted file mode 100644 index 3e3f5af73..000000000 --- a/core/src/main/java/google/registry/backup/EntityImports.java +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright 2021 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.backup; - -import com.google.apphosting.api.ApiProxy; -import com.google.storage.onestore.v3.OnestoreEntity; -import com.google.storage.onestore.v3.OnestoreEntity.EntityProto; -import com.google.storage.onestore.v3.OnestoreEntity.Path; -import com.google.storage.onestore.v3.OnestoreEntity.Property.Meaning; -import com.google.storage.onestore.v3.OnestoreEntity.PropertyValue.ReferenceValue; -import google.registry.model.annotations.DeleteAfterMigration; -import java.util.Objects; - -/** Utilities for handling imported Datastore entities. */ -@DeleteAfterMigration -public class EntityImports { - - /** - * Transitively sets the {@code appId} of all keys in a foreign entity to that of the current - * system. - */ - public static EntityProto fixEntity(EntityProto entityProto) { - String currentAappId = ApiProxy.getCurrentEnvironment().getAppId(); - if (Objects.equals(currentAappId, entityProto.getKey().getApp())) { - return entityProto; - } - return fixEntity(entityProto, currentAappId); - } - - private static EntityProto fixEntity(EntityProto entityProto, String appId) { - if (entityProto.hasKey()) { - fixKey(entityProto, appId); - } - - for (OnestoreEntity.Property property : entityProto.mutablePropertys()) { - fixProperty(property, appId); - } - - for (OnestoreEntity.Property property : entityProto.mutableRawPropertys()) { - fixProperty(property, appId); - } - - // CommitLogMutation embeds an entity as bytes, which needs additional fixes. - if (isCommitLogMutation(entityProto)) { - fixMutationEntityProtoBytes(entityProto, appId); - } - return entityProto; - } - - private static boolean isCommitLogMutation(EntityProto entityProto) { - if (!entityProto.hasKey()) { - return false; - } - Path path = entityProto.getKey().getPath(); - if (path.elementSize() == 0) { - return false; - } - return Objects.equals(path.getElement(path.elementSize() - 1).getType(), "CommitLogMutation"); - } - - private static void fixMutationEntityProtoBytes(EntityProto entityProto, String appId) { - for (OnestoreEntity.Property property : entityProto.mutableRawPropertys()) { - if (Objects.equals(property.getName(), "entityProtoBytes")) { - OnestoreEntity.PropertyValue value = property.getValue(); - EntityProto fixedProto = - fixEntity(bytesToEntityProto(value.getStringValueAsBytes()), appId); - value.setStringValueAsBytes(fixedProto.toByteArray()); - return; - } - } - } - - private static void fixKey(EntityProto entityProto, String appId) { - entityProto.getMutableKey().setApp(appId); - } - - private static void fixKey(ReferenceValue referenceValue, String appId) { - referenceValue.setApp(appId); - } - - private static void fixProperty(OnestoreEntity.Property property, String appId) { - OnestoreEntity.PropertyValue value = property.getMutableValue(); - if (value.hasReferenceValue()) { - fixKey(value.getMutableReferenceValue(), appId); - return; - } - if (property.getMeaningEnum().equals(Meaning.ENTITY_PROTO)) { - EntityProto embeddedProto = bytesToEntityProto(value.getStringValueAsBytes()); - fixEntity(embeddedProto, appId); - value.setStringValueAsBytes(embeddedProto.toByteArray()); - } - } - - private static EntityProto bytesToEntityProto(byte[] bytes) { - EntityProto entityProto = new EntityProto(); - boolean isParsed = entityProto.parseFrom(bytes); - if (!isParsed) { - throw new IllegalStateException("Failed to parse raw bytes as EntityProto."); - } - return entityProto; - } -} diff --git a/core/src/main/java/google/registry/backup/ExportCommitLogDiffAction.java b/core/src/main/java/google/registry/backup/ExportCommitLogDiffAction.java deleted file mode 100644 index 4441cd62a..000000000 --- a/core/src/main/java/google/registry/backup/ExportCommitLogDiffAction.java +++ /dev/null @@ -1,223 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.backup; - -import static com.google.common.base.MoreObjects.firstNonNull; -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Verify.verifyNotNull; -import static com.google.common.collect.ImmutableList.toImmutableList; -import static com.google.common.collect.Iterables.concat; -import static com.google.common.collect.Lists.partition; -import static google.registry.backup.BackupUtils.GcsMetadataKeys.LOWER_BOUND_CHECKPOINT; -import static google.registry.backup.BackupUtils.GcsMetadataKeys.NUM_TRANSACTIONS; -import static google.registry.backup.BackupUtils.GcsMetadataKeys.UPPER_BOUND_CHECKPOINT; -import static google.registry.backup.BackupUtils.serializeEntity; -import static google.registry.model.ofy.CommitLogBucket.getBucketKey; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.util.DateTimeUtils.START_OF_TIME; -import static google.registry.util.DateTimeUtils.isAtOrAfter; -import static java.util.Comparator.comparingLong; - -import com.google.cloud.storage.BlobId; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Streams; -import com.google.common.flogger.FluentLogger; -import com.googlecode.objectify.Key; -import google.registry.config.RegistryConfig.Config; -import google.registry.gcs.GcsUtils; -import google.registry.model.ImmutableObject; -import google.registry.model.annotations.DeleteAfterMigration; -import google.registry.model.ofy.CommitLogBucket; -import google.registry.model.ofy.CommitLogCheckpoint; -import google.registry.model.ofy.CommitLogManifest; -import google.registry.model.ofy.CommitLogMutation; -import google.registry.request.Action; -import google.registry.request.Parameter; -import google.registry.request.auth.Auth; -import java.io.IOException; -import java.io.OutputStream; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import javax.annotation.Nullable; -import javax.inject.Inject; -import org.joda.time.DateTime; - -/** Action that exports the diff between two commit log checkpoints to GCS. */ -@Action( - service = Action.Service.BACKEND, - path = ExportCommitLogDiffAction.PATH, - method = Action.Method.POST, - automaticallyPrintOk = true, - auth = Auth.AUTH_INTERNAL_OR_ADMIN) -@DeleteAfterMigration -public final class ExportCommitLogDiffAction implements Runnable { - - private static final FluentLogger logger = FluentLogger.forEnclosingClass(); - - static final String PATH = "/_dr/task/exportCommitLogDiff"; - static final String UPPER_CHECKPOINT_TIME_PARAM = "upperCheckpointTime"; - static final String LOWER_CHECKPOINT_TIME_PARAM = "lowerCheckpointTime"; - - public static final String DIFF_FILE_PREFIX = "commit_diff_until_"; - - @Inject GcsUtils gcsUtils; - - @Inject @Config("commitLogGcsBucket") String gcsBucket; - @Inject @Config("commitLogDiffExportBatchSize") int batchSize; - @Inject @Parameter(LOWER_CHECKPOINT_TIME_PARAM) DateTime lowerCheckpointTime; - @Inject @Parameter(UPPER_CHECKPOINT_TIME_PARAM) DateTime upperCheckpointTime; - @Inject ExportCommitLogDiffAction() {} - - @Override - public void run() { - logger.atInfo().log( - "Exporting commit log diffs between %s and %s.", lowerCheckpointTime, upperCheckpointTime); - checkArgument(isAtOrAfter(lowerCheckpointTime, START_OF_TIME)); - checkArgument(lowerCheckpointTime.isBefore(upperCheckpointTime)); - // Load the boundary checkpoints - lower is exclusive and may not exist (on the first export, - // when lowerCheckpointTime is START_OF_TIME), whereas the upper is inclusive and must exist. - CommitLogCheckpoint lowerCheckpoint = - lowerCheckpointTime.isAfter(START_OF_TIME) - ? verifyNotNull( - auditedOfy().load().key(CommitLogCheckpoint.createKey(lowerCheckpointTime)).now()) - : null; - CommitLogCheckpoint upperCheckpoint = - verifyNotNull( - auditedOfy().load().key(CommitLogCheckpoint.createKey(upperCheckpointTime)).now()); - - // Load the keys of all the manifests to include in this diff. - List> sortedKeys = loadAllDiffKeys(lowerCheckpoint, upperCheckpoint); - logger.atInfo().log("Found %d manifests to export.", sortedKeys.size()); - // Open an output channel to GCS, wrapped in a stream for convenience. - try (OutputStream gcsStream = - gcsUtils.openOutputStream( - BlobId.of(gcsBucket, DIFF_FILE_PREFIX + upperCheckpointTime), - ImmutableMap.of( - LOWER_BOUND_CHECKPOINT, lowerCheckpointTime.toString(), - UPPER_BOUND_CHECKPOINT, upperCheckpointTime.toString(), - NUM_TRANSACTIONS, Integer.toString(sortedKeys.size())))) { - // Export the upper checkpoint itself. - serializeEntity(upperCheckpoint, gcsStream); - // If there are no manifests to export, stop early, now that we've written out the file with - // the checkpoint itself (which is needed for restores, even if it's empty). - if (sortedKeys.isEmpty()) { - return; - } - // Export to GCS in chunks, one per fixed batch of commit logs. While processing one batch, - // asynchronously load the entities for the next one. - List>> keyChunks = partition(sortedKeys, batchSize); - // Objectify's map return type is asynchronous. Calling .values() will block until it loads. - Map nextChunkToExport = auditedOfy().load().keys(keyChunks.get(0)); - for (int i = 0; i < keyChunks.size(); i++) { - // Force the async load to finish. - Collection chunkValues = nextChunkToExport.values(); - logger.atInfo().log("Loaded %d manifests.", chunkValues.size()); - // Since there is no hard bound on how much data this might be, take care not to let the - // Objectify session cache fill up and potentially run out of memory. This is the only safe - // point to do this since at this point there is no async load in progress. - auditedOfy().clearSessionCache(); - // Kick off the next async load, which can happen in parallel to the current GCS export. - if (i + 1 < keyChunks.size()) { - nextChunkToExport = auditedOfy().load().keys(keyChunks.get(i + 1)); - } - exportChunk(gcsStream, chunkValues); - logger.atInfo().log("Exported %d manifests.", chunkValues.size()); - } - } catch (IOException e) { - throw new RuntimeException(e); - } - logger.atInfo().log("Exported %d total manifests.", sortedKeys.size()); - } - - /** - * Loads all the diff keys, sorted in a transaction-consistent chronological order. - * - * @param lowerCheckpoint exclusive lower bound on keys in this diff, or null if no lower bound - * @param upperCheckpoint inclusive upper bound on keys in this diff - */ - private ImmutableList> loadAllDiffKeys( - @Nullable final CommitLogCheckpoint lowerCheckpoint, - final CommitLogCheckpoint upperCheckpoint) { - // Fetch the keys (no data) between these checkpoints, and sort by timestamp. This ordering is - // transaction-consistent by virtue of our checkpoint strategy and our customized Ofy; see - // CommitLogCheckpointStrategy for the proof. We break ties by sorting on bucket ID to ensure - // a deterministic order. - return upperCheckpoint - .getBucketTimestamps() - .keySet() - .stream() - .flatMap( - bucketNum -> - Streams.stream(loadDiffKeysFromBucket(lowerCheckpoint, upperCheckpoint, bucketNum))) - .sorted( - comparingLong(Key::getId) - .thenComparingLong(a -> a.getParent().getId())) - .collect(toImmutableList()); - } - - /** - * Loads the diff keys for one bucket. - * - * @param lowerCheckpoint exclusive lower bound on keys in this diff, or null if no lower bound - * @param upperCheckpoint inclusive upper bound on keys in this diff - * @param bucketNum the bucket to load diff keys from - */ - private Iterable> loadDiffKeysFromBucket( - @Nullable CommitLogCheckpoint lowerCheckpoint, - CommitLogCheckpoint upperCheckpoint, - int bucketNum) { - // If no lower checkpoint exists, or if it exists but had no timestamp for this bucket number - // (because the bucket count was increased between these checkpoints), then use START_OF_TIME - // as the effective exclusive lower bound. - DateTime lowerCheckpointBucketTime = - firstNonNull( - (lowerCheckpoint == null) ? null : lowerCheckpoint.getBucketTimestamps().get(bucketNum), - START_OF_TIME); - // Since START_OF_TIME=0 is not a valid id in a key, add 1 to both bounds. Then instead of - // loading lowerBound < x <= upperBound, we can load lowerBound <= x < upperBound. - DateTime lowerBound = lowerCheckpointBucketTime.plusMillis(1); - DateTime upperBound = upperCheckpoint.getBucketTimestamps().get(bucketNum).plusMillis(1); - // If the lower and upper bounds are equal, there can't be any results, so skip the query. - if (lowerBound.equals(upperBound)) { - return ImmutableSet.of(); - } - Key bucketKey = getBucketKey(bucketNum); - return auditedOfy() - .load() - .type(CommitLogManifest.class) - .ancestor(bucketKey) - .filterKey(">=", CommitLogManifest.createKey(bucketKey, lowerBound)) - .filterKey("<", CommitLogManifest.createKey(bucketKey, upperBound)) - .keys(); - } - - /** Writes a chunks-worth of manifests and associated mutations to GCS. */ - private void exportChunk(OutputStream gcsStream, Collection chunk) - throws IOException { - // Kickoff async loads for all the manifests in the chunk. - ImmutableList.Builder> entities = - new ImmutableList.Builder<>(); - for (CommitLogManifest manifest : chunk) { - entities.add(ImmutableList.of(manifest)); - entities.add(auditedOfy().load().type(CommitLogMutation.class).ancestor(manifest)); - } - for (ImmutableObject entity : concat(entities.build())) { - serializeEntity(entity, gcsStream); - } - } -} diff --git a/core/src/main/java/google/registry/backup/GcsDiffFileLister.java b/core/src/main/java/google/registry/backup/GcsDiffFileLister.java deleted file mode 100644 index e5645019c..000000000 --- a/core/src/main/java/google/registry/backup/GcsDiffFileLister.java +++ /dev/null @@ -1,246 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.backup; - -import static com.google.common.base.Preconditions.checkState; -import static com.google.common.collect.ImmutableList.toImmutableList; -import static google.registry.backup.BackupUtils.GcsMetadataKeys.LOWER_BOUND_CHECKPOINT; -import static google.registry.backup.ExportCommitLogDiffAction.DIFF_FILE_PREFIX; -import static google.registry.util.DateTimeUtils.START_OF_TIME; -import static google.registry.util.DateTimeUtils.isBeforeOrAt; -import static google.registry.util.DateTimeUtils.latestOf; - -import com.google.cloud.storage.BlobId; -import com.google.cloud.storage.BlobInfo; -import com.google.common.annotations.VisibleForTesting; -import com.google.common.collect.ImmutableList; -import com.google.common.flogger.FluentLogger; -import com.google.common.util.concurrent.Futures; -import com.google.common.util.concurrent.ListenableFuture; -import com.google.common.util.concurrent.ListeningExecutorService; -import com.google.common.util.concurrent.UncheckedExecutionException; -import google.registry.backup.BackupModule.Backups; -import google.registry.gcs.GcsUtils; -import google.registry.model.annotations.DeleteAfterMigration; -import java.io.IOException; -import java.time.Duration; -import java.util.Map; -import java.util.TreeMap; -import java.util.concurrent.ScheduledExecutorService; -import javax.annotation.Nullable; -import javax.inject.Inject; -import javax.inject.Provider; -import org.joda.time.DateTime; - -/** Utility class to list commit logs diff files stored on GCS. */ -@DeleteAfterMigration -class GcsDiffFileLister { - - private static final FluentLogger logger = FluentLogger.forEnclosingClass(); - - /** Timeout for retrieving per-file information from GCS. */ - private static final Duration FILE_INFO_TIMEOUT_DURATION = Duration.ofMinutes(1); - - @Inject GcsUtils gcsUtils; - - @Inject @Backups Provider executorProvider; - @Inject ScheduledExecutorService scheduledExecutorService; - - @Inject - GcsDiffFileLister() {} - - /** - * Traverses the sequence of diff files backwards from checkpointTime and inserts the file - * metadata into "sequence". Returns true if a complete sequence was discovered, false if one or - * more files are missing. - * - * @throws UncheckedExecutionException wrapping a {@link java.util.concurrent.TimeoutException} if - * the GCS call fails to finish within one minute, or wrapping any other exception if - * something else goes wrong. - */ - private boolean constructDiffSequence( - String gcsBucket, - Map> upperBoundTimesToBlobInfo, - DateTime fromTime, - DateTime lastTime, - TreeMap sequence) { - DateTime checkpointTime = lastTime; - while (isBeforeOrAt(fromTime, checkpointTime)) { - BlobInfo blobInfo; - if (upperBoundTimesToBlobInfo.containsKey(checkpointTime)) { - blobInfo = - Futures.getUnchecked( - Futures.withTimeout( - upperBoundTimesToBlobInfo.get(checkpointTime), - FILE_INFO_TIMEOUT_DURATION, - scheduledExecutorService)); - } else { - String filename = DIFF_FILE_PREFIX + checkpointTime; - logger.atInfo().log("Patching GCS list; discovered file: %s", filename); - blobInfo = getBlobInfo(gcsBucket, filename); - - // If we hit a gap, quit. - if (blobInfo == null) { - logger.atWarning().log( - "Gap discovered in sequence terminating at %s, missing file: %s", - sequence.lastKey(), filename); - logger.atInfo().log("Found sequence from %s to %s.", checkpointTime, lastTime); - return false; - } - } - sequence.put(checkpointTime, blobInfo); - checkpointTime = getLowerBoundTime(blobInfo); - } - logger.atInfo().log("Found sequence from %s to %s.", checkpointTime, lastTime); - return true; - } - - ImmutableList listDiffFiles( - String gcsBucket, DateTime fromTime, @Nullable DateTime toTime) { - logger.atInfo().log("Requested restore from time: %s", fromTime); - if (toTime != null) { - logger.atInfo().log(" Until time: %s", toTime); - } - // List all of the diff files on GCS and build a map from each file's upper checkpoint time - // (extracted from the filename) to its asynchronously-loaded metadata, keeping only files with - // an upper checkpoint time > fromTime. - TreeMap> upperBoundTimesToBlobInfo = new TreeMap<>(); - String commitLogDiffPrefix = getCommitLogDiffPrefix(fromTime, toTime); - ImmutableList filenames; - try { - filenames = - gcsUtils.listFolderObjects(gcsBucket, commitLogDiffPrefix).stream() - .map(s -> commitLogDiffPrefix + s) - .collect(toImmutableList()); - } catch (IOException e) { - throw new RuntimeException(e); - } - DateTime lastUpperBoundTime = START_OF_TIME; - - TreeMap sequence = new TreeMap<>(); - ListeningExecutorService executor = executorProvider.get(); - try { - for (String filename : filenames) { - String strippedFilename = filename.replaceFirst(DIFF_FILE_PREFIX, ""); - DateTime upperBoundTime = DateTime.parse(strippedFilename); - if (isInRange(upperBoundTime, fromTime, toTime)) { - upperBoundTimesToBlobInfo.put( - upperBoundTime, executor.submit(() -> getBlobInfo(gcsBucket, filename))); - lastUpperBoundTime = latestOf(upperBoundTime, lastUpperBoundTime); - } - } - if (upperBoundTimesToBlobInfo.isEmpty()) { - logger.atInfo().log("No files found."); - return ImmutableList.of(); - } - - // Reconstruct the sequence of files by traversing backwards from "lastUpperBoundTime" (i.e. - // the last file that we found) and finding its previous file until we either run out of files - // or get to one that precedes "fromTime". - // - // GCS file listing is eventually consistent, so it's possible that we are missing a file. The - // metadata of a file is sufficient to identify the preceding file, so if we start from the - // last file and work backwards we can verify that we have no holes in our chain (although we - // may be missing files at the end). - logger.atInfo().log("Restoring until: %s", lastUpperBoundTime); - boolean inconsistentFileSet = - !constructDiffSequence( - gcsBucket, upperBoundTimesToBlobInfo, fromTime, lastUpperBoundTime, sequence); - - // Verify that all of the elements in the original set are represented in the sequence. If we - // find anything that's not represented, construct a sequence for it. - boolean checkForMoreExtraDiffs = true; // Always loop at least once. - while (checkForMoreExtraDiffs) { - checkForMoreExtraDiffs = false; - for (DateTime key : upperBoundTimesToBlobInfo.descendingKeySet()) { - if (!isInRange(key, fromTime, toTime)) { - break; - } - if (!sequence.containsKey(key)) { - // Recalculate the sequence for purely informational purposes. - logger.atWarning().log( - "Fork found in commit log history. The following sequence " - + "is disconnected from the sequence of the final commit:"); - constructDiffSequence(gcsBucket, upperBoundTimesToBlobInfo, fromTime, key, sequence); - checkForMoreExtraDiffs = true; - inconsistentFileSet = true; - break; - } - } - } - - checkState( - !inconsistentFileSet, - "Unable to compute commit diff history, there are either gaps or forks in the history " - + "file set. Check log for details."); - } finally { - executor.shutdown(); - } - - logger.atInfo().log( - "Actual restore from time: %s", getLowerBoundTime(sequence.firstEntry().getValue())); - logger.atInfo().log("Found %d files to restore.", sequence.size()); - return ImmutableList.copyOf(sequence.values()); - } - - /** - * Returns true if 'time' is in range of 'start' and 'end'. - * - *

If 'end' is null, returns true if 'time' is after 'start'. - */ - private boolean isInRange(DateTime time, DateTime start, @Nullable DateTime end) { - return isBeforeOrAt(start, time) && (end == null || isBeforeOrAt(time, end)); - } - - private DateTime getLowerBoundTime(BlobInfo blobInfo) { - return DateTime.parse(blobInfo.getMetadata().get(LOWER_BOUND_CHECKPOINT)); - } - - private BlobInfo getBlobInfo(String gcsBucket, String filename) { - return gcsUtils.getBlobInfo(BlobId.of(gcsBucket, filename)); - } - - /** - * Returns a prefix guaranteed to cover all commit log diff files in the given range. - * - *

The listObjects call can be fairly slow if we search over many thousands or tens of - * thousands of files, so we restrict the search space. The commit logs have a file format of - * "commit_diff_until_2021-05-11T06:48:00.070Z" so we can often filter down as far as the hour. - * - *

Here, we get the longest prefix possible based on which fields (year, month, day, hour) the - * times in question have in common. - */ - @VisibleForTesting - static String getCommitLogDiffPrefix(DateTime from, @Nullable DateTime to) { - StringBuilder result = new StringBuilder(DIFF_FILE_PREFIX); - if (to == null || from.getYear() != to.getYear()) { - return result.toString(); - } - result.append(from.getYear()).append('-'); - if (from.getMonthOfYear() != to.getMonthOfYear()) { - return result.toString(); - } - result.append(String.format("%02d-", from.getMonthOfYear())); - if (from.getDayOfMonth() != to.getDayOfMonth()) { - return result.toString(); - } - result.append(String.format("%02dT", from.getDayOfMonth())); - if (from.getHourOfDay() != to.getHourOfDay()) { - return result.toString(); - } - result.append(String.format("%02d:", from.getHourOfDay())); - return result.toString(); - } -} diff --git a/core/src/main/java/google/registry/backup/RestoreCommitLogsAction.java b/core/src/main/java/google/registry/backup/RestoreCommitLogsAction.java deleted file mode 100644 index 1ce7b0cb8..000000000 --- a/core/src/main/java/google/registry/backup/RestoreCommitLogsAction.java +++ /dev/null @@ -1,208 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.backup; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.collect.ImmutableList.toImmutableList; -import static com.google.common.collect.Iterators.peekingIterator; -import static google.registry.backup.BackupUtils.createDeserializingIterator; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; - -import com.google.appengine.api.datastore.DatastoreService; -import com.google.appengine.api.datastore.Entity; -import com.google.appengine.api.datastore.EntityTranslator; -import com.google.cloud.storage.BlobInfo; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Lists; -import com.google.common.collect.PeekingIterator; -import com.google.common.collect.Streams; -import com.google.common.flogger.FluentLogger; -import com.googlecode.objectify.Key; -import com.googlecode.objectify.Result; -import com.googlecode.objectify.util.ResultNow; -import google.registry.config.RegistryConfig.Config; -import google.registry.config.RegistryEnvironment; -import google.registry.gcs.GcsUtils; -import google.registry.model.ImmutableObject; -import google.registry.model.annotations.DeleteAfterMigration; -import google.registry.model.ofy.CommitLogBucket; -import google.registry.model.ofy.CommitLogCheckpoint; -import google.registry.model.ofy.CommitLogCheckpointRoot; -import google.registry.model.ofy.CommitLogManifest; -import google.registry.model.ofy.CommitLogMutation; -import google.registry.request.Action; -import google.registry.request.Parameter; -import google.registry.request.auth.Auth; -import google.registry.util.Retrier; -import java.io.IOException; -import java.io.InputStream; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.Set; -import java.util.stream.Stream; -import javax.inject.Inject; -import org.joda.time.DateTime; - -/** Restore Registry 2 commit logs from GCS to Datastore. */ -@Action( - service = Action.Service.TOOLS, - path = RestoreCommitLogsAction.PATH, - method = Action.Method.POST, - automaticallyPrintOk = true, - auth = Auth.AUTH_INTERNAL_OR_ADMIN) -@DeleteAfterMigration -public class RestoreCommitLogsAction implements Runnable { - - private static final FluentLogger logger = FluentLogger.forEnclosingClass(); - - public static final String PATH = "/_dr/task/restoreCommitLogs"; - static final String DRY_RUN_PARAM = "dryRun"; - static final String FROM_TIME_PARAM = "fromTime"; - static final String TO_TIME_PARAM = "toTime"; - static final String BUCKET_OVERRIDE_PARAM = "gcsBucket"; - - private static final ImmutableSet FORBIDDEN_ENVIRONMENTS = - ImmutableSet.of(RegistryEnvironment.PRODUCTION, RegistryEnvironment.SANDBOX); - - @Inject GcsUtils gcsUtils; - - @Inject @Parameter(DRY_RUN_PARAM) boolean dryRun; - @Inject @Parameter(FROM_TIME_PARAM) DateTime fromTime; - @Inject @Parameter(TO_TIME_PARAM) DateTime toTime; - - @Inject - @Parameter(BUCKET_OVERRIDE_PARAM) - Optional gcsBucketOverride; - - @Inject DatastoreService datastoreService; - @Inject GcsDiffFileLister diffLister; - - @Inject - @Config("commitLogGcsBucket") - String defaultGcsBucket; - - @Inject Retrier retrier; - @Inject RestoreCommitLogsAction() {} - - @Override - public void run() { - checkArgument( - !FORBIDDEN_ENVIRONMENTS.contains(RegistryEnvironment.get()), - "DO NOT RUN IN PRODUCTION OR SANDBOX."); - if (dryRun) { - logger.atInfo().log("Running in dry-run mode."); - } - String gcsBucket = gcsBucketOverride.orElse(defaultGcsBucket); - logger.atInfo().log("Restoring from %s.", gcsBucket); - List diffFiles = diffLister.listDiffFiles(gcsBucket, fromTime, toTime); - if (diffFiles.isEmpty()) { - logger.atInfo().log("Nothing to restore."); - return; - } - Map bucketTimestamps = new HashMap<>(); - CommitLogCheckpoint lastCheckpoint = null; - for (BlobInfo metadata : diffFiles) { - logger.atInfo().log("Restoring: %s", metadata.getName()); - try (InputStream input = gcsUtils.openInputStream(metadata.getBlobId())) { - PeekingIterator commitLogs = - peekingIterator(createDeserializingIterator(input, true)); - lastCheckpoint = (CommitLogCheckpoint) commitLogs.next(); - saveOfy(ImmutableList.of(lastCheckpoint)); // Save the checkpoint itself. - while (commitLogs.hasNext()) { - CommitLogManifest manifest = restoreOneTransaction(commitLogs); - bucketTimestamps.put(manifest.getBucketId(), manifest.getCommitTime()); - } - } catch (IOException e) { - throw new RuntimeException(e); - } - } - // Restore the CommitLogCheckpointRoot and CommitLogBuckets. - saveOfy( - Streams.concat( - bucketTimestamps - .entrySet() - .stream() - .map( - entry -> - new CommitLogBucket.Builder() - .setBucketNum(entry.getKey()) - .setLastWrittenTime(entry.getValue()) - .build()), - Stream.of(CommitLogCheckpointRoot.create(lastCheckpoint.getCheckpointTime()))) - .collect(toImmutableList())); - logger.atInfo().log("Restore complete."); - } - - /** - * Restore the contents of one transaction to Datastore. - * - *

The objects to delete are listed in the {@link CommitLogManifest}, which will be the first - * object in the iterable. The objects to save follow, each as a {@link CommitLogMutation}. We - * restore by deleting the deletes and recreating the saves from their proto form. We also save - * the commit logs themselves back to Datastore, so that the commit log system itself is - * transparently restored alongside the data. - * - * @return the manifest, for use in restoring the {@link CommitLogBucket}. - */ - private CommitLogManifest restoreOneTransaction(PeekingIterator commitLogs) { - final CommitLogManifest manifest = (CommitLogManifest) commitLogs.next(); - Result deleteResult = deleteAsync(manifest.getDeletions()); - List entitiesToSave = Lists.newArrayList(auditedOfy().save().toEntity(manifest)); - while (commitLogs.hasNext() && commitLogs.peek() instanceof CommitLogMutation) { - CommitLogMutation mutation = (CommitLogMutation) commitLogs.next(); - entitiesToSave.add(auditedOfy().save().toEntity(mutation)); - entitiesToSave.add(EntityTranslator.createFromPbBytes(mutation.getEntityProtoBytes())); - } - saveRaw(entitiesToSave); - try { - deleteResult.now(); - } catch (Exception e) { - retrier.callWithRetry( - () -> deleteAsync(manifest.getDeletions()).now(), RuntimeException.class); - } - return manifest; - } - - private void saveRaw(List entitiesToSave) { - if (dryRun) { - logger.atInfo().log("Would have saved entities: %s", entitiesToSave); - return; - } - retrier.callWithRetry(() -> datastoreService.put(entitiesToSave), RuntimeException.class); - } - - private void saveOfy(Iterable objectsToSave) { - if (dryRun) { - logger.atInfo().log("Would have saved entities: %s", objectsToSave); - return; - } - retrier.callWithRetry( - () -> auditedOfy().saveWithoutBackup().entities(objectsToSave).now(), - RuntimeException.class); - } - - private Result deleteAsync(Set> keysToDelete) { - if (dryRun) { - logger.atInfo().log("Would have deleted entities: %s", keysToDelete); - } - return dryRun || keysToDelete.isEmpty() - ? new ResultNow(null) - : auditedOfy().deleteWithoutBackup().keys(keysToDelete); - } - -} diff --git a/core/src/main/java/google/registry/backup/VersionedEntity.java b/core/src/main/java/google/registry/backup/VersionedEntity.java deleted file mode 100644 index 7c57be50d..000000000 --- a/core/src/main/java/google/registry/backup/VersionedEntity.java +++ /dev/null @@ -1,200 +0,0 @@ -// Copyright 2020 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.backup; - -import com.google.appengine.api.datastore.Entity; -import com.google.appengine.api.datastore.EntityTranslator; -import com.google.appengine.api.datastore.Key; -import com.google.auto.value.AutoValue; -import com.google.auto.value.extension.memoized.Memoized; -import google.registry.model.annotations.DeleteAfterMigration; -import google.registry.model.ofy.CommitLogManifest; -import google.registry.model.ofy.CommitLogMutation; -import java.io.Serializable; -import java.util.Arrays; -import java.util.Optional; -import java.util.stream.Stream; -import javax.annotation.Nullable; - -/** - * A Datastore {@link Entity Entity's} serialized state with timestamp. The intended use case is a - * multi-stage pipeline where an Entity's Java form is not needed in most stages. - * - *

For a new or updated Entity, its serialized bytes are stored along with its Datastore {@link - * Key}. For a deleted entity, only its Datastore {@link Key} is stored, and the {@link - * #entityProtoBytes} field is left unset. - * - *

Storing raw bytes is motivated by two factors. First, since I/O is frequent and the Java - * objects are rarely needed in our target use case, storing raw bytes is the most efficient - * approach. More importantly, due to our data model and our customization of {@link - * google.registry.model.ofy.ObjectifyService ObjectifyService}, it is challenging to implement a - * serializer for Objectify entities that preserves the value of all properties. Without such - * serializers, Objectify entities cannot be used in a pipeline. - * - *

Objectify entities do not implement {@link Serializable}, serialization of such objects is as - * follows: - * - *

- * - *

When the first conversion above is applied to an Objectify entity, a property value in the - * output may differ from the input in two situations: - * - *

- * - *

Working around the side effects caused by our customization is difficult. Any solution would - * likely rely on Objectify's stack of context. However, many Objectify invocations in our code base - * are hardcoded to call the customized version of ObjectifyService, rendering Objectify's stack - * useless. - * - *

For now, this inability to use Objectify entities in pipelines is mostly a testing problem: we - * can not perform {@link org.apache.beam.sdk.testing.PAssert BEAM pipeline assertions} on Objectify - * entities. {@code InitSqlTestUtils.assertContainsExactlyElementsIn} is an example of a workaround. - * - *

Note that {@link Optional java.util.Optional} is not serializable, therefore cannot be used as - * property type in this class. - */ -@AutoValue -@DeleteAfterMigration -public abstract class VersionedEntity implements Serializable { - - private static final long serialVersionUID = 1L; - - public abstract long commitTimeMills(); - - /** The {@link Key} of the {@link Entity}. */ - public abstract Key key(); - - /** Serialized form of the {@link Entity}. This property is {@code null} for a deleted Entity. */ - @Nullable - abstract ImmutableBytes entityProtoBytes(); - - @Memoized - public Optional getEntity() { - return Optional.ofNullable(entityProtoBytes()) - .map(ImmutableBytes::getBytes) - .map(EntityTranslator::createFromPbBytes); - } - - public boolean isDelete() { - return entityProtoBytes() == null; - } - - /** - * Converts deleted entity keys in {@code manifest} into a {@link Stream} of {@link - * VersionedEntity VersionedEntities}. See {@link CommitLogImports#loadEntities} for more - * information. - */ - static Stream fromManifest(CommitLogManifest manifest) { - long commitTimeMillis = manifest.getCommitTime().getMillis(); - return manifest.getDeletions().stream() - .map(com.googlecode.objectify.Key::getRaw) - .map(key -> newBuilder().commitTimeMills(commitTimeMillis).key(key).build()); - } - - /* Converts a {@link CommitLogMutation} to a {@link VersionedEntity}. */ - static VersionedEntity fromMutation(CommitLogMutation mutation) { - return from( - com.googlecode.objectify.Key.create(mutation).getParent().getId(), - mutation.getEntityProtoBytes()); - } - - public static VersionedEntity from(long commitTimeMillis, byte[] entityProtoBytes) { - return newBuilder() - .entityProtoBytes(entityProtoBytes) - .key(EntityTranslator.createFromPbBytes(entityProtoBytes).getKey()) - .commitTimeMills(commitTimeMillis) - .build(); - } - - private static Builder newBuilder() { - return new AutoValue_VersionedEntity.Builder(); - } - - @AutoValue.Builder - public abstract static class Builder { - - public abstract Builder commitTimeMills(long commitTimeMillis); - - abstract Builder entityProtoBytes(ImmutableBytes bytes); - - public abstract Builder key(Key key); - - public abstract VersionedEntity build(); - - Builder entityProtoBytes(byte[] bytes) { - return entityProtoBytes(new ImmutableBytes(bytes)); - } - } - - /** - * Wraps a byte array and prevents it from being modified by its original owner. - * - *

While this class seems an overkill, it exists for two reasons: - * - *

- */ - static final class ImmutableBytes implements Serializable { - - private static final long serialVersionUID = 1L; - - private final byte[] bytes; - - ImmutableBytes(byte[] bytes) { - this.bytes = Arrays.copyOf(bytes, bytes.length); - } - - /** - * Returns the saved byte array. Invocation is restricted to trusted callers, who must not - * modify the array. - */ - byte[] getBytes() { - return bytes; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (!(o instanceof ImmutableBytes)) { - return false; - } - ImmutableBytes that = (ImmutableBytes) o; - // Do not use Objects.equals, which checks reference identity instead of data in array. - return Arrays.equals(bytes, that.bytes); - } - - @Override - public int hashCode() { - // Do not use Objects.hashCode, which hashes the reference, not the data in array. - return Arrays.hashCode(bytes); - } - } -} diff --git a/core/src/main/java/google/registry/backup/package-info.java b/core/src/main/java/google/registry/backup/package-info.java deleted file mode 100644 index 292d49937..000000000 --- a/core/src/main/java/google/registry/backup/package-info.java +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -@javax.annotation.ParametersAreNonnullByDefault -package google.registry.backup; diff --git a/core/src/main/java/google/registry/batch/AsyncTaskEnqueuer.java b/core/src/main/java/google/registry/batch/AsyncTaskEnqueuer.java index fdb994d31..596d467a8 100644 --- a/core/src/main/java/google/registry/batch/AsyncTaskEnqueuer.java +++ b/core/src/main/java/google/registry/batch/AsyncTaskEnqueuer.java @@ -71,7 +71,7 @@ public final class AsyncTaskEnqueuer { public AsyncTaskEnqueuer( @Named(QUEUE_ASYNC_DELETE) Queue asyncDeletePullQueue, @Named(QUEUE_ASYNC_HOST_RENAME) Queue asyncDnsRefreshPullQueue, - @Config("asyncDeleteFlowMapreduceDelay") Duration asyncDeleteDelay, + @Config("asyncDeleteDelay") Duration asyncDeleteDelay, CloudTasksUtils cloudTasksUtils, Retrier retrier) { this.asyncDeletePullQueue = asyncDeletePullQueue; diff --git a/core/src/main/java/google/registry/batch/BatchModule.java b/core/src/main/java/google/registry/batch/BatchModule.java index 18cb2fec7..f452066fb 100644 --- a/core/src/main/java/google/registry/batch/BatchModule.java +++ b/core/src/main/java/google/registry/batch/BatchModule.java @@ -21,6 +21,7 @@ import static google.registry.batch.AsyncTaskEnqueuer.PARAM_RESOURCE_KEY; import static google.registry.batch.AsyncTaskEnqueuer.QUEUE_ASYNC_ACTIONS; import static google.registry.batch.AsyncTaskEnqueuer.QUEUE_ASYNC_DELETE; import static google.registry.batch.AsyncTaskEnqueuer.QUEUE_ASYNC_HOST_RENAME; +import static google.registry.request.RequestParameters.extractBooleanParameter; import static google.registry.request.RequestParameters.extractIntParameter; import static google.registry.request.RequestParameters.extractLongParameter; import static google.registry.request.RequestParameters.extractOptionalBooleanParameter; @@ -45,6 +46,9 @@ import org.joda.time.DateTime; @Module public class BatchModule { + public static final String PARAM_DRY_RUN = "dryRun"; + public static final String PARAM_FAST = "fast"; + @Provides @Parameter("jobName") static Optional provideJobName(HttpServletRequest req) { @@ -113,9 +117,15 @@ public class BatchModule { } @Provides - @Parameter(ResaveAllEppResourcesPipelineAction.PARAM_FAST) - static Optional provideIsFast(HttpServletRequest req) { - return extractOptionalBooleanParameter(req, ResaveAllEppResourcesPipelineAction.PARAM_FAST); + @Parameter(PARAM_FAST) + static boolean provideIsFast(HttpServletRequest req) { + return extractBooleanParameter(req, PARAM_FAST); + } + + @Provides + @Parameter(PARAM_DRY_RUN) + static boolean provideIsDryRun(HttpServletRequest req) { + return extractBooleanParameter(req, PARAM_DRY_RUN); } @Provides diff --git a/core/src/main/java/google/registry/batch/DeleteLoadTestDataAction.java b/core/src/main/java/google/registry/batch/DeleteLoadTestDataAction.java index 09dc237fe..356f5826f 100644 --- a/core/src/main/java/google/registry/batch/DeleteLoadTestDataAction.java +++ b/core/src/main/java/google/registry/batch/DeleteLoadTestDataAction.java @@ -16,39 +16,30 @@ package google.registry.batch; import static com.google.common.base.Preconditions.checkState; import static com.google.common.collect.ImmutableSet.toImmutableSet; +import static google.registry.batch.BatchModule.PARAM_DRY_RUN; import static google.registry.config.RegistryEnvironment.PRODUCTION; -import static google.registry.mapreduce.MapreduceRunner.PARAM_DRY_RUN; -import static google.registry.mapreduce.inputs.EppResourceInputs.createEntityInput; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; import static google.registry.persistence.transaction.TransactionManagerFactory.tm; import static google.registry.request.Action.Method.POST; import static google.registry.util.DateTimeUtils.END_OF_TIME; -import com.google.appengine.tools.mapreduce.Mapper; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.flogger.FluentLogger; -import com.googlecode.objectify.Key; import google.registry.config.RegistryEnvironment; import google.registry.flows.poll.PollFlowUtils; -import google.registry.mapreduce.MapreduceRunner; import google.registry.model.EppResource; import google.registry.model.EppResourceUtils; import google.registry.model.contact.ContactResource; import google.registry.model.domain.DomainBase; import google.registry.model.host.HostResource; -import google.registry.model.index.EppResourceIndex; -import google.registry.model.index.ForeignKeyIndex; import google.registry.model.poll.PollMessage; import google.registry.model.reporting.HistoryEntry; import google.registry.model.reporting.HistoryEntryDao; import google.registry.persistence.VKey; import google.registry.request.Action; import google.registry.request.Parameter; -import google.registry.request.Response; import google.registry.request.auth.Auth; import google.registry.util.Clock; -import java.util.List; import javax.inject.Inject; /** @@ -57,8 +48,8 @@ import javax.inject.Inject; * *

This only deletes contacts and hosts, NOT domains. To delete domains, use {@link * DeleteProberDataAction} and pass it the TLD(s) that the load test domains were created on. Note - * that DeleteProberDataAction is safe enough to run in production whereas this mapreduce is not, - * but this one does not need to be runnable in production because load testing isn't run against + * that DeleteProberDataAction is safe enough to run in production whereas this action is not, but + * this one does not need to be runnable in production because load testing isn't run against * production. */ @Action( @@ -79,48 +70,31 @@ public class DeleteLoadTestDataAction implements Runnable { private static final ImmutableSet LOAD_TEST_REGISTRARS = ImmutableSet.of("proxy"); private final boolean isDryRun; - private final MapreduceRunner mrRunner; - private final Response response; private final Clock clock; @Inject DeleteLoadTestDataAction( @Parameter(PARAM_DRY_RUN) boolean isDryRun, - MapreduceRunner mrRunner, - Response response, Clock clock) { this.isDryRun = isDryRun; - this.mrRunner = mrRunner; - this.response = response; this.clock = clock; } @Override public void run() { - // This mapreduce doesn't guarantee that foreign key relations are preserved, so isn't safe to + // This action doesn't guarantee that foreign key relations are preserved, so isn't safe to // run on production. On other environments, data is fully wiped out occasionally anyway, so // having some broken data that isn't referred to isn't the end of the world. checkState( !RegistryEnvironment.get().equals(PRODUCTION), - "This mapreduce is not safe to run on PRODUCTION."); + "This action is not safe to run on PRODUCTION."); - if (tm().isOfy()) { - mrRunner - .setJobName("Delete load test data") - .setModuleName("backend") - .runMapOnly( - new DeleteLoadTestDataMapper(isDryRun), - ImmutableList.of( - createEntityInput(ContactResource.class), createEntityInput(HostResource.class))) - .sendLinkToMapreduceConsole(response); - } else { - tm().transact( - () -> { - LOAD_TEST_REGISTRARS.forEach(this::deletePollMessages); - tm().loadAllOfStream(ContactResource.class).forEach(this::deleteContact); - tm().loadAllOfStream(HostResource.class).forEach(this::deleteHost); - }); - } + tm().transact( + () -> { + LOAD_TEST_REGISTRARS.forEach(this::deletePollMessages); + tm().loadAllOfStream(ContactResource.class).forEach(this::deleteContact); + tm().loadAllOfStream(HostResource.class).forEach(this::deleteHost); + }); } private void deletePollMessages(String registrarId) { @@ -184,54 +158,4 @@ public class DeleteLoadTestDataAction implements Runnable { tm().delete(eppResource); } } - - /** Provides the map method that runs for each existing contact and host entity. */ - public static class DeleteLoadTestDataMapper extends Mapper { - - private static final long serialVersionUID = -3817710674062432694L; - - private final boolean isDryRun; - - public DeleteLoadTestDataMapper(boolean isDryRun) { - this.isDryRun = isDryRun; - } - - @Override - public final void map(EppResource resource) { - if (LOAD_TEST_REGISTRARS.contains(resource.getPersistedCurrentSponsorRegistrarId())) { - deleteResource(resource); - getContext() - .incrementCounter( - String.format("deleted %s entities", resource.getClass().getSimpleName())); - } else { - getContext().incrementCounter("skipped, not load test data"); - } - } - - private void deleteResource(EppResource resource) { - final Key eppIndex = - Key.create(EppResourceIndex.create(Key.create(resource))); - final Key> fki = ForeignKeyIndex.createKey(resource); - int numEntitiesDeleted = - tm().transact( - () -> { - // This ancestor query selects all descendant entities. - List> resourceAndDependentKeys = - auditedOfy().load().ancestor(resource).keys().list(); - ImmutableSet> allKeys = - new ImmutableSet.Builder>() - .add(fki) - .add(eppIndex) - .addAll(resourceAndDependentKeys) - .build(); - if (isDryRun) { - logger.atInfo().log("Would hard-delete the following entities: %s", allKeys); - } else { - auditedOfy().deleteWithoutBackup().keys(allKeys); - } - return allKeys.size(); - }); - getContext().incrementCounter("total entities deleted", numEntitiesDeleted); - } - } } diff --git a/core/src/main/java/google/registry/batch/DeleteProberDataAction.java b/core/src/main/java/google/registry/batch/DeleteProberDataAction.java index 0a61e12e8..fa64c928a 100644 --- a/core/src/main/java/google/registry/batch/DeleteProberDataAction.java +++ b/core/src/main/java/google/registry/batch/DeleteProberDataAction.java @@ -17,45 +17,33 @@ package google.registry.batch; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkState; import static com.google.common.collect.ImmutableSet.toImmutableSet; +import static google.registry.batch.BatchModule.PARAM_DRY_RUN; import static google.registry.config.RegistryEnvironment.PRODUCTION; -import static google.registry.mapreduce.MapreduceRunner.PARAM_DRY_RUN; import static google.registry.model.ResourceTransferUtils.updateForeignKeyIndexDeletionTime; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; import static google.registry.model.reporting.HistoryEntry.Type.DOMAIN_DELETE; import static google.registry.model.tld.Registries.getTldsOfType; import static google.registry.persistence.transaction.TransactionManagerFactory.jpaTm; import static google.registry.persistence.transaction.TransactionManagerFactory.tm; import static google.registry.request.Action.Method.POST; import static google.registry.request.RequestParameters.PARAM_TLDS; -import static org.joda.time.DateTimeZone.UTC; -import com.google.appengine.tools.mapreduce.Mapper; -import com.google.common.base.Splitter; import com.google.common.base.Strings; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterables; import com.google.common.collect.Sets; import com.google.common.flogger.FluentLogger; -import com.googlecode.objectify.Key; import google.registry.config.RegistryConfig.Config; import google.registry.config.RegistryEnvironment; import google.registry.dns.DnsQueue; -import google.registry.mapreduce.MapreduceRunner; -import google.registry.mapreduce.inputs.EppResourceInputs; import google.registry.model.CreateAutoTimestamp; import google.registry.model.EppResourceUtils; import google.registry.model.domain.DomainBase; import google.registry.model.domain.DomainHistory; -import google.registry.model.index.EppResourceIndex; -import google.registry.model.index.ForeignKeyIndex; -import google.registry.model.tld.Registry; import google.registry.model.tld.Registry.TldType; import google.registry.request.Action; import google.registry.request.Parameter; import google.registry.request.Response; import google.registry.request.auth.Auth; -import java.util.List; import java.util.concurrent.atomic.AtomicInteger; import javax.inject.Inject; import org.hibernate.CacheMode; @@ -94,8 +82,6 @@ public class DeleteProberDataAction implements Runnable { */ private static final Duration SOFT_DELETE_DELAY = Duration.standardHours(1); - private static final DnsQueue dnsQueue = DnsQueue.create(); - // Domains to delete must: // 1. Be in one of the prober TLDs // 2. Not be a nic domain @@ -115,6 +101,8 @@ public class DeleteProberDataAction implements Runnable { /** Number of domains to retrieve and delete per SQL transaction. */ private static final int BATCH_SIZE = 1000; + @Inject DnsQueue dnsQueue; + @Inject @Parameter(PARAM_DRY_RUN) boolean isDryRun; /** List of TLDs to work on. If empty - will work on all TLDs that end with .test. */ @Inject @Parameter(PARAM_TLDS) ImmutableSet tlds; @@ -123,7 +111,6 @@ public class DeleteProberDataAction implements Runnable { @Config("registryAdminClientId") String registryAdminRegistrarId; - @Inject MapreduceRunner mrRunner; @Inject Response response; @Inject DeleteProberDataAction() {} @@ -145,21 +132,7 @@ public class DeleteProberDataAction implements Runnable { "If tlds are given, they must all exist and be TEST tlds. Given: %s, not found: %s", tlds, Sets.difference(tlds, deletableTlds)); - ImmutableSet proberRoidSuffixes = - deletableTlds.stream() - .map(tld -> Registry.get(tld).getRoidSuffix()) - .collect(toImmutableSet()); - if (tm().isOfy()) { - mrRunner - .setJobName("Delete prober data") - .setModuleName("backend") - .runMapOnly( - new DeleteProberDataMapper(proberRoidSuffixes, isDryRun, registryAdminRegistrarId), - ImmutableList.of(EppResourceInputs.createKeyInput(DomainBase.class))) - .sendLinkToMapreduceConsole(response); - } else { - runSqlJob(deletableTlds); - } + runSqlJob(deletableTlds); } private void runSqlJob(ImmutableSet deletableTlds) { @@ -231,7 +204,7 @@ public class DeleteProberDataAction implements Runnable { "Would soft-delete the active domain: %s (%s).", domain.getDomainName(), domain.getRepoId()); } else { - softDeleteDomain(domain, registryAdminRegistrarId, dnsQueue); + softDeleteDomain(domain); } softDeletedDomains.incrementAndGet(); } else { @@ -280,8 +253,7 @@ public class DeleteProberDataAction implements Runnable { } // Take a DNS queue + admin registrar id as input so that it can be called from the mapper as well - private static void softDeleteDomain( - DomainBase domain, String registryAdminRegistrarId, DnsQueue localDnsQueue) { + private void softDeleteDomain(DomainBase domain) { DomainBase deletedDomain = domain.asBuilder().setDeletionTime(tm().getTransactionTime()).setStatusValues(null).build(); DomainHistory historyEntry = @@ -299,119 +271,6 @@ public class DeleteProberDataAction implements Runnable { tm().putAllWithoutBackup(ImmutableList.of(deletedDomain, historyEntry)); // updating foreign keys is a no-op in SQL updateForeignKeyIndexDeletionTime(deletedDomain); - localDnsQueue.addDomainRefreshTask(deletedDomain.getDomainName()); - } - - /** Provides the map method that runs for each existing DomainBase entity. */ - public static class DeleteProberDataMapper extends Mapper, Void, Void> { - - private static final DnsQueue dnsQueue = DnsQueue.create(); - private static final long serialVersionUID = -7724537393697576369L; - - private final ImmutableSet proberRoidSuffixes; - private final Boolean isDryRun; - private final String registryAdminRegistrarId; - - public DeleteProberDataMapper( - ImmutableSet proberRoidSuffixes, - Boolean isDryRun, - String registryAdminRegistrarId) { - this.proberRoidSuffixes = proberRoidSuffixes; - this.isDryRun = isDryRun; - this.registryAdminRegistrarId = registryAdminRegistrarId; - } - - @Override - public final void map(Key key) { - try { - String roidSuffix = Iterables.getLast(Splitter.on('-').split(key.getName())); - if (proberRoidSuffixes.contains(roidSuffix)) { - deleteDomain(key); - } else { - getContext().incrementCounter("skipped, non-prober data"); - } - } catch (Throwable t) { - logger.atSevere().withCause(t).log("Error while deleting prober data for key %s.", key); - getContext().incrementCounter(String.format("error, kind %s", key.getKind())); - } - } - - private void deleteDomain(final Key domainKey) { - final DomainBase domain = auditedOfy().load().key(domainKey).now(); - - DateTime now = DateTime.now(UTC); - - if (domain == null) { - // Depending on how stale Datastore indexes are, we can get keys to resources that are - // already deleted (e.g. by a recent previous invocation of this mapreduce). So ignore them. - getContext().incrementCounter("already deleted"); - return; - } - - String domainName = domain.getDomainName(); - if (domainName.equals("nic." + domain.getTld())) { - getContext().incrementCounter("skipped, NIC domain"); - return; - } - if (now.isBefore(domain.getCreationTime().plus(DOMAIN_USED_DURATION))) { - getContext().incrementCounter("skipped, domain too new"); - return; - } - if (!domain.getSubordinateHosts().isEmpty()) { - logger.atWarning().log( - "Cannot delete domain %s (%s) because it has subordinate hosts.", - domainName, domainKey); - getContext().incrementCounter("skipped, had subordinate host(s)"); - return; - } - - // If the domain is still active, that means that the prober encountered a failure and did not - // successfully soft-delete the domain (thus leaving its DNS entry published). We soft-delete - // it now so that the DNS entry can be handled. The domain will then be hard-deleted the next - // time the mapreduce is run. - if (EppResourceUtils.isActive(domain, now)) { - if (isDryRun) { - logger.atInfo().log( - "Would soft-delete the active domain: %s (%s).", domainName, domainKey); - } else { - tm().transact(() -> softDeleteDomain(domain, registryAdminRegistrarId, dnsQueue)); - } - getContext().incrementCounter("domains soft-deleted"); - return; - } - // If the domain isn't active, we want to make sure it hasn't been active for "a while" before - // deleting it. This prevents accidental double-map with the same key from immediately - // deleting active domains - if (now.isBefore(domain.getDeletionTime().plus(SOFT_DELETE_DELAY))) { - getContext().incrementCounter("skipped, domain too recently soft deleted"); - return; - } - - final Key eppIndex = Key.create(EppResourceIndex.create(domainKey)); - final Key> fki = ForeignKeyIndex.createKey(domain); - - int entitiesDeleted = - tm().transact( - () -> { - // This ancestor query selects all descendant HistoryEntries, BillingEvents, - // PollMessages, and TLD-specific entities, as well as the domain itself. - List> domainAndDependentKeys = - auditedOfy().load().ancestor(domainKey).keys().list(); - ImmutableSet> allKeys = - new ImmutableSet.Builder>() - .add(fki) - .add(eppIndex) - .addAll(domainAndDependentKeys) - .build(); - if (isDryRun) { - logger.atInfo().log("Would hard-delete the following entities: %s", allKeys); - } else { - auditedOfy().deleteWithoutBackup().keys(allKeys); - } - return allKeys.size(); - }); - getContext().incrementCounter("domains hard-deleted"); - getContext().incrementCounter("total entities hard-deleted", entitiesDeleted); - } + dnsQueue.addDomainRefreshTask(deletedDomain.getDomainName()); } } diff --git a/core/src/main/java/google/registry/batch/ExpandRecurringBillingEventsAction.java b/core/src/main/java/google/registry/batch/ExpandRecurringBillingEventsAction.java index 042b89cf4..4f2bea2da 100644 --- a/core/src/main/java/google/registry/batch/ExpandRecurringBillingEventsAction.java +++ b/core/src/main/java/google/registry/batch/ExpandRecurringBillingEventsAction.java @@ -18,11 +18,9 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.collect.ImmutableSet.toImmutableSet; import static com.google.common.collect.Sets.difference; import static com.google.common.collect.Sets.newHashSet; -import static google.registry.mapreduce.MapreduceRunner.PARAM_DRY_RUN; -import static google.registry.mapreduce.inputs.EppResourceInputs.createChildEntityInput; +import static google.registry.batch.BatchModule.PARAM_DRY_RUN; import static google.registry.model.common.Cursor.CursorType.RECURRING_BILLING; import static google.registry.model.domain.Period.Unit.YEARS; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; import static google.registry.model.reporting.HistoryEntry.Type.DOMAIN_AUTORENEW; import static google.registry.persistence.transaction.QueryComposer.Comparator.EQ; import static google.registry.persistence.transaction.TransactionManagerFactory.jpaTm; @@ -34,19 +32,12 @@ import static google.registry.util.DateTimeUtils.START_OF_TIME; import static google.registry.util.DateTimeUtils.earliestOf; import static google.registry.util.DomainNameUtils.getTldFromDomainName; -import com.google.appengine.tools.mapreduce.Mapper; -import com.google.appengine.tools.mapreduce.Reducer; -import com.google.appengine.tools.mapreduce.ReducerInput; import com.google.auto.value.AutoValue; -import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Range; import com.google.common.collect.Streams; import com.google.common.flogger.FluentLogger; import google.registry.config.RegistryConfig.Config; -import google.registry.flows.domain.DomainPricingLogic; -import google.registry.mapreduce.MapreduceRunner; -import google.registry.mapreduce.inputs.NullInput; import google.registry.model.ImmutableObject; import google.registry.model.billing.BillingEvent; import google.registry.model.billing.BillingEvent.Flag; @@ -74,9 +65,9 @@ import org.joda.money.Money; import org.joda.time.DateTime; /** - * A mapreduce that expands {@link Recurring} billing events into synthetic {@link OneTime} events. + * An action that expands {@link Recurring} billing events into synthetic {@link OneTime} events. * - *

The cursor used throughout this mapreduce (overridden if necessary using the parameter {@code + *

The cursor used throughout this action (overridden if necessary using the parameter {@code * cursorTime}) represents the inclusive lower bound on the range of billing times that will be * expanded as a result of the job (the exclusive upper bound being the execution time of the job). */ @@ -87,11 +78,9 @@ import org.joda.time.DateTime; public class ExpandRecurringBillingEventsAction implements Runnable { public static final String PARAM_CURSOR_TIME = "cursorTime"; - private static final String ERROR_COUNTER = "errors"; private static final FluentLogger logger = FluentLogger.forEnclosingClass(); @Inject Clock clock; - @Inject MapreduceRunner mrRunner; @Inject @Config("jdbcBatchSize") @@ -100,7 +89,6 @@ public class ExpandRecurringBillingEventsAction implements Runnable { @Inject @Parameter(PARAM_DRY_RUN) boolean isDryRun; @Inject @Parameter(PARAM_CURSOR_TIME) Optional cursorTimeParam; - @Inject DomainPricingLogic domainPricingLogic; @Inject Response response; @Inject ExpandRecurringBillingEventsAction() {} @@ -119,22 +107,7 @@ public class ExpandRecurringBillingEventsAction implements Runnable { logger.atInfo().log( "Running Recurring billing event expansion for billing time range [%s, %s).", cursorTime, executeTime); - if (tm().isOfy()) { - mrRunner - .setJobName("Expand Recurring billing events into synthetic OneTime events.") - .setModuleName("backend") - .runMapreduce( - new ExpandRecurringBillingEventsMapper(isDryRun, cursorTime, clock.nowUtc()), - new ExpandRecurringBillingEventsReducer(isDryRun, persistedCursorTime), - // Add an extra shard that maps over a null recurring event (see the mapper for why). - ImmutableList.of( - new NullInput<>(), - createChildEntityInput( - ImmutableSet.of(DomainBase.class), ImmutableSet.of(Recurring.class)))) - .sendLinkToMapreduceConsole(response); - } else { - expandSqlBillingEventsInBatches(executeTime, cursorTime, persistedCursorTime); - } + expandSqlBillingEventsInBatches(executeTime, cursorTime, persistedCursorTime); } private void expandSqlBillingEventsInBatches( @@ -257,118 +230,13 @@ public class ExpandRecurringBillingEventsAction implements Runnable { } } - /** Mapper to expand {@link Recurring} billing events into synthetic {@link OneTime} events. */ - public static class ExpandRecurringBillingEventsMapper - extends Mapper { - - private static final long serialVersionUID = 8376442755556228455L; - - private final boolean isDryRun; - private final DateTime cursorTime; - private final DateTime executeTime; - - public ExpandRecurringBillingEventsMapper( - boolean isDryRun, DateTime cursorTime, DateTime executeTime) { - this.isDryRun = isDryRun; - this.cursorTime = cursorTime; - this.executeTime = executeTime; - } - - @Override - public final void map(final Recurring recurring) { - // This single emit forces the reducer to run at the end of the map job, so that a mapper - // that runs without error will advance the cursor at the end of processing (unless this was - // a dry run, in which case the cursor should not be advanced). - if (recurring == null) { - emit(cursorTime, executeTime); - return; - } - getContext().incrementCounter("Recurring billing events encountered"); - // Ignore any recurring billing events that have yet to apply. - if (recurring.getEventTime().isAfter(executeTime) - // This second case occurs when a domain is transferred or deleted before first renewal. - || recurring.getRecurrenceEndTime().isBefore(recurring.getEventTime())) { - getContext().incrementCounter("Recurring billing events ignored"); - return; - } - int numBillingEventsSaved = 0; - try { - numBillingEventsSaved = - tm().transactNew( - () -> expandBillingEvent(recurring, executeTime, cursorTime, isDryRun)); - } catch (Throwable t) { - getContext().incrementCounter("error: " + t.getClass().getSimpleName()); - getContext().incrementCounter(ERROR_COUNTER); - throw new RuntimeException( - String.format( - "Error while expanding Recurring billing events for %d", recurring.getId()), - t); - } - if (!isDryRun) { - getContext().incrementCounter("Saved OneTime billing events", numBillingEventsSaved); - } else { - getContext() - .incrementCounter("Generated OneTime billing events (dry run)", numBillingEventsSaved); - } - } - } - - /** - * "Reducer" to advance the cursor after all map jobs have been completed. The NullInput into the - * mapper will cause the mapper to emit one timestamp pair (current cursor and execution time), - * and the cursor will be advanced (and the timestamps logged) at the end of a successful - * mapreduce. - */ - public static class ExpandRecurringBillingEventsReducer - extends Reducer { - - private final boolean isDryRun; - private final DateTime expectedPersistedCursorTime; - - public ExpandRecurringBillingEventsReducer( - boolean isDryRun, DateTime expectedPersistedCursorTime) { - this.isDryRun = isDryRun; - this.expectedPersistedCursorTime = expectedPersistedCursorTime; - } - - @Override - public void reduce(final DateTime cursorTime, final ReducerInput executionTimeInput) { - if (getContext().getCounter(ERROR_COUNTER).getValue() > 0) { - logger.atSevere().log( - "One or more errors logged during recurring event expansion. Cursor will" - + " not be advanced."); - return; - } - final DateTime executionTime = executionTimeInput.next(); - logger.atInfo().log( - "Recurring event expansion %s complete for billing event range [%s, %s).", - isDryRun ? "(dry run) " : "", cursorTime, executionTime); - tm().transact( - () -> { - Cursor cursor = - auditedOfy().load().key(Cursor.createGlobalKey(RECURRING_BILLING)).now(); - DateTime currentCursorTime = - (cursor == null ? START_OF_TIME : cursor.getCursorTime()); - if (!currentCursorTime.equals(expectedPersistedCursorTime)) { - logger.atSevere().log( - "Current cursor position %s does not match expected cursor position %s.", - currentCursorTime, expectedPersistedCursorTime); - return; - } - if (!isDryRun) { - tm().put(Cursor.createGlobal(RECURRING_BILLING, executionTime)); - } - }); - } - } - private static int expandBillingEvent( Recurring recurring, DateTime executeTime, DateTime cursorTime, boolean isDryRun) { ImmutableSet.Builder syntheticOneTimesBuilder = new ImmutableSet.Builder<>(); final Registry tld = Registry.get(getTldFromDomainName(recurring.getTargetId())); // Determine the complete set of times at which this recurring event should - // occur (up to and including the runtime of the mapreduce). + // occur (up to and including the runtime of the action). Iterable eventTimes = recurring .getRecurrenceTimeOfYear() @@ -385,14 +253,10 @@ public class ExpandRecurringBillingEventsAction implements Runnable { VKey.create( DomainBase.class, recurring.getDomainRepoId(), recurring.getParentKey().getParent()); Iterable oneTimesForDomain; - if (tm().isOfy()) { - oneTimesForDomain = auditedOfy().load().type(OneTime.class).ancestor(domainKey.getOfyKey()); - } else { - oneTimesForDomain = - tm().createQueryComposer(OneTime.class) - .where("domainRepoId", EQ, recurring.getDomainRepoId()) - .list(); - } + oneTimesForDomain = + tm().createQueryComposer(OneTime.class) + .where("domainRepoId", EQ, recurring.getDomainRepoId()) + .list(); // Determine the billing times that already have OneTime events persisted. ImmutableSet existingBillingTimes = @@ -463,7 +327,7 @@ public class ExpandRecurringBillingEventsAction implements Runnable { /** * Filters a set of {@link DateTime}s down to event times that are in scope for a particular - * mapreduce run, given the cursor time and the mapreduce execution time. + * action run, given the cursor time and the action execution time. */ protected static ImmutableSet getBillingTimesInScope( Iterable eventTimes, diff --git a/core/src/main/java/google/registry/batch/ResaveAllEppResourcesAction.java b/core/src/main/java/google/registry/batch/ResaveAllEppResourcesAction.java deleted file mode 100644 index 9e79da0b9..000000000 --- a/core/src/main/java/google/registry/batch/ResaveAllEppResourcesAction.java +++ /dev/null @@ -1,128 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.batch; - -import static google.registry.mapreduce.MapreduceRunner.PARAM_FAST; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.persistence.transaction.TransactionManagerFactory.tm; - -import com.google.appengine.tools.mapreduce.Mapper; -import com.google.common.collect.ImmutableList; -import com.googlecode.objectify.Key; -import google.registry.mapreduce.MapreduceRunner; -import google.registry.mapreduce.inputs.EppResourceInputs; -import google.registry.model.EppResource; -import google.registry.model.annotations.DeleteAfterMigration; -import google.registry.request.Action; -import google.registry.request.Parameter; -import google.registry.request.Response; -import google.registry.request.auth.Auth; -import javax.inject.Inject; - -/** - * A mapreduce that re-saves all EppResources, projecting them forward to the current time. - * - *

This is useful for completing data migrations on EppResource fields that are accomplished - * with @OnSave or @OnLoad annotations, and also guarantees that all EppResources will get fresh - * commit logs (for backup purposes). Additionally, pending actions such as transfers or grace - * periods that are past their effective time will be resolved. - * - *

Because there are no auth settings in the {@link Action} annotation, this command can only be - * run internally, or by pretending to be internal by setting the X-AppEngine-QueueName header, - * which only admin users can do. - * - *

If the ?fast=true querystring parameter is passed, then entities that are not - * changed by {@link EppResource#cloneProjectedAtTime} will not be re-saved. This helps prevent - * mutation load on the DB and has the beneficial side effect of writing out smaller commit logs. - * Note that this does NOT pick up mutations caused by migrations using the {@link - * com.googlecode.objectify.annotation.OnLoad} annotation, so if you are running a one-off schema - * migration, do not use fast mode. Fast mode defaults to false for this reason, but is used by the - * monthly invocation of the mapreduce. - */ -@Action( - service = Action.Service.BACKEND, - path = "/_dr/task/resaveAllEppResources", - auth = Auth.AUTH_INTERNAL_OR_ADMIN) -// No longer needed in SQL. Subject to future removal. -@Deprecated -@DeleteAfterMigration -public class ResaveAllEppResourcesAction implements Runnable { - - @Inject MapreduceRunner mrRunner; - @Inject Response response; - - @Inject - @Parameter(PARAM_FAST) - boolean isFast; - - @Inject - ResaveAllEppResourcesAction() {} - - /** - * The number of shards to run the map-only mapreduce on. - * - *

This is less than the default of 100 because we only run this action monthly and can afford - * it being slower, but we don't want to write out lots of large commit logs in a short period of - * time because they make the Cloud SQL migration tougher. - */ - private static final int NUM_SHARDS = 10; - - @Override - public void run() { - mrRunner - .setJobName("Re-save all EPP resources") - .setModuleName("backend") - .setDefaultMapShards(NUM_SHARDS) - .runMapOnly( - new ResaveAllEppResourcesActionMapper(isFast), - ImmutableList.of(EppResourceInputs.createKeyInput(EppResource.class))) - .sendLinkToMapreduceConsole(response); - } - - /** Mapper to re-save all EPP resources. */ - public static class ResaveAllEppResourcesActionMapper - extends Mapper, Void, Void> { - - private static final long serialVersionUID = -7721628665138087001L; - - private final boolean isFast; - - ResaveAllEppResourcesActionMapper(boolean isFast) { - this.isFast = isFast; - } - - @Override - public final void map(final Key resourceKey) { - boolean resaved = - tm().transact( - () -> { - EppResource originalResource = auditedOfy().load().key(resourceKey).now(); - EppResource projectedResource = - originalResource.cloneProjectedAtTime(tm().getTransactionTime()); - if (isFast && originalResource.equals(projectedResource)) { - return false; - } else { - auditedOfy().save().entity(projectedResource).now(); - return true; - } - }); - getContext() - .incrementCounter( - String.format( - "%s entities %s", - resourceKey.getKind(), resaved ? "re-saved" : "with no changes skipped")); - } - } -} diff --git a/core/src/main/java/google/registry/batch/ResaveAllEppResourcesPipelineAction.java b/core/src/main/java/google/registry/batch/ResaveAllEppResourcesPipelineAction.java index b23d0413f..69477f870 100644 --- a/core/src/main/java/google/registry/batch/ResaveAllEppResourcesPipelineAction.java +++ b/core/src/main/java/google/registry/batch/ResaveAllEppResourcesPipelineAction.java @@ -14,6 +14,7 @@ package google.registry.batch; +import static google.registry.batch.BatchModule.PARAM_FAST; import static google.registry.beam.BeamUtils.createJobName; import static javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR; import static javax.servlet.http.HttpServletResponse.SC_OK; @@ -32,7 +33,6 @@ import google.registry.request.Parameter; import google.registry.request.Response; import google.registry.request.auth.Auth; import google.registry.util.Clock; -import java.util.Optional; import javax.inject.Inject; /** @@ -63,8 +63,6 @@ public class ResaveAllEppResourcesPipelineAction implements Runnable { static final String PATH = "/_dr/task/resaveAllEppResourcesPipeline"; static final String PIPELINE_NAME = "resave_all_epp_resources_pipeline"; - public static final String PARAM_FAST = "fast"; - private final String projectId; private final String jobRegion; private final String stagingBucketUrl; @@ -78,14 +76,14 @@ public class ResaveAllEppResourcesPipelineAction implements Runnable { @Config("projectId") String projectId, @Config("defaultJobRegion") String jobRegion, @Config("beamStagingBucketUrl") String stagingBucketUrl, - @Parameter(PARAM_FAST) Optional fast, + @Parameter(PARAM_FAST) boolean fast, Clock clock, Response response, Dataflow dataflow) { this.projectId = projectId; this.jobRegion = jobRegion; this.stagingBucketUrl = stagingBucketUrl; - this.fast = fast.orElse(false); + this.fast = fast; this.clock = clock; this.response = response; this.dataflow = dataflow; diff --git a/core/src/main/java/google/registry/beam/rde/RdeIO.java b/core/src/main/java/google/registry/beam/rde/RdeIO.java index 28375ffd8..ff06237bf 100644 --- a/core/src/main/java/google/registry/beam/rde/RdeIO.java +++ b/core/src/main/java/google/registry/beam/rde/RdeIO.java @@ -249,9 +249,6 @@ public class RdeIO { // Now that we're done, output roll the cursor forward. if (key.manual()) { logger.atInfo().log("Manual operation; not advancing cursor or enqueuing upload task."); - // Temporary measure to run RDE in beam in parallel with the daily MapReduce based RDE runs. - } else if (tm().isOfy()) { - logger.atInfo().log("Ofy is primary TM; not advancing cursor or enqueuing upload task."); } else { outputReceiver.output(KV.of(key, revision)); } diff --git a/core/src/main/java/google/registry/config/RegistryConfig.java b/core/src/main/java/google/registry/config/RegistryConfig.java index 3957f90d4..a50e69734 100644 --- a/core/src/main/java/google/registry/config/RegistryConfig.java +++ b/core/src/main/java/google/registry/config/RegistryConfig.java @@ -224,7 +224,7 @@ public final class RegistryConfig { /** * Returns the Google Cloud Storage bucket for storing zone files. * - * @see google.registry.backup.ExportCommitLogDiffAction + * @see google.registry.tools.server.GenerateZoneFilesAction */ @Provides @Config("zoneFilesBucket") @@ -232,22 +232,11 @@ public final class RegistryConfig { return projectId + "-zonefiles"; } - /** - * Returns the Google Cloud Storage bucket for storing commit logs. - * - * @see google.registry.backup.ExportCommitLogDiffAction - */ + /** @see RegistryConfig#getDatabaseRetention() */ @Provides - @Config("commitLogGcsBucket") - public static String provideCommitLogGcsBucket(@Config("projectId") String projectId) { - return projectId + "-commits"; - } - - /** @see RegistryConfig#getCommitLogDatastoreRetention() */ - @Provides - @Config("commitLogDatastoreRetention") - public static Duration provideCommitLogDatastoreRetention() { - return RegistryConfig.getCommitLogDatastoreRetention(); + @Config("databaseRetention") + public static Duration provideDatabaseRetention() { + return RegistryConfig.getDatabaseRetention(); } /** @@ -261,18 +250,6 @@ public final class RegistryConfig { return projectId + "-domain-lists"; } - /** - * Batch size for the number of transactions' worth of commit log data to process at once when - * exporting a commit log diff. - * - * @see google.registry.backup.ExportCommitLogDiffAction - */ - @Provides - @Config("commitLogDiffExportBatchSize") - public static int provideCommitLogDiffExportBatchSize() { - return 100; - } - /** * Returns the Google Cloud Storage bucket for staging BRDA escrow deposits. * @@ -764,17 +741,6 @@ public final class RegistryConfig { return config.rde.reportUrlPrefix; } - /** - * Maximum amount of time generating an escrow deposit for a TLD could take, before killing. - * - * @see google.registry.rde.RdeStagingReducer - */ - @Provides - @Config("rdeStagingLockTimeout") - public static Duration provideRdeStagingLockTimeout() { - return Duration.standardHours(2); - } - /** * Maximum amount of time it should ever take to upload an escrow deposit, before killing. * @@ -791,7 +757,7 @@ public final class RegistryConfig { * *

This value was communicated to us by the escrow provider. * - * @see google.registry.rde.RdeStagingReducer + * @see google.registry.rde.RdeUploadAction */ @Provides @Config("rdeUploadSftpCooldown") @@ -1087,8 +1053,8 @@ public final class RegistryConfig { * @see google.registry.batch.AsyncTaskEnqueuer */ @Provides - @Config("asyncDeleteFlowMapreduceDelay") - public static Duration provideAsyncDeleteFlowMapreduceDelay(RegistryConfigSettings config) { + @Config("asyncDeleteDelay") + public static Duration provideAsyncDeleteDelay(RegistryConfigSettings config) { return Duration.standardSeconds(config.misc.asyncDeleteDelaySeconds); } @@ -1372,33 +1338,15 @@ public final class RegistryConfig { return "gs://" + getProjectId() + "-datastore-backups"; } - /** - * Number of sharded commit log buckets. - * - *

This number is crucial for determining how much transactional throughput the system can - * allow, because it determines how many entity groups are available for writing commit logs. - * Since entity groups have a one transaction per second SLA (which is actually like ten in - * practice), a registry that wants to be able to handle one hundred transactions per second - * should have one hundred buckets. - * - *

Warning: This can be raised but never lowered. - * - * @see google.registry.model.ofy.CommitLogBucket - */ - public static int getCommitLogBucketCount() { - return CONFIG_SETTINGS.get().datastore.commitLogBucketsNum; - } - /** * Returns the length of time before commit logs should be deleted from Datastore. * *

The only reason you'll want to retain this commit logs in Datastore is for performing * point-in-time restoration queries for subsystems like RDE. * - * @see google.registry.backup.DeleteOldCommitLogsAction - * @see google.registry.model.translators.CommitLogRevisionsTranslatorFactory + * @see google.registry.tools.server.GenerateZoneFilesAction */ - public static Duration getCommitLogDatastoreRetention() { + public static Duration getDatabaseRetention() { return Duration.standardDays(30); } diff --git a/core/src/main/java/google/registry/config/RegistryConfigSettings.java b/core/src/main/java/google/registry/config/RegistryConfigSettings.java index 80cc66c2a..0f3c029b5 100644 --- a/core/src/main/java/google/registry/config/RegistryConfigSettings.java +++ b/core/src/main/java/google/registry/config/RegistryConfigSettings.java @@ -107,7 +107,6 @@ public class RegistryConfigSettings { /** Configuration for Cloud Datastore. */ public static class Datastore { - public int commitLogBucketsNum; public int eppResourceIndexBucketsNum; public int baseOfyRetryMillis; } 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 ae1bcde03..49c8a29a9 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 @@ -183,10 +183,6 @@ registryPolicy: requireSslCertificates: true datastore: - # Number of commit log buckets in Datastore. Lowering this after initial - # install risks losing up to a days' worth of differential backups. - commitLogBucketsNum: 397 - # Number of EPP resource index buckets in Datastore. Don’t change after # initial install. eppResourceIndexBucketsNum: 997 diff --git a/core/src/main/java/google/registry/config/files/nomulus-config-unittest.yaml b/core/src/main/java/google/registry/config/files/nomulus-config-unittest.yaml index 672ba01df..420c62c0e 100644 --- a/core/src/main/java/google/registry/config/files/nomulus-config-unittest.yaml +++ b/core/src/main/java/google/registry/config/files/nomulus-config-unittest.yaml @@ -11,7 +11,6 @@ registryPolicy: Line 2 is this 1. datastore: - commitLogBucketsNum: 3 eppResourceIndexBucketsNum: 3 baseOfyRetryMillis: 0 diff --git a/core/src/main/java/google/registry/cron/CommitLogFanoutAction.java b/core/src/main/java/google/registry/cron/CommitLogFanoutAction.java deleted file mode 100644 index 751ec5ae0..000000000 --- a/core/src/main/java/google/registry/cron/CommitLogFanoutAction.java +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.cron; - -import com.google.common.collect.ImmutableMultimap; -import google.registry.model.ofy.CommitLogBucket; -import google.registry.request.Action; -import google.registry.request.Action.Service; -import google.registry.request.Parameter; -import google.registry.request.auth.Auth; -import google.registry.util.CloudTasksUtils; -import java.util.Optional; -import javax.inject.Inject; - -/** Action for fanning out cron tasks for each commit log bucket. */ -@Action( - service = Action.Service.BACKEND, - path = "/_dr/cron/commitLogFanout", - automaticallyPrintOk = true, - auth = Auth.AUTH_INTERNAL_OR_ADMIN) -public final class CommitLogFanoutAction implements Runnable { - - public static final String BUCKET_PARAM = "bucket"; - - @Inject CloudTasksUtils cloudTasksUtils; - - @Inject @Parameter("endpoint") String endpoint; - @Inject @Parameter("queue") String queue; - @Inject @Parameter("jitterSeconds") Optional jitterSeconds; - @Inject CommitLogFanoutAction() {} - - @Override - public void run() { - for (int bucketId : CommitLogBucket.getBucketIds()) { - cloudTasksUtils.enqueue( - queue, - cloudTasksUtils.createPostTaskWithJitter( - endpoint, - Service.BACKEND.toString(), - ImmutableMultimap.of(BUCKET_PARAM, Integer.toString(bucketId)), - jitterSeconds)); - } - } -} diff --git a/core/src/main/java/google/registry/dns/DnsQueue.java b/core/src/main/java/google/registry/dns/DnsQueue.java index 7fea5f25b..dfa61208a 100644 --- a/core/src/main/java/google/registry/dns/DnsQueue.java +++ b/core/src/main/java/google/registry/dns/DnsQueue.java @@ -41,7 +41,6 @@ import google.registry.dns.DnsConstants.TargetType; import google.registry.model.tld.Registries; import google.registry.util.Clock; import google.registry.util.NonFinalForTesting; -import google.registry.util.SystemClock; import java.util.List; import java.util.Optional; import java.util.logging.Level; @@ -83,17 +82,6 @@ public class DnsQueue { this.clock = clock; } - /** - * Constructs a new instance. - * - *

Note: Prefer @Injecting DnsQueue instances instead. You should only use - * this helper method in situations for which injection does not work, e.g. inside mapper or - * reducer classes in mapreduces that need to be Serializable. - */ - public static DnsQueue create() { - return new DnsQueue(getQueue(DNS_PULL_QUEUE_NAME), new SystemClock()); - } - @VisibleForTesting public static DnsQueue createForTesting(Clock clock) { return new DnsQueue(getQueue(DNS_PULL_QUEUE_NAME), clock); diff --git a/core/src/main/java/google/registry/env/alpha/default/WEB-INF/cron.xml b/core/src/main/java/google/registry/env/alpha/default/WEB-INF/cron.xml index 685219a4a..f0020710f 100644 --- a/core/src/main/java/google/registry/env/alpha/default/WEB-INF/cron.xml +++ b/core/src/main/java/google/registry/env/alpha/default/WEB-INF/cron.xml @@ -83,7 +83,6 @@ This job resaves all our resources, projected in time to "now". - It is needed for "deleteOldCommitLogs" to work correctly. 1st monday of month 09:00 backend @@ -92,9 +91,9 @@ - This job runs a mapreduce that creates synthetic OneTime billing events from Recurring billing + This job runs an action that creates synthetic OneTime billing events from Recurring billing events. Events are created for all instances of Recurring billing events that should exist - between the RECURRING_BILLING cursor's time and the execution time of the mapreduce. + between the RECURRING_BILLING cursor's time and the execution time of the action. every day 03:00 backend diff --git a/core/src/main/java/google/registry/env/common/backend/WEB-INF/web.xml b/core/src/main/java/google/registry/env/common/backend/WEB-INF/web.xml index 17423bc0a..772197500 100644 --- a/core/src/main/java/google/registry/env/common/backend/WEB-INF/web.xml +++ b/core/src/main/java/google/registry/env/common/backend/WEB-INF/web.xml @@ -205,48 +205,6 @@ /_dr/cron/fanout - - - - - backend-servlet - /_dr/cron/commitLogFanout - - - - - backend-servlet - /_dr/task/deleteOldCommitLogs - - - - - backend-servlet - /_dr/cron/commitLogCheckpoint - - - - - backend-servlet - /_dr/task/exportCommitLogDiff - - - - - backend-servlet - /_dr/task/killCommitLogs - - - - - mapreduce - com.google.appengine.tools.mapreduce.MapReduceServlet - - - mapreduce - /_dr/mapreduce/* - - pipeline @@ -286,24 +244,18 @@ /_dr/task/exportDomainLists - + backend-servlet /_dr/task/deleteProberData - + backend-servlet /_dr/task/deleteLoadTestData - - - backend-servlet - /_dr/task/resaveAllEppResources - - backend-servlet @@ -334,7 +286,7 @@ /_dr/task/refreshDnsOnHostRename - + backend-servlet /_dr/task/expandRecurringBillingEvents @@ -352,30 +304,6 @@ /_dr/task/sendExpiringCertificateNotificationEmail - - - backend-servlet - /_dr/task/importRdeContacts - - - - - backend-servlet - /_dr/task/importRdeHosts - - - - - backend-servlet - /_dr/task/importRdeDomains - - - - - backend-servlet - /_dr/task/linkRdeHosts - - backend-servlet diff --git a/core/src/main/java/google/registry/env/common/tools/WEB-INF/web.xml b/core/src/main/java/google/registry/env/common/tools/WEB-INF/web.xml index 5795a2063..c8d46ed83 100644 --- a/core/src/main/java/google/registry/env/common/tools/WEB-INF/web.xml +++ b/core/src/main/java/google/registry/env/common/tools/WEB-INF/web.xml @@ -66,40 +66,6 @@ /_dr/epptool - - - tools-servlet - /_dr/task/resaveAllHistoryEntries - - - - - tools-servlet - /_dr/task/killAllEppResources - - - - - tools-servlet - /_dr/task/killAllCommitLogs - - - - - tools-servlet - /_dr/task/restoreCommitLogs - - - - - mapreduce - com.google.appengine.tools.mapreduce.MapReduceServlet - - - mapreduce - /_dr/mapreduce/* - - pipeline diff --git a/core/src/main/java/google/registry/env/production/default/WEB-INF/cron.xml b/core/src/main/java/google/registry/env/production/default/WEB-INF/cron.xml index 58a6e6de5..18f155fcd 100644 --- a/core/src/main/java/google/registry/env/production/default/WEB-INF/cron.xml +++ b/core/src/main/java/google/registry/env/production/default/WEB-INF/cron.xml @@ -106,7 +106,6 @@ This job resaves all our resources, projected in time to "now". - It is needed for "deleteOldCommitLogs" to work correctly. 1st monday of month 09:00 backend @@ -133,9 +132,9 @@ - This job runs a mapreduce that creates synthetic OneTime billing events from Recurring billing + This job runs an action that creates synthetic OneTime billing events from Recurring billing events. Events are created for all instances of Recurring billing events that should exist - between the RECURRING_BILLING cursor's time and the execution time of the mapreduce. + between the RECURRING_BILLING cursor's time and the execution time of the action. every day 03:00 backend diff --git a/core/src/main/java/google/registry/env/qa/default/WEB-INF/cron.xml b/core/src/main/java/google/registry/env/qa/default/WEB-INF/cron.xml index 503f53fa8..3f8b56ccf 100644 --- a/core/src/main/java/google/registry/env/qa/default/WEB-INF/cron.xml +++ b/core/src/main/java/google/registry/env/qa/default/WEB-INF/cron.xml @@ -35,7 +35,6 @@ This job resaves all our resources, projected in time to "now". - It is needed for "deleteOldCommitLogs" to work correctly. 1st monday of month 09:00 backend diff --git a/core/src/main/java/google/registry/env/sandbox/default/WEB-INF/cron.xml b/core/src/main/java/google/registry/env/sandbox/default/WEB-INF/cron.xml index 9523227d9..d6b82516c 100644 --- a/core/src/main/java/google/registry/env/sandbox/default/WEB-INF/cron.xml +++ b/core/src/main/java/google/registry/env/sandbox/default/WEB-INF/cron.xml @@ -90,7 +90,6 @@ This job resaves all our resources, projected in time to "now". - It is needed for "deleteOldCommitLogs" to work correctly. 1st monday of month 09:00 backend @@ -108,9 +107,9 @@ - This job runs a mapreduce that creates synthetic OneTime billing events from Recurring billing + This job runs an action that creates synthetic OneTime billing events from Recurring billing events. Events are created for all instances of Recurring billing events that should exist - between the RECURRING_BILLING cursor's time and the execution time of the mapreduce. + between the RECURRING_BILLING cursor's time and the execution time of the action. every day 03:00 backend diff --git a/core/src/main/java/google/registry/export/ExportDomainListsAction.java b/core/src/main/java/google/registry/export/ExportDomainListsAction.java index c8dab2b0d..5528d8f23 100644 --- a/core/src/main/java/google/registry/export/ExportDomainListsAction.java +++ b/core/src/main/java/google/registry/export/ExportDomainListsAction.java @@ -15,49 +15,33 @@ package google.registry.export; import static com.google.common.base.Verify.verifyNotNull; -import static google.registry.mapreduce.inputs.EppResourceInputs.createEntityInput; -import static google.registry.model.EppResourceUtils.isActive; import static google.registry.model.tld.Registries.getTldsOfType; import static google.registry.persistence.transaction.TransactionManagerFactory.jpaTm; import static google.registry.persistence.transaction.TransactionManagerFactory.tm; import static google.registry.request.Action.Method.POST; import static java.nio.charset.StandardCharsets.UTF_8; -import com.google.appengine.tools.mapreduce.Mapper; -import com.google.appengine.tools.mapreduce.Reducer; -import com.google.appengine.tools.mapreduce.ReducerInput; import com.google.cloud.storage.BlobId; -import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Joiner; -import com.google.common.base.Suppliers; -import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.flogger.FluentLogger; import com.google.common.net.MediaType; import google.registry.config.RegistryConfig.Config; import google.registry.gcs.GcsUtils; -import google.registry.mapreduce.MapreduceRunner; -import google.registry.model.domain.DomainBase; import google.registry.model.tld.Registry; import google.registry.model.tld.Registry.TldType; import google.registry.request.Action; -import google.registry.request.Response; import google.registry.request.auth.Auth; import google.registry.storage.drive.DriveConnection; import google.registry.util.Clock; -import google.registry.util.NonFinalForTesting; -import java.io.IOException; -import java.io.ObjectInputStream; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Writer; import java.util.List; -import java.util.function.Supplier; import javax.inject.Inject; -import org.joda.time.DateTime; /** - * A mapreduce that exports the list of active domains on all real TLDs to Google Drive and GCS. + * An action that exports the list of active domains on all real TLDs to Google Drive and GCS. * *

Each TLD's active domain names are exported as a newline-delimited flat text file with the * name TLD.txt into the domain-lists bucket. Note that this overwrites the files in place. @@ -70,11 +54,8 @@ import org.joda.time.DateTime; public class ExportDomainListsAction implements Runnable { private static final FluentLogger logger = FluentLogger.forEnclosingClass(); - private static final int MAX_NUM_REDUCE_SHARDS = 100; public static final String REGISTERED_DOMAINS_FILENAME = "registered_domains.txt"; - @Inject MapreduceRunner mrRunner; - @Inject Response response; @Inject Clock clock; @Inject DriveConnection driveConnection; @Inject GcsUtils gcsUtils; @@ -86,56 +67,44 @@ public class ExportDomainListsAction implements Runnable { public void run() { ImmutableSet realTlds = getTldsOfType(TldType.REAL); logger.atInfo().log("Exporting domain lists for TLDs %s.", realTlds); - if (tm().isOfy()) { - mrRunner - .setJobName("Export domain lists") - .setModuleName("backend") - .setDefaultReduceShards(Math.min(realTlds.size(), MAX_NUM_REDUCE_SHARDS)) - .runMapreduce( - new ExportDomainListsMapper(clock.nowUtc(), realTlds), - new ExportDomainListsReducer(gcsBucket, gcsUtils), - ImmutableList.of(createEntityInput(DomainBase.class))) - .sendLinkToMapreduceConsole(response); - } else { - realTlds.forEach( - tld -> { - List domains = - tm().transact( - () -> - // Note that if we had "creationTime <= :now" in the condition (not - // necessary as there is no pending creation, the order of deletionTime - // and creationTime in the query would have been significant and it - // should come after deletionTime. When Hibernate substitutes "now" it - // will first validate that the **first** field that is to be compared - // with it (deletionTime) is assignable from the substituted Java object - // (click.nowUtc()). Since creationTime is a CreateAutoTimestamp, if it - // comes first, we will need to substitute "now" with - // CreateAutoTimestamp.create(clock.nowUtc()). This might look a bit - // strange as the Java object type is clearly incompatible between the - // two fields deletionTime (DateTime) and creationTime, yet they are - // compared with the same "now". It is actually OK because in the end - // Hibernate converts everything to SQL types (and Java field names to - // SQL column names) to run the query. Both CreateAutoTimestamp and - // DateTime are persisted as timestamp_z in SQL. It is only the - // validation that compares the Java types, and only with the first - // field that compares with the substituted value. - jpaTm() - .query( - "SELECT fullyQualifiedDomainName FROM Domain " - + "WHERE tld = :tld " - + "AND deletionTime > :now " - + "ORDER by fullyQualifiedDomainName ASC", - String.class) - .setParameter("tld", tld) - .setParameter("now", clock.nowUtc()) - .getResultList()); - String domainsList = Joiner.on("\n").join(domains); - logger.atInfo().log( - "Exporting %d domains for TLD %s to GCS and Drive.", domains.size(), tld); - exportToGcs(tld, domainsList, gcsBucket, gcsUtils); - exportToDrive(tld, domainsList, driveConnection); - }); - } + realTlds.forEach( + tld -> { + List domains = + tm().transact( + () -> + // Note that if we had "creationTime <= :now" in the condition (not + // necessary as there is no pending creation, the order of deletionTime + // and creationTime in the query would have been significant and it + // should come after deletionTime. When Hibernate substitutes "now" it + // will first validate that the **first** field that is to be compared + // with it (deletionTime) is assignable from the substituted Java object + // (click.nowUtc()). Since creationTime is a CreateAutoTimestamp, if it + // comes first, we will need to substitute "now" with + // CreateAutoTimestamp.create(clock.nowUtc()). This might look a bit + // strange as the Java object type is clearly incompatible between the + // two fields deletionTime (DateTime) and creationTime, yet they are + // compared with the same "now". It is actually OK because in the end + // Hibernate converts everything to SQL types (and Java field names to + // SQL column names) to run the query. Both CreateAutoTimestamp and + // DateTime are persisted as timestamp_z in SQL. It is only the + // validation that compares the Java types, and only with the first + // field that compares with the substituted value. + jpaTm() + .query( + "SELECT fullyQualifiedDomainName FROM Domain " + + "WHERE tld = :tld " + + "AND deletionTime > :now " + + "ORDER by fullyQualifiedDomainName ASC", + String.class) + .setParameter("tld", tld) + .setParameter("now", clock.nowUtc()) + .getResultList()); + String domainsList = Joiner.on("\n").join(domains); + logger.atInfo().log( + "Exporting %d domains for TLD %s to GCS and Drive.", domains.size(), tld); + exportToGcs(tld, domainsList, gcsBucket, gcsUtils); + exportToDrive(tld, domainsList, driveConnection); + }); } protected static boolean exportToDrive( @@ -178,80 +147,4 @@ public class ExportDomainListsAction implements Runnable { } return true; } - - static class ExportDomainListsMapper extends Mapper { - - private static final long serialVersionUID = -7312206212434039854L; - - private final DateTime exportTime; - private final ImmutableSet realTlds; - - ExportDomainListsMapper(DateTime exportTime, ImmutableSet realTlds) { - this.exportTime = exportTime; - this.realTlds = realTlds; - } - - @Override - public void map(DomainBase domain) { - if (realTlds.contains(domain.getTld()) && isActive(domain, exportTime)) { - emit(domain.getTld(), domain.getDomainName()); - getContext().incrementCounter(String.format("domains in tld %s", domain.getTld())); - } - } - } - - static class ExportDomainListsReducer extends Reducer { - - private static final long serialVersionUID = 7035260977259119087L; - - /** Allows overriding the default {@link DriveConnection} in tests. */ - @NonFinalForTesting - private static Supplier driveConnectionSupplier = - Suppliers.memoize(() -> DaggerDriveModule_DriveComponent.create().driveConnection()); - - private final String gcsBucket; - private final GcsUtils gcsUtils; - - /** - * Non-serializable {@link DriveConnection} that will be created when an instance of {@link - * ExportDomainListsReducer} is deserialized in a MR pipeline worker. - * - *

See {@link #readObject(ObjectInputStream)}. - */ - private transient DriveConnection driveConnection; - - public ExportDomainListsReducer(String gcsBucket, GcsUtils gcsUtils) { - this.gcsBucket = gcsBucket; - this.gcsUtils = gcsUtils; - } - - @SuppressWarnings("unused") - private void readObject(ObjectInputStream is) throws IOException, ClassNotFoundException { - is.defaultReadObject(); - driveConnection = driveConnectionSupplier.get(); - } - - @Override - public void reduce(String tld, ReducerInput fqdns) { - ImmutableList domains = ImmutableList.sortedCopyOf(() -> fqdns); - String domainsList = Joiner.on('\n').join(domains); - logger.atInfo().log("Exporting %d domains for TLD %s to GCS and Drive.", domains.size(), tld); - if (exportToGcs(tld, domainsList, gcsBucket, gcsUtils)) { - getContext().incrementCounter("domain lists successful written out to GCS"); - } else { - getContext().incrementCounter("domain lists failed to write out to GCS"); - } - if (exportToDrive(tld, domainsList, driveConnection)) { - getContext().incrementCounter("domain lists successfully written out to Drive"); - } else { - getContext().incrementCounter("domain lists failed to write out to Drive"); - } - } - - @VisibleForTesting - static void setDriveConnectionForTesting( - Supplier testDriveConnectionSupplier) { - driveConnectionSupplier = testDriveConnectionSupplier; - } - } } diff --git a/core/src/main/java/google/registry/flows/EppToolAction.java b/core/src/main/java/google/registry/flows/EppToolAction.java index 40f1428d0..1129e6bf9 100644 --- a/core/src/main/java/google/registry/flows/EppToolAction.java +++ b/core/src/main/java/google/registry/flows/EppToolAction.java @@ -84,5 +84,11 @@ public class EppToolAction implements Runnable { static String provideClientId(HttpServletRequest req) { return extractRequiredParameter(req, "clientId"); } + + @Provides + @Parameter("dryRun") + static boolean provideIsDryRun(HttpServletRequest req) { + return extractBooleanParameter(req, "dryRun"); + } } } diff --git a/core/src/main/java/google/registry/flows/host/HostDeleteFlow.java b/core/src/main/java/google/registry/flows/host/HostDeleteFlow.java index 2299fb6d6..07ed394f1 100644 --- a/core/src/main/java/google/registry/flows/host/HostDeleteFlow.java +++ b/core/src/main/java/google/registry/flows/host/HostDeleteFlow.java @@ -72,8 +72,7 @@ public final class HostDeleteFlow implements TransactionalFlow { StatusValue.PENDING_DELETE, StatusValue.SERVER_DELETE_PROHIBITED); - private static final DnsQueue dnsQueue = DnsQueue.create(); - + @Inject DnsQueue dnsQueue; @Inject ExtensionManager extensionManager; @Inject @RegistrarId String registrarId; @Inject @TargetId String targetId; diff --git a/core/src/main/java/google/registry/gcs/GcsUtils.java b/core/src/main/java/google/registry/gcs/GcsUtils.java index c3468eab1..7fe0d95b2 100644 --- a/core/src/main/java/google/registry/gcs/GcsUtils.java +++ b/core/src/main/java/google/registry/gcs/GcsUtils.java @@ -44,7 +44,7 @@ import javax.inject.Inject; /** * Utilities for working with Google Cloud Storage. * - *

It is {@link Serializable} so that it can be used in MapReduce or Beam. + *

It is {@link Serializable} so that it can be used in Beam. */ public class GcsUtils implements Serializable { diff --git a/core/src/main/java/google/registry/mapreduce/MapreduceModule.java b/core/src/main/java/google/registry/mapreduce/MapreduceModule.java deleted file mode 100644 index 285d61d8b..000000000 --- a/core/src/main/java/google/registry/mapreduce/MapreduceModule.java +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.mapreduce; - -import static google.registry.mapreduce.MapreduceRunner.PARAM_DRY_RUN; -import static google.registry.mapreduce.MapreduceRunner.PARAM_FAST; -import static google.registry.mapreduce.MapreduceRunner.PARAM_MAP_SHARDS; -import static google.registry.mapreduce.MapreduceRunner.PARAM_REDUCE_SHARDS; -import static google.registry.request.RequestParameters.extractBooleanParameter; -import static google.registry.request.RequestParameters.extractOptionalIntParameter; - -import dagger.Module; -import dagger.Provides; -import google.registry.request.Parameter; -import java.util.Optional; -import javax.servlet.http.HttpServletRequest; - -/** Dagger module for the mapreduce package. */ -@Module -public final class MapreduceModule { - - @Provides - @Parameter(PARAM_DRY_RUN) - static boolean provideIsDryRun(HttpServletRequest req) { - return extractBooleanParameter(req, PARAM_DRY_RUN); - } - - @Provides - @Parameter(PARAM_FAST) - static boolean provideIsFast(HttpServletRequest req) { - return extractBooleanParameter(req, PARAM_FAST); - } - - @Provides - @Parameter(PARAM_MAP_SHARDS) - static Optional provideMapShards(HttpServletRequest req) { - return extractOptionalIntParameter(req, PARAM_MAP_SHARDS); - } - - @Provides - @Parameter(PARAM_REDUCE_SHARDS) - static Optional provideReduceShards(HttpServletRequest req) { - return extractOptionalIntParameter(req, PARAM_REDUCE_SHARDS); - } -} diff --git a/core/src/main/java/google/registry/mapreduce/MapreduceRunner.java b/core/src/main/java/google/registry/mapreduce/MapreduceRunner.java deleted file mode 100644 index 87ebe607a..000000000 --- a/core/src/main/java/google/registry/mapreduce/MapreduceRunner.java +++ /dev/null @@ -1,315 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.mapreduce; - -import static com.google.appengine.tools.pipeline.PipelineServiceFactory.newPipelineService; -import static com.google.common.base.Preconditions.checkNotNull; -import static google.registry.util.PreconditionsUtils.checkArgumentNotNull; - -import com.google.appengine.tools.mapreduce.Input; -import com.google.appengine.tools.mapreduce.MapJob; -import com.google.appengine.tools.mapreduce.MapReduceJob; -import com.google.appengine.tools.mapreduce.MapReduceSettings; -import com.google.appengine.tools.mapreduce.MapReduceSpecification; -import com.google.appengine.tools.mapreduce.MapSettings; -import com.google.appengine.tools.mapreduce.MapSpecification; -import com.google.appengine.tools.mapreduce.Mapper; -import com.google.appengine.tools.mapreduce.Marshallers; -import com.google.appengine.tools.mapreduce.Output; -import com.google.appengine.tools.mapreduce.Reducer; -import com.google.appengine.tools.mapreduce.outputs.NoOutput; -import com.google.appengine.tools.pipeline.Job0; -import com.google.appengine.tools.pipeline.JobSetting; -import com.google.common.flogger.FluentLogger; -import google.registry.mapreduce.inputs.ConcatenatingInput; -import google.registry.request.Parameter; -import google.registry.request.Response; -import google.registry.util.AppEngineServiceUtils; -import java.io.Serializable; -import java.util.Optional; -import javax.inject.Inject; -import org.joda.time.Duration; - -/** - * Runner for map-only or full map and reduce mapreduces. - * - *

We use hardcoded serialization marshallers for moving data between steps, so all types used as - * keys or values must implement {@link Serializable}. - */ -public class MapreduceRunner { - - private static final FluentLogger logger = FluentLogger.forEnclosingClass(); - - public static final String PARAM_DRY_RUN = "dryRun"; - public static final String PARAM_MAP_SHARDS = "mapShards"; - public static final String PARAM_REDUCE_SHARDS = "reduceShards"; - public static final String PARAM_FAST = "fast"; - - private static final String BASE_URL = "/_dr/mapreduce/"; - private static final String QUEUE_NAME = "mapreduce"; - - private static final String MAPREDUCE_CONSOLE_LINK_FORMAT = - "Mapreduce console: https://%s/_ah/pipeline/status.html?root=%s"; - - private final Optional httpParamMapShards; - private final Optional httpParamReduceShards; - private final AppEngineServiceUtils appEngineServiceUtils; - - // Default to 3 minutes since many slices will contain Datastore queries that time out at 4:30. - private Duration sliceDuration = Duration.standardMinutes(3); - private String jobName; - private String moduleName; - - // Defaults for number of mappers/reducers if not specified in HTTP params. The max allowable - // count for both (which is specified in the App Engine mapreduce framework) is 1000. We use 100 - // mapper shards because there's a bottleneck in the App Engine mapreduce framework caused by - // updating the mapreduce status on a single Datastore entity (which only supports so many writes - // per second). The existing mapreduces don't actually do that much work for TLDs that aren't - // .com-sized, so the shards finish so quickly that contention becomes a problem. This number can - // always be tuned up for large registry systems with on the order of hundreds of thousands of - // entities on up. - // The default reducer shard count is one because most mapreduces use it to collate and output - // results. The ones that actually perform a substantial amount of work in a reduce step use a - // higher non-default number of reducer shards. - private int defaultMapShards = 100; - private int defaultReduceShards = 1; - - /** - * @param mapShards number of map shards; if omitted, the {@link Input} objects will choose - * @param reduceShards number of reduce shards; if omitted, uses {@link #defaultReduceShards} - */ - @Inject - public MapreduceRunner( - @Parameter(PARAM_MAP_SHARDS) Optional mapShards, - @Parameter(PARAM_REDUCE_SHARDS) Optional reduceShards, - AppEngineServiceUtils appEngineServiceUtils) { - this.httpParamMapShards = mapShards; - this.httpParamReduceShards = reduceShards; - this.appEngineServiceUtils = appEngineServiceUtils; - } - - /** Set the max time to run a slice before serializing; defaults to 3 minutes. */ - public MapreduceRunner setSliceDuration(Duration sliceDuration) { - this.sliceDuration = checkArgumentNotNull(sliceDuration, "sliceDuration"); - return this; - } - - /** Set the human readable job name for display purposes. */ - public MapreduceRunner setJobName(String jobName) { - this.jobName = checkArgumentNotNull(jobName, "jobName"); - return this; - } - - /** Set the module to run in. */ - public MapreduceRunner setModuleName(String moduleName) { - this.moduleName = checkArgumentNotNull(moduleName, "moduleName"); - return this; - } - - /** Set the default number of mappers, if not overridden by the http param. */ - public MapreduceRunner setDefaultMapShards(int defaultMapShards) { - this.defaultMapShards = defaultMapShards; - return this; - } - - /** Set the default number of reducers, if not overridden by the http param. */ - public MapreduceRunner setDefaultReduceShards(int defaultReduceShards) { - this.defaultReduceShards = defaultReduceShards; - return this; - } - - /** - * Create a map-only mapreduce to be run as part of a pipeline. - * - * @see #runMapOnly for creating and running an independent map-only mapreduce - * - * @param mapper instance of a mapper class - * @param inputs input sources for the mapper - * @param mapper input type - * @param individual output record type sent to the {@link Output} - * @param overall output result type - */ - public MapJob createMapOnlyJob( - Mapper mapper, - Output output, - Iterable> inputs) { - checkCommonRequiredFields(inputs, mapper); - return new MapJob<>( - new MapSpecification.Builder() - .setJobName(jobName) - .setInput(new ConcatenatingInput<>(inputs, httpParamMapShards.orElse(defaultMapShards))) - .setMapper(mapper) - .setOutput(output) - .build(), - new MapSettings.Builder() - .setWorkerQueueName(QUEUE_NAME) - .setBaseUrl(BASE_URL) - .setModule(moduleName) - .setMillisPerSlice((int) sliceDuration.getMillis()) - .build()); - } - - /** - * Kick off a map-only mapreduce. - * - *

For simplicity, the mapreduce is hard-coded with {@link NoOutput}, on the assumption that - * all work will be accomplished via side effects during the map phase. - * - * @see #createMapOnlyJob for creating and running a map-only mapreduce as part of a pipeline - * @param mapper instance of a mapper class - * @param inputs input sources for the mapper - * @param mapper input type - * @return the job id - */ - public MapreduceRunnerResult runMapOnly( - Mapper mapper, Iterable> inputs) { - return runAsPipeline(createMapOnlyJob(mapper, new NoOutput(), inputs)); - } - - /** - * Create a mapreduce job to be run as part of a pipeline. - * - * @see #runMapreduce for creating and running an independent mapreduce - * - * @param mapper instance of a mapper class - * @param reducer instance of a reducer class - * @param inputs input sources for the mapper - * @param mapper input type - * @param emitted key type - * @param emitted value type - * @param individual output record type sent to the {@link Output} - * @param overall output result type - */ - public final MapReduceJob - createMapreduceJob( - Mapper mapper, - Reducer reducer, - Iterable> inputs, - Output output) { - checkCommonRequiredFields(inputs, mapper); - checkArgumentNotNull(reducer, "reducer"); - return new MapReduceJob<>( - new MapReduceSpecification.Builder() - .setJobName(jobName) - .setInput(new ConcatenatingInput<>(inputs, httpParamMapShards.orElse(defaultMapShards))) - .setMapper(mapper) - .setReducer(reducer) - .setOutput(output) - .setKeyMarshaller(Marshallers.getSerializationMarshaller()) - .setValueMarshaller(Marshallers.getSerializationMarshaller()) - .setNumReducers(httpParamReduceShards.orElse(defaultReduceShards)) - .build(), - new MapReduceSettings.Builder() - .setWorkerQueueName(QUEUE_NAME) - .setBaseUrl(BASE_URL) - .setModule(moduleName) - .setMillisPerSlice((int) sliceDuration.getMillis()) - .build()); - } - - /** - * Kick off a mapreduce job. - * - *

For simplicity, the mapreduce is hard-coded with {@link NoOutput}, on the assumption that - * all work will be accomplished via side effects during the map or reduce phases. - * - * @see #createMapreduceJob for creating and running a mapreduce as part of a pipeline - * @param mapper instance of a mapper class - * @param reducer instance of a reducer class - * @param inputs input sources for the mapper - * @param mapper input type - * @param emitted key type - * @param emitted value type - * @return the job id - */ - public final - MapreduceRunnerResult runMapreduce( - Mapper mapper, - Reducer reducer, - Iterable> inputs) { - return runMapreduce(mapper, reducer, inputs, new NoOutput()); - } - - /** - * Kick off a mapreduce job with specified Output handler. - * - * @see #createMapreduceJob for creating and running a mapreduce as part of a pipeline - * @param mapper instance of a mapper class - * @param reducer instance of a reducer class - * @param inputs input sources for the mapper - * @param mapper input type - * @param emitted key type - * @param emitted value type - * @param emitted output type - * @param return value of output - * @return the job id - */ - public final - MapreduceRunnerResult runMapreduce( - Mapper mapper, - Reducer reducer, - Iterable> inputs, - Output output) { - return runAsPipeline(createMapreduceJob(mapper, reducer, inputs, output)); - } - - private void checkCommonRequiredFields(Iterable inputs, Mapper mapper) { - checkNotNull(jobName, "jobName"); - checkNotNull(moduleName, "moduleName"); - checkArgumentNotNull(inputs, "inputs"); - checkArgumentNotNull(mapper, "mapper"); - } - - private MapreduceRunnerResult runAsPipeline(Job0 job) { - String jobId = - newPipelineService() - .startNewPipeline( - job, new JobSetting.OnModule(moduleName), new JobSetting.OnQueue(QUEUE_NAME)); - logger.atInfo().log( - "Started '%s' %s job: %s", - jobName, job instanceof MapJob ? "map" : "mapreduce", renderMapreduceConsoleLink(jobId)); - return new MapreduceRunnerResult(jobId); - } - - private String renderMapreduceConsoleLink(String jobId) { - return String.format( - MAPREDUCE_CONSOLE_LINK_FORMAT, - appEngineServiceUtils.convertToSingleSubdomain( - appEngineServiceUtils.getServiceHostname("backend")), - jobId); - } - - /** - * Class representing the result of kicking off a mapreduce. - * - *

This is used to send a link to the mapreduce console. - */ - public class MapreduceRunnerResult { - - private final String jobId; - - private MapreduceRunnerResult(String jobId) { - this.jobId = jobId; - } - - public void sendLinkToMapreduceConsole(Response response) { - response.setPayload(getLinkToMapreduceConsole() + "\n"); - } - - public String getLinkToMapreduceConsole() { - return renderMapreduceConsoleLink(jobId); - } - } -} diff --git a/core/src/main/java/google/registry/mapreduce/UnlockerOutput.java b/core/src/main/java/google/registry/mapreduce/UnlockerOutput.java deleted file mode 100644 index b057e6539..000000000 --- a/core/src/main/java/google/registry/mapreduce/UnlockerOutput.java +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2018 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.mapreduce; - -import static com.google.common.collect.ImmutableList.toImmutableList; - -import com.google.appengine.tools.mapreduce.Output; -import com.google.appengine.tools.mapreduce.OutputWriter; -import com.google.common.flogger.FluentLogger; -import google.registry.model.server.Lock; -import java.util.Collection; -import java.util.List; -import java.util.stream.Stream; - -/** An App Engine MapReduce "Output" that releases the given {@link Lock}. */ -public class UnlockerOutput extends Output { - - private static final long serialVersionUID = 2884979908715512998L; - private static final FluentLogger logger = FluentLogger.forEnclosingClass(); - - private final Lock lock; - - public UnlockerOutput(Lock lock) { - this.lock = lock; - } - - private static class NoopWriter extends OutputWriter { - - private static final long serialVersionUID = -8327197554987150393L; - - @Override - public void write(O object) { - // Noop - } - - @Override - public boolean allowSliceRetry() { - return true; - } - } - - @Override - public List> createWriters(int numShards) { - return Stream.generate(NoopWriter::new).limit(numShards).collect(toImmutableList()); - } - - @Override - public Lock finish(Collection> writers) { - logger.atInfo().log("Mapreduce finished; releasing lock '%s'.", lock); - lock.release(); - return lock; - } -} diff --git a/core/src/main/java/google/registry/mapreduce/inputs/ChildEntityInput.java b/core/src/main/java/google/registry/mapreduce/inputs/ChildEntityInput.java deleted file mode 100644 index 7880c1903..000000000 --- a/core/src/main/java/google/registry/mapreduce/inputs/ChildEntityInput.java +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.mapreduce.inputs; - -import static google.registry.util.TypeUtils.checkNoInheritanceRelationships; - -import com.google.appengine.tools.mapreduce.Input; -import com.google.appengine.tools.mapreduce.InputReader; -import com.google.common.collect.ImmutableSet; -import com.googlecode.objectify.Key; -import google.registry.model.EppResource; -import google.registry.model.ImmutableObject; -import google.registry.model.annotations.DeleteAfterMigration; -import google.registry.model.index.EppResourceIndexBucket; - -/** - * A MapReduce {@link Input} that loads all child objects of a given set of types, that are children - * of given {@link EppResource} types. - */ -@DeleteAfterMigration -class ChildEntityInput - extends EppResourceBaseInput { - - private static final long serialVersionUID = -3888034213150865008L; - - private final ImmutableSet> resourceClasses; - private final ImmutableSet> childResourceClasses; - - public ChildEntityInput( - ImmutableSet> resourceClasses, - ImmutableSet> childResourceClasses) { - this.resourceClasses = resourceClasses; - this.childResourceClasses = childResourceClasses; - checkNoInheritanceRelationships(ImmutableSet.copyOf(resourceClasses)); - checkNoInheritanceRelationships(ImmutableSet.copyOf(childResourceClasses)); - } - - @Override - protected InputReader bucketToReader(Key bucketKey) { - return new ChildEntityReader<>(bucketKey, resourceClasses, childResourceClasses); - } -} diff --git a/core/src/main/java/google/registry/mapreduce/inputs/ChildEntityReader.java b/core/src/main/java/google/registry/mapreduce/inputs/ChildEntityReader.java deleted file mode 100644 index 8d0d504da..000000000 --- a/core/src/main/java/google/registry/mapreduce/inputs/ChildEntityReader.java +++ /dev/null @@ -1,255 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.mapreduce.inputs; - -import static google.registry.model.EntityClasses.ALL_CLASSES; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; - -import com.google.appengine.api.datastore.Cursor; -import com.google.appengine.api.datastore.QueryResultIterator; -import com.google.appengine.tools.mapreduce.InputReader; -import com.google.appengine.tools.mapreduce.ShardContext; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import com.googlecode.objectify.Key; -import com.googlecode.objectify.annotation.Entity; -import google.registry.model.EppResource; -import google.registry.model.ImmutableObject; -import google.registry.model.annotations.DeleteAfterMigration; -import google.registry.model.index.EppResourceIndex; -import google.registry.model.index.EppResourceIndexBucket; -import java.io.IOException; -import java.util.NoSuchElementException; -import javax.annotation.Nullable; - -/** - * Reader that maps over {@link EppResourceIndex} and returns resources that are children of {@link - * EppResource} objects. - */ -@DeleteAfterMigration -class ChildEntityReader extends InputReader { - - private static final long serialVersionUID = 7481761146349663848L; - - /** This reader uses an EppResourceEntityReader under the covers to iterate over EPP resources. */ - private final EppResourceEntityReader eppResourceEntityReader; - - /** The child resource classes to postfilter for. */ - private final ImmutableList> childResourceClasses; - - /** The index within the list above for the next ofy query. */ - private int childResourceClassIndex; - - /** A reader used to go over children of the current eppResourceEntity and childResourceClass. */ - @Nullable private ChildReader childReader; - - public ChildEntityReader( - Key bucketKey, - ImmutableSet> resourceClasses, - ImmutableSet> childResourceClasses) { - this.childResourceClasses = expandPolymorphicClasses(childResourceClasses); - this.eppResourceEntityReader = new EppResourceEntityReader<>(bucketKey, resourceClasses); - } - - /** Expands non-entity polymorphic classes into their child types. */ - @SuppressWarnings("unchecked") - private ImmutableList> expandPolymorphicClasses( - ImmutableSet> resourceClasses) { - ImmutableList.Builder> builder = new ImmutableList.Builder<>(); - for (Class clazz : resourceClasses) { - if (clazz.isAnnotationPresent(Entity.class)) { - builder.add(clazz); - } else { - for (Class entityClass : ALL_CLASSES) { - if (clazz.isAssignableFrom(entityClass)) { - builder.add((Class) entityClass); - } - } - } - } - return builder.build(); - } - - /** - * Get the next {@link ImmutableObject} (i.e. child element) from the query. - * - * @throws NoSuchElementException if there are no more EPP resources to iterate over. - */ - I nextChild() throws NoSuchElementException { - // This code implements a single iteration over a triple-nested loop. It returns the next - // innermost item of that 3-nested loop. The entire loop would look like this: - // - // NOTE: I'm treating eppResourceEntityReader and childReader as if they were iterables for - // brevity, although they aren't - they are Readers - // - // I'm also using the python 'yield' command to show we're returning this item one by one. - // - // for (eppResourceEntity : eppResourceEntityReader) { - // for (childResourceClass : childResourceClasses) { - // for (I child : ChildReader.create(childResourceClass, Key.create(eppResourceEntity)) { - // yield child; // returns the 'child's one by one. - // } - // } - // } - - // First, set all the variables if they aren't set yet. This should only happen on the first - // time in the function. - // - // This can be merged with the calls in the "catch" below to avoid code duplication, but it - // makes the code harder to read. - if (childReader == null) { - childResourceClassIndex = 0; - childReader = - ChildReader.create( - childResourceClasses.get(childResourceClassIndex), - Key.create(eppResourceEntityReader.next())); - } - // Then continue advancing the 3-nested loop until we find a value - while (true) { - try { - // Advance the inner loop and return the next value. - return childReader.next(); - } catch (NoSuchElementException e) { - // If we got here it means the inner loop (childQueryIterator) is done - we need to advance - // the middle loop by one, and then reset the inner loop. - childResourceClassIndex++; - // Check if the middle loop is done as well - if (childResourceClassIndex < childResourceClasses.size()) { - // The middle loop is not done. Reset the inner loop. - childReader = childReader.withType(childResourceClasses.get(childResourceClassIndex)); - } else { - // We're done with the middle loop as well! Advance the outer loop, and reset the middle - // loop and inner loops - childResourceClassIndex = 0; - childReader = - ChildReader.create( - childResourceClasses.get(childResourceClassIndex), - Key.create(eppResourceEntityReader.next())); - } - // Loop back up the while, to try reading reading a value again - } - } - } - - @Override - public I next() throws NoSuchElementException { - while (true) { - I entity = nextChild(); - if (entity != null) { - // Postfilter to distinguish polymorphic types. - for (Class resourceClass : childResourceClasses) { - if (resourceClass.isInstance(entity)) { - return entity; - } - } - } - } - } - - @Override - public void beginSlice() { - eppResourceEntityReader.beginSlice(); - if (childReader != null) { - childReader.beginSlice(); - } - } - - @Override - public void endSlice() { - eppResourceEntityReader.endSlice(); - if (childReader != null) { - childReader.endSlice(); - } - } - - @Override - public Double getProgress() { - return eppResourceEntityReader.getProgress(); - } - - @Override - public long estimateMemoryRequirement() { - return eppResourceEntityReader.estimateMemoryRequirement(); - } - - @Override - public ShardContext getContext() { - return eppResourceEntityReader.getContext(); - } - - @Override - public void setContext(ShardContext context) { - eppResourceEntityReader.setContext(context); - } - - @Override - public void beginShard() { - eppResourceEntityReader.beginShard(); - } - - @Override - public void endShard() throws IOException { - eppResourceEntityReader.endShard(); - } - - private static class ChildReader extends RetryingInputReader { - - private static final long serialVersionUID = -8443132445119657998L; - - private final Class type; - - private final Key ancestor; - - /** Create a reader that goes over all the children of a given type to the given ancestor. */ - public ChildReader(Class type, Key ancestor) { - this.type = type; - this.ancestor = ancestor; - // This reader isn't initialized by mapreduce, so we need to initialize it ourselves - beginShard(); - beginSlice(); - } - - /** - * Create a reader that goes over all the children of a given type to the given ancestor. - * - *

We need this function in addition to the constructor so that we can create a ChildReader. - */ - public static ChildReader create(Class type, Key ancestor) { - return new ChildReader(type, ancestor); - } - - /** Query for children of the current resource and of the current child class. */ - @Override - public QueryResultIterator getQueryIterator(Cursor cursor) { - return startQueryAt(auditedOfy().load().type(type).ancestor(ancestor), cursor).iterator(); - } - - @Override - public int getTotal() { - return 0; - } - - @Override - public I next() { - return nextQueryResult(); - } - - /** Returns a new ChildReader of the same ancestor for the given type. */ - public ChildReader withType(Class type) { - return create(type, ancestor); - } - } -} diff --git a/core/src/main/java/google/registry/mapreduce/inputs/ChunkingKeyInput.java b/core/src/main/java/google/registry/mapreduce/inputs/ChunkingKeyInput.java deleted file mode 100644 index c804f6688..000000000 --- a/core/src/main/java/google/registry/mapreduce/inputs/ChunkingKeyInput.java +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.mapreduce.inputs; - -import com.google.appengine.api.datastore.Key; -import com.google.appengine.tools.mapreduce.Input; -import com.google.appengine.tools.mapreduce.InputReader; -import com.google.common.collect.ImmutableList; -import java.io.IOException; -import java.util.List; -import java.util.NoSuchElementException; - -/** A MapReduce {@link Input} adapter that chunks an input of keys into sublists of keys. */ -public class ChunkingKeyInput extends Input> { - - private static final long serialVersionUID = 1670202385246824694L; - - private final Input input; - private final int chunkSize; - - public ChunkingKeyInput(Input input, int chunkSize) { - this.input = input; - this.chunkSize = chunkSize; - } - - /** - * An input reader that wraps around another input reader and returns its contents in chunks of - * a given size. - */ - private static class ChunkingKeyInputReader extends InputReader> { - - private static final long serialVersionUID = 53502324675703263L; - - private final InputReader reader; - private final int chunkSize; - - ChunkingKeyInputReader(InputReader reader, int chunkSize) { - this.reader = reader; - this.chunkSize = chunkSize; - } - - @Override - public List next() throws IOException { - ImmutableList.Builder chunk = new ImmutableList.Builder<>(); - try { - for (int i = 0; i < chunkSize; i++) { - chunk.add(reader.next()); - } - } catch (NoSuchElementException e) { - // Amazingly this is the recommended (and only) way to test for hasNext(). - } - ImmutableList builtChunk = chunk.build(); - if (builtChunk.isEmpty()) { - throw new NoSuchElementException(); // Maintain the contract. - } - return builtChunk; - } - - @Override - public Double getProgress() { - return reader.getProgress(); - } - - @Override - public void beginShard() throws IOException { - reader.beginShard(); - } - - @Override - public void beginSlice() throws IOException { - reader.beginSlice(); - } - - @Override - public void endSlice() throws IOException { - reader.endSlice(); - } - - @Override - public void endShard() throws IOException { - reader.endShard(); - } - - @Override - public long estimateMemoryRequirement() { - // The reader's memory requirement plus the memory for this chunk's worth of buffered keys. - // 256 comes from DatastoreKeyInputReader.AVERAGE_KEY_SIZE. - return reader.estimateMemoryRequirement() + chunkSize * 256; - } - } - - @Override - public List>> createReaders() throws IOException { - ImmutableList.Builder>> readers = new ImmutableList.Builder<>(); - for (InputReader reader : input.createReaders()) { - readers.add(new ChunkingKeyInputReader(reader, chunkSize)); - } - return readers.build(); - } -} diff --git a/core/src/main/java/google/registry/mapreduce/inputs/CommitLogManifestInput.java b/core/src/main/java/google/registry/mapreduce/inputs/CommitLogManifestInput.java deleted file mode 100644 index 20cf7085b..000000000 --- a/core/src/main/java/google/registry/mapreduce/inputs/CommitLogManifestInput.java +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.mapreduce.inputs; - -import com.google.appengine.tools.mapreduce.Input; -import com.google.appengine.tools.mapreduce.InputReader; -import com.google.common.collect.ImmutableList; -import com.googlecode.objectify.Key; -import google.registry.model.annotations.DeleteAfterMigration; -import google.registry.model.ofy.CommitLogBucket; -import google.registry.model.ofy.CommitLogManifest; -import java.util.List; -import javax.annotation.Nullable; -import org.joda.time.DateTime; - -/** Base class for {@link Input} classes that map over {@link CommitLogManifest}. */ -@DeleteAfterMigration -public class CommitLogManifestInput extends Input> { - - private static final long serialVersionUID = 6744322799131602384L; - - /** - * Cutoff date for result. - * - *

If present, all resulting CommitLogManifest will be dated prior to this date. This can't be - * of type {@code Optional} because Optional purposely isn't Serializable. - */ - @Nullable - private final DateTime olderThan; - - public CommitLogManifestInput() { - this.olderThan = null; - } - - public CommitLogManifestInput(@Nullable DateTime olderThan) { - this.olderThan = olderThan; - } - - @Override - public List>> createReaders() { - ImmutableList.Builder>> readers = - new ImmutableList.Builder<>(); - for (Key bucketKey : CommitLogBucket.getAllBucketKeys()) { - readers.add(bucketToReader(bucketKey)); - } - return readers.build(); - } - - private InputReader> bucketToReader(Key bucketKey) { - return new CommitLogManifestReader(bucketKey, olderThan); - } -} diff --git a/core/src/main/java/google/registry/mapreduce/inputs/CommitLogManifestReader.java b/core/src/main/java/google/registry/mapreduce/inputs/CommitLogManifestReader.java deleted file mode 100644 index 06d8e3276..000000000 --- a/core/src/main/java/google/registry/mapreduce/inputs/CommitLogManifestReader.java +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.mapreduce.inputs; - -import static google.registry.model.ofy.ObjectifyService.auditedOfy; - -import com.google.appengine.api.datastore.Cursor; -import com.google.appengine.api.datastore.QueryResultIterator; -import com.google.appengine.tools.mapreduce.InputReader; -import com.googlecode.objectify.Key; -import com.googlecode.objectify.cmd.Query; -import google.registry.model.annotations.DeleteAfterMigration; -import google.registry.model.ofy.CommitLogBucket; -import google.registry.model.ofy.CommitLogManifest; -import java.util.NoSuchElementException; -import javax.annotation.Nullable; -import org.joda.time.DateTime; - -/** {@link InputReader} that maps over {@link CommitLogManifest}. */ -@DeleteAfterMigration -class CommitLogManifestReader - extends RetryingInputReader, Key> { - - /** - * Memory estimation for this reader. - * - * Elements are relatively small (parent key, Id, and a set of deleted keys), so this should be - * more than enough. - */ - private static final long MEMORY_ESTIMATE = 100 * 1024; - - private static final long serialVersionUID = 6215490573108252100L; - - private final Key bucketKey; - - /** - * Cutoff date for result. - * - * If present, all resulting CommitLogManifest will be dated prior to this date. - */ - @Nullable - private final DateTime olderThan; - - CommitLogManifestReader(Key bucketKey, @Nullable DateTime olderThan) { - this.bucketKey = bucketKey; - this.olderThan = olderThan; - } - - @Override - public QueryResultIterator> getQueryIterator(@Nullable Cursor cursor) { - return startQueryAt(createBucketQuery(), cursor).keys().iterator(); - } - - @Override - public int getTotal() { - return createBucketQuery().count(); - } - - /** Query for children of this bucket. */ - Query createBucketQuery() { - Query query = - auditedOfy().load().type(CommitLogManifest.class).ancestor(bucketKey); - if (olderThan != null) { - query = query.filterKey( - "<", - Key.create(bucketKey, CommitLogManifest.class, olderThan.getMillis())); - } - return query; - } - - /** Returns the estimated memory that will be used by this reader in bytes. */ - @Override - public long estimateMemoryRequirement() { - return MEMORY_ESTIMATE; - } - - /** - * Get the next {@link CommitLogManifest} from the query. - * - * @throws NoSuchElementException if there are no more elements. - */ - @Override - public Key next() { - return nextQueryResult(); - } -} diff --git a/core/src/main/java/google/registry/mapreduce/inputs/ConcatenatingInput.java b/core/src/main/java/google/registry/mapreduce/inputs/ConcatenatingInput.java deleted file mode 100644 index 1186792f7..000000000 --- a/core/src/main/java/google/registry/mapreduce/inputs/ConcatenatingInput.java +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.mapreduce.inputs; - -import com.google.appengine.tools.mapreduce.Input; -import com.google.appengine.tools.mapreduce.InputReader; -import com.google.appengine.tools.mapreduce.inputs.ConcatenatingInputReader; -import com.google.common.collect.ArrayListMultimap; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.ListMultimap; -import java.io.IOException; -import java.util.Collection; -import java.util.List; -import java.util.Set; - -/** - * A MapReduce {@link Input} adapter that joins multiple inputs. - * - * @param input type - */ -public class ConcatenatingInput extends Input { - - private static final long serialVersionUID = 1225981408139437077L; - - private final Set> inputs; - private final int numShards; - - public ConcatenatingInput(Iterable> inputs, int numShards) { - this.inputs = ImmutableSet.copyOf(inputs); - this.numShards = numShards; - } - - @Override - public List> createReaders() throws IOException { - ListMultimap> shards = ArrayListMultimap.create(); - int i = 0; - for (Input input : inputs) { - for (InputReader reader : input.createReaders()) { - // Covariant cast is safe because an InputReader only outputs I and never consumes it. - @SuppressWarnings("unchecked") - InputReader typedReader = (InputReader) reader; - shards.put(i % numShards, typedReader); - i++; - } - } - ImmutableList.Builder> concatenatingReaders = new ImmutableList.Builder<>(); - for (Collection> shard : shards.asMap().values()) { - concatenatingReaders.add(new ConcatenatingInputReader<>(ImmutableList.copyOf(shard))); - } - return concatenatingReaders.build(); - } -} diff --git a/core/src/main/java/google/registry/mapreduce/inputs/EppResourceBaseInput.java b/core/src/main/java/google/registry/mapreduce/inputs/EppResourceBaseInput.java deleted file mode 100644 index 3083868c6..000000000 --- a/core/src/main/java/google/registry/mapreduce/inputs/EppResourceBaseInput.java +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.mapreduce.inputs; - -import com.google.appengine.tools.mapreduce.Input; -import com.google.appengine.tools.mapreduce.InputReader; -import com.google.common.collect.ImmutableList; -import com.googlecode.objectify.Key; -import google.registry.model.index.EppResourceIndex; -import google.registry.model.index.EppResourceIndexBucket; -import java.util.List; - -/** Base class for {@link Input} classes that map over {@link EppResourceIndex}. */ -abstract class EppResourceBaseInput extends Input { - - private static final long serialVersionUID = -6681886718929462122L; - - @Override - public List> createReaders() { - ImmutableList.Builder> readers = new ImmutableList.Builder<>(); - for (Key bucketKey : EppResourceIndexBucket.getAllBuckets()) { - readers.add(bucketToReader(bucketKey)); - } - return readers.build(); - } - - /** Creates a reader that returns the resources under a bucket. */ - protected abstract InputReader bucketToReader(Key bucketKey); -} - diff --git a/core/src/main/java/google/registry/mapreduce/inputs/EppResourceBaseReader.java b/core/src/main/java/google/registry/mapreduce/inputs/EppResourceBaseReader.java deleted file mode 100644 index b3a42b29c..000000000 --- a/core/src/main/java/google/registry/mapreduce/inputs/EppResourceBaseReader.java +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.mapreduce.inputs; - -import static com.google.common.collect.ImmutableSet.toImmutableSet; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; - -import com.google.appengine.api.datastore.Cursor; -import com.google.appengine.api.datastore.QueryResultIterator; -import com.google.appengine.tools.mapreduce.InputReader; -import com.google.common.collect.ImmutableSet; -import com.googlecode.objectify.Key; -import com.googlecode.objectify.cmd.Query; -import google.registry.model.EppResource; -import google.registry.model.index.EppResourceIndex; -import google.registry.model.index.EppResourceIndexBucket; -import javax.annotation.Nullable; - -/** Base class for {@link InputReader} classes that map over {@link EppResourceIndex}. */ -abstract class EppResourceBaseReader extends RetryingInputReader { - - /** Number of bytes in 1MB of memory, used for memory estimates. */ - static final long ONE_MB = 1024 * 1024; - - private static final long serialVersionUID = 7942584269402339168L; - - /** - * The resource kinds to filter for. - * - *

This can be empty, or any of {"ContactResource", "HostResource", "DomainBase"}. It will - * never contain "EppResource" since this isn't an actual kind in Datastore. - */ - private final ImmutableSet filterKinds; - - private final Key bucketKey; - private final long memoryEstimate; - - EppResourceBaseReader( - Key bucketKey, - long memoryEstimate, - ImmutableSet filterKinds) { - this.bucketKey = bucketKey; - this.memoryEstimate = memoryEstimate; - this.filterKinds = filterKinds; - } - - @Override - public QueryResultIterator getQueryIterator(@Nullable Cursor cursor) { - return startQueryAt(query(), cursor).iterator(); - } - - @Override - public int getTotal() { - return query().count(); - } - - /** Query for children of this bucket. */ - Query query() { - Query query = - auditedOfy().load().type(EppResourceIndex.class).ancestor(bucketKey); - return filterKinds.isEmpty() ? query : query.filter("kind in", filterKinds); - } - - /** Returns the estimated memory that will be used by this reader in bytes. */ - @Override - public long estimateMemoryRequirement() { - return memoryEstimate; - } - - static ImmutableSet varargsToKinds( - ImmutableSet> resourceClasses) { - // Ignore EppResource when finding kinds, since it doesn't have one and doesn't imply filtering. - return resourceClasses.contains(EppResource.class) - ? ImmutableSet.of() - : resourceClasses.stream().map(Key::getKind).collect(toImmutableSet()); - } -} diff --git a/core/src/main/java/google/registry/mapreduce/inputs/EppResourceEntityInput.java b/core/src/main/java/google/registry/mapreduce/inputs/EppResourceEntityInput.java deleted file mode 100644 index 2d6619abc..000000000 --- a/core/src/main/java/google/registry/mapreduce/inputs/EppResourceEntityInput.java +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.mapreduce.inputs; - -import static google.registry.util.TypeUtils.checkNoInheritanceRelationships; - -import com.google.appengine.tools.mapreduce.Input; -import com.google.appengine.tools.mapreduce.InputReader; -import com.google.common.collect.ImmutableSet; -import com.googlecode.objectify.Key; -import google.registry.model.EppResource; -import google.registry.model.index.EppResourceIndexBucket; - -/** A MapReduce {@link Input} that loads all {@link EppResource} objects of a given type. */ -class EppResourceEntityInput extends EppResourceBaseInput { - - private static final long serialVersionUID = 8162607479124406226L; - - private final ImmutableSet> resourceClasses; - - public EppResourceEntityInput(ImmutableSet> resourceClasses) { - this.resourceClasses = resourceClasses; - checkNoInheritanceRelationships(ImmutableSet.copyOf(resourceClasses)); - } - - @Override - protected InputReader bucketToReader(Key bucketKey) { - return new EppResourceEntityReader<>(bucketKey, resourceClasses); - } -} diff --git a/core/src/main/java/google/registry/mapreduce/inputs/EppResourceEntityReader.java b/core/src/main/java/google/registry/mapreduce/inputs/EppResourceEntityReader.java deleted file mode 100644 index add812e88..000000000 --- a/core/src/main/java/google/registry/mapreduce/inputs/EppResourceEntityReader.java +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.mapreduce.inputs; - -import static google.registry.model.ofy.ObjectifyService.auditedOfy; - -import com.google.appengine.tools.mapreduce.InputReader; -import com.google.common.collect.ImmutableSet; -import com.google.common.flogger.FluentLogger; -import com.googlecode.objectify.Key; -import google.registry.model.EppResource; -import google.registry.model.index.EppResourceIndex; -import google.registry.model.index.EppResourceIndexBucket; -import java.util.NoSuchElementException; - -/** Reader that maps over {@link EppResourceIndex} and returns resources. */ -class EppResourceEntityReader extends EppResourceBaseReader { - - private static final FluentLogger logger = FluentLogger.forEnclosingClass(); - - private static final long serialVersionUID = -8042933349899971801L; - - /** - * The resource classes to postfilter for. - * - *

This can be {@link EppResource} or any descendant classes, regardless of whether those - * classes map directly to a kind in Datastore, with the restriction that none of the classes - * is a supertype of any of the others. - */ - private final ImmutableSet> resourceClasses; - - public EppResourceEntityReader( - Key bucketKey, - ImmutableSet> resourceClasses) { - super( - bucketKey, - ONE_MB * 2, // Estimate 2MB of memory for this reader, since it loads a (max 1MB) entity. - varargsToKinds(resourceClasses)); - this.resourceClasses = resourceClasses; - } - - /** - * Called for each map invocation. - * - * @throws NoSuchElementException if there are no more elements, as specified in the - * {@link InputReader#next} Javadoc. - */ - @Override - public R next() throws NoSuchElementException { - // Loop until we find a value, or nextQueryResult() throws a NoSuchElementException. - while (true) { - Key key = nextQueryResult().getKey(); - EppResource resource = auditedOfy().load().key(key).now(); - if (resource == null) { - logger.atSevere().log("EppResourceIndex key %s points at a missing resource.", key); - continue; - } - // Postfilter to distinguish polymorphic types (e.g. EppResources). - for (Class resourceClass : resourceClasses) { - if (resourceClass.isAssignableFrom(resource.getClass())) { - @SuppressWarnings("unchecked") - R r = (R) resource; - return r; - } - } - } - } -} diff --git a/core/src/main/java/google/registry/mapreduce/inputs/EppResourceIndexInput.java b/core/src/main/java/google/registry/mapreduce/inputs/EppResourceIndexInput.java deleted file mode 100644 index 2deb73e4a..000000000 --- a/core/src/main/java/google/registry/mapreduce/inputs/EppResourceIndexInput.java +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.mapreduce.inputs; - -import com.google.appengine.tools.mapreduce.Input; -import com.google.appengine.tools.mapreduce.InputReader; -import com.googlecode.objectify.Key; -import google.registry.model.index.EppResourceIndex; -import google.registry.model.index.EppResourceIndexBucket; - -/** - * A MapReduce {@link Input} that loads all {@link EppResourceIndex} entities. - */ -class EppResourceIndexInput extends EppResourceBaseInput { - - private static final long serialVersionUID = -1231269296567279059L; - - @Override - protected InputReader bucketToReader(Key bucketKey) { - return new EppResourceIndexReader(bucketKey); - } -} diff --git a/core/src/main/java/google/registry/mapreduce/inputs/EppResourceIndexReader.java b/core/src/main/java/google/registry/mapreduce/inputs/EppResourceIndexReader.java deleted file mode 100644 index 618214174..000000000 --- a/core/src/main/java/google/registry/mapreduce/inputs/EppResourceIndexReader.java +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.mapreduce.inputs; - -import com.google.appengine.tools.mapreduce.InputReader; -import com.google.common.collect.ImmutableSet; -import com.googlecode.objectify.Key; -import google.registry.model.index.EppResourceIndex; -import google.registry.model.index.EppResourceIndexBucket; -import java.util.NoSuchElementException; - -/** Reader that maps over {@link EppResourceIndex} and returns the index objects themselves. */ -class EppResourceIndexReader extends EppResourceBaseReader { - - private static final long serialVersionUID = -4816383426796766911L; - - public EppResourceIndexReader(Key bucketKey) { - // Estimate 1MB of memory for this reader, which is massive overkill. - // Use an empty set for the filter kinds, which disables filtering. - super(bucketKey, ONE_MB, ImmutableSet.of()); - } - - /** - * Called for each map invocation. - * - * @throws NoSuchElementException if there are no more elements, as specified in the - * {@link InputReader#next} Javadoc. - */ - @Override - public EppResourceIndex next() throws NoSuchElementException { - return nextQueryResult(); - } -} diff --git a/core/src/main/java/google/registry/mapreduce/inputs/EppResourceInputs.java b/core/src/main/java/google/registry/mapreduce/inputs/EppResourceInputs.java deleted file mode 100644 index dab737f53..000000000 --- a/core/src/main/java/google/registry/mapreduce/inputs/EppResourceInputs.java +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.mapreduce.inputs; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.collect.Lists.asList; - -import com.google.appengine.tools.mapreduce.Input; -import com.google.common.collect.ImmutableSet; -import com.googlecode.objectify.Key; -import google.registry.model.EppResource; -import google.registry.model.ImmutableObject; -import google.registry.model.annotations.DeleteAfterMigration; -import google.registry.model.index.EppResourceIndex; - -/** - * Mapreduce helpers for {@link EppResource} keys and objects. - * - *

The inputs provided by this class are not deletion-aware and do not project the resources - * forward in time. That is the responsibility of mappers that use these inputs. - */ -@DeleteAfterMigration -public final class EppResourceInputs { - - private EppResourceInputs() {} - - /** Returns a MapReduce {@link Input} that loads all {@link EppResourceIndex} objects. */ - public static Input createIndexInput() { - return new EppResourceIndexInput(); - } - - /** - * Returns a MapReduce {@link Input} that loads all {@link EppResource} objects of a given type, - * including deleted resources. - * - *

Note: Do not concatenate multiple EntityInputs together (this is inefficient as it iterates - * through all buckets multiple times). Specify the types in a single input, or load all types by - * specifying {@link EppResource} as the class. - */ - @SafeVarargs - public static Input createEntityInput( - Class resourceClass, - Class... moreResourceClasses) { - return new EppResourceEntityInput<>( - ImmutableSet.copyOf(asList(resourceClass, moreResourceClasses))); - } - - /** - * Returns a MapReduce {@link Input} that loads all {@link ImmutableObject} objects of a given - * type, including deleted resources, that are child entities of all {@link EppResource} objects - * of a given type. - * - *

Note: Do not concatenate multiple EntityInputs together (this is inefficient as it iterates - * through all buckets multiple times). Specify the types in a single input, or load all types by - * specifying {@link EppResource} and/or {@link ImmutableObject} as the class. - */ - public static Input createChildEntityInput( - ImmutableSet> parentClasses, - ImmutableSet> childClasses) { - checkArgument(!parentClasses.isEmpty(), "Must provide at least one parent type."); - checkArgument(!childClasses.isEmpty(), "Must provide at least one child type."); - return new ChildEntityInput<>(parentClasses, childClasses); - } - - /** - * Returns a MapReduce {@link Input} that loads keys to all {@link EppResource} objects of a given - * type, including deleted resources. - * - *

Note: Do not concatenate multiple KeyInputs together (this is inefficient as it iterates - * through all buckets multiple times). Specify the types in a single input, or load all types by - * specifying {@link EppResource} as the class. - */ - @SafeVarargs - public static Input> createKeyInput( - Class resourceClass, Class... moreResourceClasses) { - return new EppResourceKeyInput<>( - ImmutableSet.copyOf(asList(resourceClass, moreResourceClasses))); - } -} diff --git a/core/src/main/java/google/registry/mapreduce/inputs/EppResourceKeyInput.java b/core/src/main/java/google/registry/mapreduce/inputs/EppResourceKeyInput.java deleted file mode 100644 index b72e215e1..000000000 --- a/core/src/main/java/google/registry/mapreduce/inputs/EppResourceKeyInput.java +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.mapreduce.inputs; - -import static google.registry.util.TypeUtils.checkNoInheritanceRelationships; - -import com.google.appengine.tools.mapreduce.Input; -import com.google.appengine.tools.mapreduce.InputReader; -import com.google.common.collect.ImmutableSet; -import com.googlecode.objectify.Key; -import google.registry.model.EppResource; -import google.registry.model.annotations.DeleteAfterMigration; -import google.registry.model.index.EppResourceIndexBucket; - -/** - * A MapReduce {@link Input} that loads keys to all {@link EppResource} objects of a given type. - * - *

When mapping over keys we can't distinguish between Objectify polymorphic types. - */ -@DeleteAfterMigration -class EppResourceKeyInput extends EppResourceBaseInput> { - - private static final long serialVersionUID = -5426821384707653743L; - - private final ImmutableSet> resourceClasses; - - public EppResourceKeyInput(ImmutableSet> resourceClasses) { - this.resourceClasses = resourceClasses; - checkNoInheritanceRelationships(ImmutableSet.copyOf(resourceClasses)); - } - - @Override - protected InputReader> bucketToReader(Key bucketKey) { - return new EppResourceKeyReader<>(bucketKey, resourceClasses); - } -} diff --git a/core/src/main/java/google/registry/mapreduce/inputs/EppResourceKeyReader.java b/core/src/main/java/google/registry/mapreduce/inputs/EppResourceKeyReader.java deleted file mode 100644 index 312b42153..000000000 --- a/core/src/main/java/google/registry/mapreduce/inputs/EppResourceKeyReader.java +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.mapreduce.inputs; - -import com.google.appengine.tools.mapreduce.InputReader; -import com.google.common.collect.ImmutableSet; -import com.googlecode.objectify.Key; -import google.registry.model.EppResource; -import google.registry.model.annotations.DeleteAfterMigration; -import google.registry.model.index.EppResourceIndex; -import google.registry.model.index.EppResourceIndexBucket; -import java.util.NoSuchElementException; - -/** - * Reader that maps over {@link EppResourceIndex} and returns resource keys. - * - *

When mapping over keys we can't distinguish between Objectify polymorphic types. - */ -@DeleteAfterMigration -class EppResourceKeyReader extends EppResourceBaseReader> { - - private static final long serialVersionUID = -428232054739189774L; - - public EppResourceKeyReader( - Key bucketKey, ImmutableSet> resourceClasses) { - super( - bucketKey, - ONE_MB, // Estimate 1MB of memory for this reader, which is massive overkill. - varargsToKinds(resourceClasses)); - } - - /** - * Called for each map invocation. - * - * @throws NoSuchElementException if there are no more elements, as specified in the - * {@link InputReader#next} Javadoc. - */ - @Override - @SuppressWarnings("unchecked") - public Key next() throws NoSuchElementException { - // This is a safe cast because we filtered on kind inside the query. - return (Key) nextQueryResult().getKey(); - } -} diff --git a/core/src/main/java/google/registry/mapreduce/inputs/NullInput.java b/core/src/main/java/google/registry/mapreduce/inputs/NullInput.java deleted file mode 100644 index 964a22933..000000000 --- a/core/src/main/java/google/registry/mapreduce/inputs/NullInput.java +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.mapreduce.inputs; - -import com.google.appengine.tools.mapreduce.Input; -import com.google.appengine.tools.mapreduce.InputReader; -import com.google.common.collect.ImmutableList; -import java.util.List; -import java.util.NoSuchElementException; - -/** An input that returns a single {@code null} value. */ -public class NullInput extends Input { - - private static final long serialVersionUID = 1816836937031979851L; - - private static final class NullReader extends InputReader { - - private static final long serialVersionUID = -8176201363578913125L; - - boolean read = false; - - @Override - public T next() throws NoSuchElementException { - if (read) { - throw new NoSuchElementException(); - } - read = true; - return null; - } - - @Override - public Double getProgress() { - return read ? 1.0 : 0.0; - } - } - - @Override - public List> createReaders() { - return ImmutableList.of(new NullReader()); - } -} diff --git a/core/src/main/java/google/registry/mapreduce/inputs/RetryingInputReader.java b/core/src/main/java/google/registry/mapreduce/inputs/RetryingInputReader.java deleted file mode 100644 index 887fa9135..000000000 --- a/core/src/main/java/google/registry/mapreduce/inputs/RetryingInputReader.java +++ /dev/null @@ -1,168 +0,0 @@ -// Copyright 2018 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.mapreduce.inputs; - -import static com.google.common.base.Preconditions.checkNotNull; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; - -import com.google.appengine.api.datastore.Cursor; -import com.google.appengine.api.datastore.DatastoreTimeoutException; -import com.google.appengine.api.datastore.QueryResultIterator; -import com.google.appengine.tools.mapreduce.InputReader; -import com.google.common.flogger.FluentLogger; -import com.googlecode.objectify.cmd.Query; -import google.registry.model.annotations.DeleteAfterMigration; -import google.registry.util.Retrier; -import google.registry.util.SystemSleeper; -import java.util.NoSuchElementException; -import javax.annotation.Nullable; - -/** - * A reader over objectify query that retries reads on failure. - * - *

When doing a mapreduce over a large number of elements from Datastore, the random - * DatastoreTimeoutExceptions that happen sometimes can eventually add up and cause the entire - * mapreduce to fail. - * - *

This base RetryingInputReader will automatically retry any DatastoreTimeoutException to - * minimize the failures. - * - *

I is the internal Objectify read type, while T is the InputReader return type. - */ -@DeleteAfterMigration -abstract class RetryingInputReader extends InputReader { - - private static final long serialVersionUID = -4897677478541818899L; - private static final Retrier retrier = new Retrier(new SystemSleeper(), 5); - private static final FluentLogger logger = FluentLogger.forEnclosingClass(); - - @Nullable private Cursor cursor; - private int total; - private int loaded; - - private transient QueryResultIterator queryIterator; - - /** - * Return the iterator over Query results, starting at the cursor location. - * - *

Must always return an iterator over the same query. - * - *

The underlying {@link Query} must have an ancestor filter, so that it is strongly - * consistent. According to the documentation at - * https://cloud.google.com/appengine/docs/java/datastore/queries#Java_Data_consistency - * - *

"strongly consistent queries are always transactionally consistent". However, each time we - * restart the query at a cursor we have a new effective query, and "if the results for a query - * change between uses of a cursor, the query notices only changes that occur in results after the - * cursor. If a new result appears before the cursor's position for the query, it will not be - * returned when the results after the cursor are fetched." - * - *

What this means in practice is that entities that are created after the initial query begins - * may or may not be seen by this reader, depending on whether the query was paused and restarted - * with a cursor before it would have reached the new entity. - * - * @param cursor the initial location for the iterator to start from. If null - start from - * beginning. - */ - public abstract QueryResultIterator getQueryIterator(@Nullable Cursor cursor); - - /** - * Return the total number of elements the iterator goes over. - * - *

The results are cached - this function will only be called once on the start of the shard, - * or when the iterator is reset. - * - *

The results are only used for debugging / progress display. It is safe to return 0. - */ - public abstract int getTotal(); - - /** - * Return the next item of this InputReader. - * - *

You probably want to use {@link #nextQueryResult} internally when preparing the next item. - * It is OK to call {@link #nextQueryResult} multiple times. - */ - @Override - public abstract T next(); - - /** Called once at start. Cache the expected size. */ - @Override - public void beginShard() { - total = getTotal(); - } - - /** Called every time we are deserialized. Create a new query or resume an existing one. */ - @Override - public void beginSlice() { - queryIterator = getQueryIterator(cursor); - } - - /** Called occasionally alongside {@link #next}. */ - @Override - public Double getProgress() { - // Cap progress at 1.0, since the query's count() can increase during the run of the mapreduce - // if more entities are written, but we've cached the value once in "total". - return Math.min(1.0, ((double) loaded) / Math.max(1, total)); - } - - /** Called before we are serialized. Save a serializable cursor for this query. */ - @Override - public void endSlice() { - cursor = queryIterator.getCursor(); - } - - /** - * Get the next item from the query results. - * - *

Use this to create the next() function. - * - * @throws NoSuchElementException if there are no more elements. - */ - protected final I nextQueryResult() { - cursor = queryIterator.getCursor(); - loaded++; - try { - return retrier.callWithRetry( - () -> queryIterator.next(), - (thrown, failures, maxAttempts) -> { - checkNotNull(cursor, "Can't retry because cursor is null. Giving up."); - logger.atInfo().withCause(thrown).log( - "Retriable failure while reading item %d/%d - attempt %d/%d.", - loaded, total, failures, maxAttempts); - queryIterator = getQueryIterator(cursor); - }, - DatastoreTimeoutException.class); - } catch (NoSuchElementException e) { - // We expect NoSuchElementException to be thrown, and it isn't an error. Just rethrow. - throw e; - } catch (Throwable e) { - throw new RuntimeException( - String.format("Got an unrecoverable failure while reading item %d/%d.", loaded, total), - e); - } finally { - auditedOfy().clearSessionCache(); - } - } - - /** - * Utility function to start a query from a given nullable cursor. - * - * @param query the query to work on - * @param cursor the location to start from. If null - starts from the beginning. - */ - public static Query startQueryAt(Query query, @Nullable Cursor cursor) { - return (cursor == null) ? query : query.startAt(cursor); - } -} diff --git a/core/src/main/java/google/registry/model/EntityClasses.java b/core/src/main/java/google/registry/model/EntityClasses.java index 2b9db8e72..112f63a0c 100644 --- a/core/src/main/java/google/registry/model/EntityClasses.java +++ b/core/src/main/java/google/registry/model/EntityClasses.java @@ -30,11 +30,6 @@ import google.registry.model.host.HostResource; import google.registry.model.index.EppResourceIndex; import google.registry.model.index.EppResourceIndexBucket; import google.registry.model.index.ForeignKeyIndex; -import google.registry.model.ofy.CommitLogBucket; -import google.registry.model.ofy.CommitLogCheckpoint; -import google.registry.model.ofy.CommitLogCheckpointRoot; -import google.registry.model.ofy.CommitLogManifest; -import google.registry.model.ofy.CommitLogMutation; import google.registry.model.poll.PollMessage; import google.registry.model.rde.RdeRevision; import google.registry.model.registrar.Registrar; @@ -58,11 +53,6 @@ public final class EntityClasses { BillingEvent.Modification.class, BillingEvent.OneTime.class, BillingEvent.Recurring.class, - CommitLogBucket.class, - CommitLogCheckpoint.class, - CommitLogCheckpointRoot.class, - CommitLogManifest.class, - CommitLogMutation.class, ContactHistory.class, ContactResource.class, Cursor.class, diff --git a/core/src/main/java/google/registry/model/EppResource.java b/core/src/main/java/google/registry/model/EppResource.java index 0a9dc36f7..4a3493d6e 100644 --- a/core/src/main/java/google/registry/model/EppResource.java +++ b/core/src/main/java/google/registry/model/EppResource.java @@ -31,14 +31,11 @@ import com.github.benmanes.caffeine.cache.LoadingCache; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; -import com.google.common.collect.ImmutableSortedMap; -import com.googlecode.objectify.Key; import com.googlecode.objectify.annotation.Id; import com.googlecode.objectify.annotation.Index; import google.registry.config.RegistryConfig; import google.registry.model.CacheUtils.AppEngineEnvironmentCacheLoader; import google.registry.model.eppcommon.StatusValue; -import google.registry.model.ofy.CommitLogManifest; import google.registry.model.transfer.TransferData; import google.registry.persistence.VKey; import google.registry.util.NonFinalForTesting; @@ -144,17 +141,6 @@ public abstract class EppResource extends BackupGroupRoot implements Buildable { // TODO(b/177567432): rename to "statuses" once we're off datastore. Set status; - /** - * Sorted map of {@link DateTime} keys (modified time) to {@link CommitLogManifest} entries. - * - *

Note: Only the last revision on a given date is stored. The key is the transaction - * timestamp, not midnight. - * - * @see google.registry.model.translators.CommitLogRevisionsTranslatorFactory - */ - @Transient @DoNotCompare - ImmutableSortedMap> revisions = ImmutableSortedMap.of(); - public String getRepoId() { return repoId; } @@ -206,10 +192,6 @@ public abstract class EppResource extends BackupGroupRoot implements Buildable { return deletionTime; } - public ImmutableSortedMap> getRevisions() { - return nullToEmptyImmutableCopy(revisions); - } - /** Return a clone of the resource with timed status values modified using the given time. */ public abstract EppResource cloneProjectedAtTime(DateTime now); diff --git a/core/src/main/java/google/registry/model/EppResourceUtils.java b/core/src/main/java/google/registry/model/EppResourceUtils.java index 24c1d946f..f6097c64a 100644 --- a/core/src/main/java/google/registry/model/EppResourceUtils.java +++ b/core/src/main/java/google/registry/model/EppResourceUtils.java @@ -38,8 +38,6 @@ import google.registry.model.domain.DomainBase; import google.registry.model.eppcommon.StatusValue; import google.registry.model.host.HostResource; import google.registry.model.index.ForeignKeyIndex; -import google.registry.model.ofy.CommitLogManifest; -import google.registry.model.ofy.CommitLogMutation; import google.registry.model.reporting.HistoryEntry; import google.registry.model.reporting.HistoryEntryDao; import google.registry.model.tld.Registry; @@ -49,7 +47,6 @@ import google.registry.model.transfer.TransferStatus; import google.registry.persistence.VKey; import java.util.Comparator; import java.util.List; -import java.util.Map.Entry; import java.util.Optional; import java.util.function.Function; import java.util.function.Supplier; @@ -271,32 +268,7 @@ public final class EppResourceUtils { * perform a single fetch operation. * *

Warning: A resource can only be rolled backwards in time, not forwards; therefore - * {@code resource} should be whatever's currently in Datastore. - * - *

Warning: In Datastore, revisions are granular to 24-hour periods. It's recommended - * that {@code timestamp} be set to midnight. If you don't use midnight, you must take into - * consideration that under certain circumstances, a resource might be restored to a revision on - * the previous day, even if there were revisions made earlier on the same date as {@code - * timestamp}; however, a resource will never be restored to a revision occurring after {@code - * timestamp}. This behavior is due to the way {@link - * google.registry.model.translators.CommitLogRevisionsTranslatorFactory - * CommitLogRevisionsTranslatorFactory} manages the {@link EppResource#revisions} field. Please - * note however that the creation and deletion times of a resource are granular to the - * millisecond. - * - *

Example: a resource in Datastore has three revisions A, B, and C - * - *

    - *
  • A: Day 0, 1pm - *
  • B: Day 1, 1pm - *
  • C: Day 1, 3pm - *
- * - *

If one requests the resource as of day 1 at 2pm, we will return revision A because as far as - * the commit logs are concerned, revision C completely overwrites the existence of revision B. - * - *

When using the SQL backend (post-Registry-3.0-migration) this restriction goes away and - * objects can be restored to any revision. + * {@code resource} should be whatever's currently in SQL. * * @return the resource at {@code timestamp} or {@code null} if resource is deleted or not yet * created @@ -344,49 +316,6 @@ public final class EppResourceUtils { */ private static T loadMostRecentRevisionAtTime( final T resource, final DateTime timestamp) { - if (tm().isOfy()) { - return loadMostRecentRevisionAtTimeDatastore(resource, timestamp); - } else { - return loadMostRecentRevisionAtTimeSql(resource, timestamp); - } - } - - /** - * Returns the most recent Datastore revision of a given EppResource before or at the provided - * timestamp using the EppResource revisions map, falling back to using the resource as-is if - * there are no revisions. - * - * @see #loadAtPointInTimeAsync(EppResource, DateTime) - */ - private static T loadMostRecentRevisionAtTimeDatastore( - final T resource, final DateTime timestamp) { - final Key resourceKey = Key.create(resource); - final Key revision = - findMostRecentDatastoreRevisionAtTime(resource, timestamp); - if (revision == null) { - logger.atSevere().log("No revision found for %s, falling back to resource.", resourceKey); - return resource; - } - final CommitLogMutation mutation = - auditedOfy().load().key(CommitLogMutation.createKey(revision, resourceKey)).now(); - if (mutation != null) { - return auditedOfy().load().fromEntity(mutation.getEntity()); - } - logger.atSevere().log( - "Couldn't load mutation for revision at %s for %s, falling back to resource." - + " Revision: %s", - timestamp, resourceKey, revision); - return resource; - } - - /** - * Returns the most recent SQL revision of a given EppResource before or at the provided timestamp - * using *History objects, falling back to using the resource as-is if there are no revisions. - * - * @see #loadAtPointInTimeAsync(EppResource, DateTime) - */ - private static T loadMostRecentRevisionAtTimeSql( - T resource, DateTime timestamp) { @SuppressWarnings("unchecked") T resourceAtPointInTime = (T) @@ -405,30 +334,6 @@ public final class EppResourceUtils { return resourceAtPointInTime; } - @Nullable - private static - Key findMostRecentDatastoreRevisionAtTime( - final T resource, final DateTime timestamp) { - final Key resourceKey = Key.create(resource); - Entry> revision = resource.getRevisions().floorEntry(timestamp); - if (revision != null) { - logger.atInfo().log( - "Found revision history at %s for %s: %s", timestamp, resourceKey, revision); - return revision.getValue(); - } - // Fall back to the earliest revision if we don't have one before the requested timestamp. - revision = resource.getRevisions().firstEntry(); - if (revision != null) { - logger.atSevere().log( - "Found no revision history at %s for %s, using earliest revision: %s", - timestamp, resourceKey, revision); - return revision.getValue(); - } - // Ultimate fallback: There are no revisions whatsoever, so return null. - logger.atSevere().log("Found no revision history at all for %s", resourceKey); - return null; - } - /** * Returns a set of {@link VKey} for domains that reference a specified contact or host. * diff --git a/core/src/main/java/google/registry/model/eppcommon/StatusValue.java b/core/src/main/java/google/registry/model/eppcommon/StatusValue.java index eb1de6e73..0991fc902 100644 --- a/core/src/main/java/google/registry/model/eppcommon/StatusValue.java +++ b/core/src/main/java/google/registry/model/eppcommon/StatusValue.java @@ -87,8 +87,8 @@ public enum StatusValue implements EppEnum { * A status for a resource indicating that deletion has been requested but has not yet happened. * *

Contacts and hosts are deleted asynchronously because we need to check their incoming - * references with strong consistency, requiring a mapreduce, and during that asynchronous process - * they have the PENDING_DELETE status. + * references with strong consistency, requiring an asynchronous process, and during that + * asynchronous process they have the PENDING_DELETE status. * *

Domains in the add grace period are deleted synchronously and do not ever have this status. * Otherwise, domains go through an extended deletion process, consisting of a 30-day redemption diff --git a/core/src/main/java/google/registry/model/ofy/CommitLogBucket.java b/core/src/main/java/google/registry/model/ofy/CommitLogBucket.java deleted file mode 100644 index 9221304c9..000000000 --- a/core/src/main/java/google/registry/model/ofy/CommitLogBucket.java +++ /dev/null @@ -1,169 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.model.ofy; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.collect.DiscreteDomain.integers; -import static com.google.common.collect.ImmutableSet.toImmutableSet; -import static google.registry.config.RegistryConfig.getCommitLogBucketCount; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.util.DateTimeUtils.START_OF_TIME; - -import com.google.common.collect.ContiguousSet; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.ImmutableSortedSet; -import com.google.common.collect.Range; -import com.googlecode.objectify.Key; -import com.googlecode.objectify.annotation.Entity; -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.util.NonFinalForTesting; -import java.util.Random; -import java.util.function.Supplier; -import org.joda.time.DateTime; - -/** - * Root for a random commit log bucket. - * - *

This is used to shard {@link CommitLogManifest} objects into {@link - * RegistryConfig#getCommitLogBucketCount() N} entity groups. This increases transaction throughput, - * while maintaining the ability to perform strongly-consistent ancestor queries. - * - * @see Avoiding Datastore - * contention - */ -@Entity -@NotBackedUp(reason = Reason.COMMIT_LOGS) -@DeleteAfterMigration -public class CommitLogBucket extends ImmutableObject implements Buildable { - - /** - * Ranges from 1 to {@link RegistryConfig#getCommitLogBucketCount()}, inclusive; starts at 1 since - * IDs can't be 0. - */ - @Id long bucketNum; - - /** The timestamp of the last {@link CommitLogManifest} written to this bucket. */ - DateTime lastWrittenTime = START_OF_TIME; - - public int getBucketNum() { - return (int) bucketNum; - } - - public DateTime getLastWrittenTime() { - return lastWrittenTime; - } - - /** - * Returns the key for the specified bucket ID. - * - *

Always use this method in preference to manually creating bucket keys, since manual keys - * are not guaranteed to have a valid bucket ID number. - */ - public static Key getBucketKey(int num) { - checkArgument(getBucketIdRange().contains(num), "%s not in %s", num, getBucketIdRange()); - return getBucketKeyUnsafe(num); - } - - private static Key getBucketKeyUnsafe(int num) { - return Key.create(CommitLogBucket.class, num); - } - - /** Returns a sorted set of all the possible numeric bucket IDs. */ - public static ImmutableSortedSet getBucketIds() { - return ContiguousSet.create(getBucketIdRange(), integers()); - } - - private static Range getBucketIdRange() { - return Range.closed(1, getCommitLogBucketCount()); - } - - /** Returns an arbitrary numeric bucket ID. Default behavior is randomly chosen IDs. */ - public static int getArbitraryBucketId() { - return bucketIdSupplier.get(); - } - - /** - * Supplier of valid bucket IDs to use for {@link #getArbitraryBucketId()}. - * - *

Default supplier is one that returns bucket IDs via uniform random selection, but can be - * overridden in tests that rely on predictable bucket assignment for commit logs. - */ - @NonFinalForTesting - private static Supplier bucketIdSupplier = - new Supplier() { - private final Random random = new Random(); - - @Override - public Integer get() { - return random.nextInt(getCommitLogBucketCount()) + 1; // Add 1 since IDs can't be 0. - } - }; - - /** Returns the loaded bucket for the given key, or a new object if the bucket doesn't exist. */ - public static CommitLogBucket loadBucket(Key bucketKey) { - CommitLogBucket bucket = auditedOfy().load().key(bucketKey).now(); - return (bucket == null) - ? new CommitLogBucket.Builder().setBucketNum(bucketKey.getId()).build() - : bucket; - } - - /** Returns the set of all loaded commit log buckets, filling in missing buckets with new ones. */ - public static ImmutableSet loadAllBuckets() { - auditedOfy().load().keys(getAllBucketKeys()); // Load all buckets into session cache at once. - ImmutableSet.Builder allBuckets = new ImmutableSet.Builder<>(); - for (Key key : getAllBucketKeys()) { - allBuckets.add(loadBucket(key)); - } - return allBuckets.build(); - } - - /** Returns all commit log bucket keys, in ascending order by bucket ID. */ - public static ImmutableSet> getAllBucketKeys() { - return getBucketIds() - .stream() - .map(CommitLogBucket::getBucketKeyUnsafe) - .collect(toImmutableSet()); - } - - @Override - public Builder asBuilder() { - return new Builder(clone(this)); - } - - /** A builder for {@link CommitLogBucket} since it is immutable. */ - public static class Builder extends Buildable.Builder { - public Builder() {} - - public Builder(CommitLogBucket instance) { - super(instance); - } - - public Builder setBucketNum(long bucketNum) { - getInstance().bucketNum = bucketNum; - return this; - } - - public Builder setLastWrittenTime(DateTime lastWrittenTime) { - getInstance().lastWrittenTime = lastWrittenTime; - return this; - } - } -} diff --git a/core/src/main/java/google/registry/model/ofy/CommitLogCheckpoint.java b/core/src/main/java/google/registry/model/ofy/CommitLogCheckpoint.java deleted file mode 100644 index 55cc57184..000000000 --- a/core/src/main/java/google/registry/model/ofy/CommitLogCheckpoint.java +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.model.ofy; - -import static com.google.common.base.Preconditions.checkArgument; -import static org.joda.time.DateTimeZone.UTC; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.googlecode.objectify.Key; -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 java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import org.joda.time.DateTime; - -/** - * Entity representing a point-in-time consistent view of Datastore, based on commit logs. - * - *

Conceptually, this entity consists of two pieces of information: the checkpoint "wall" time - * and a set of bucket checkpoint times. The former is the ID for this checkpoint (constrained to be - * unique upon checkpoint creation) and also represents the approximate wall time of the consistent - * Datastore view this checkpoint represents. The latter is really a mapping from bucket ID to - * timestamp, where the timestamp dictates the upper bound (inclusive) on commit logs from that - * bucket to include when restoring Datastore to this checkpoint. - */ -@Entity -@NotBackedUp(reason = Reason.COMMIT_LOGS) -@DeleteAfterMigration -public class CommitLogCheckpoint extends ImmutableObject { - - /** Shared singleton parent entity for commit log checkpoints. */ - @Parent - Key parent = CommitLogCheckpointRoot.getKey(); - - /** The checkpoint's approximate "wall" time (in millis since the epoch). */ - @Id - long checkpointTime; - - /** Bucket checkpoint times for this checkpoint, ordered to match up with buckets 1-N. */ - List bucketTimestamps = new ArrayList<>(); - - public DateTime getCheckpointTime() { - return new DateTime(checkpointTime, UTC); - } - - /** Returns the bucket checkpoint times as a map from bucket ID to commit timestamp. */ - public ImmutableMap getBucketTimestamps() { - ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); - for (int i = 0; i < bucketTimestamps.size(); ++i) { - // Add 1 to map the bucket timestamps properly to buckets indexed from 1-N. - builder.put(i + 1, bucketTimestamps.get(i)); - } - return builder.build(); - } - - /** - * Creates a CommitLogCheckpoint for the given wall time and bucket checkpoint times, specified as - * a map from bucket ID to bucket commit timestamp. - */ - public static CommitLogCheckpoint create( - DateTime checkpointTime, ImmutableMap bucketTimestamps) { - checkArgument( - Objects.equals(CommitLogBucket.getBucketIds().asList(), bucketTimestamps.keySet().asList()), - "Bucket ids are incorrect: %s", - bucketTimestamps.keySet()); - CommitLogCheckpoint instance = new CommitLogCheckpoint(); - instance.checkpointTime = checkpointTime.getMillis(); - instance.bucketTimestamps = ImmutableList.copyOf(bucketTimestamps.values()); - return instance; - } - - /** - * Creates a CommitLogCheckpoint for the given wall time and bucket checkpoint times. Test only. - * - *

This lacks validation on the bucketTimestamps map. - */ - @VisibleForTesting - public static CommitLogCheckpoint createForTest( - DateTime checkpointTime, ImmutableMap bucketTimestamps) { - CommitLogCheckpoint instance = new CommitLogCheckpoint(); - instance.checkpointTime = checkpointTime.getMillis(); - instance.bucketTimestamps = ImmutableList.copyOf(bucketTimestamps.values()); - return instance; - } - - /** Creates a key for the CommitLogCheckpoint for the given wall time. */ - public static Key createKey(DateTime checkpointTime) { - return Key.create( - CommitLogCheckpointRoot.getKey(), CommitLogCheckpoint.class, checkpointTime.getMillis()); - } -} diff --git a/core/src/main/java/google/registry/model/ofy/CommitLogCheckpointRoot.java b/core/src/main/java/google/registry/model/ofy/CommitLogCheckpointRoot.java deleted file mode 100644 index b25b9ebea..000000000 --- a/core/src/main/java/google/registry/model/ofy/CommitLogCheckpointRoot.java +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.model.ofy; - -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.util.DateTimeUtils.START_OF_TIME; - -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 org.joda.time.DateTime; - -/** Singleton parent entity for all commit log checkpoints. */ -@Entity -@NotBackedUp(reason = Reason.COMMIT_LOGS) -@DeleteAfterMigration -public class CommitLogCheckpointRoot extends ImmutableObject { - - public static final long SINGLETON_ID = 1; // There is always exactly one of these. - - @Id - long id = SINGLETON_ID; - - /** Singleton key for CommitLogCheckpointParent. */ - public static Key getKey() { - return Key.create(CommitLogCheckpointRoot.class, SINGLETON_ID); - } - - /** The timestamp of the last {@link CommitLogCheckpoint} written. */ - DateTime lastWrittenTime = START_OF_TIME; - - public DateTime getLastWrittenTime() { - return lastWrittenTime; - } - - public static CommitLogCheckpointRoot loadRoot() { - CommitLogCheckpointRoot root = auditedOfy().load().key(getKey()).now(); - return root == null ? new CommitLogCheckpointRoot() : root; - } - - public static CommitLogCheckpointRoot create(DateTime lastWrittenTime) { - CommitLogCheckpointRoot instance = new CommitLogCheckpointRoot(); - instance.lastWrittenTime = lastWrittenTime; - return instance; - } -} diff --git a/core/src/main/java/google/registry/model/ofy/CommitLogManifest.java b/core/src/main/java/google/registry/model/ofy/CommitLogManifest.java deleted file mode 100644 index 78b1528e6..000000000 --- a/core/src/main/java/google/registry/model/ofy/CommitLogManifest.java +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.model.ofy; - -import static google.registry.util.CollectionUtils.nullToEmptyImmutableCopy; -import static org.joda.time.DateTimeZone.UTC; - -import com.google.common.collect.ImmutableSet; -import com.googlecode.objectify.Key; -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 java.util.LinkedHashSet; -import java.util.Set; -import org.joda.time.DateTime; - -/** - * Archived Datastore transaction that can be replayed. - * - *

Entities of this kind are entity group sharded using a {@link CommitLogBucket} parent. Each - * object that was saved during this transaction is stored in a {@link CommitLogMutation} child - * entity. - */ -@Entity -@NotBackedUp(reason = Reason.COMMIT_LOGS) -@DeleteAfterMigration -public class CommitLogManifest extends ImmutableObject { - - /** Commit log manifests are parented on a random bucket. */ - @Parent - Key parent; - - /** - * The commit time (in millis since the epoch). - * - *

This will be unique among siblings sharing the same parent {@link CommitLogBucket}. - */ - @Id - long commitTime; - - /** Keys that were deleted in this commit. (Saves are recorded in child entities.) */ - Set> deletions = new LinkedHashSet<>(); - - public DateTime getCommitTime() { - return new DateTime(commitTime, UTC); - } - - public int getBucketId() { - return (int) parent.getId(); - } - - public ImmutableSet> getDeletions() { - return nullToEmptyImmutableCopy(deletions); - } - - public static CommitLogManifest create( - Key parent, DateTime commitTime, Set> deletions) { - CommitLogManifest instance = new CommitLogManifest(); - instance.parent = parent; - instance.commitTime = commitTime.getMillis(); - instance.deletions = nullToEmptyImmutableCopy(deletions); - return instance; - } - - public static Key createKey(Key parent, DateTime commitTime) { - return Key.create(parent, CommitLogManifest.class, commitTime.getMillis()); - } - - /** Returns the commit time encoded into a CommitLogManifest key. */ - public static DateTime extractCommitTime(Key manifestKey) { - return new DateTime(manifestKey.getId(), UTC); - } -} diff --git a/core/src/main/java/google/registry/model/ofy/CommitLogMutation.java b/core/src/main/java/google/registry/model/ofy/CommitLogMutation.java deleted file mode 100644 index 66f02aa38..000000000 --- a/core/src/main/java/google/registry/model/ofy/CommitLogMutation.java +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.model.ofy; - - -import static com.google.appengine.api.datastore.EntityTranslator.convertToPb; -import static com.google.appengine.api.datastore.EntityTranslator.createFromPbBytes; -import static com.google.common.base.Preconditions.checkNotNull; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; - -import com.google.appengine.api.datastore.KeyFactory; -import com.google.common.annotations.VisibleForTesting; -import com.googlecode.objectify.Key; -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; - -/** Representation of a saved entity in a {@link CommitLogManifest} (not deletes). */ -@Entity -@NotBackedUp(reason = Reason.COMMIT_LOGS) -@DeleteAfterMigration -public class CommitLogMutation extends ImmutableObject { - - /** The manifest this belongs to. */ - @Parent - Key parent; - - /** Serialized web-safe string representation of saved entity key. */ - @Id - String entityKey; - - /** - * Raw entity that was saved during the transaction, serialized as a protocol buffer. - * - *

This value will be written to a GCS file by an export task. - */ - byte[] entityProtoBytes; - - public byte[] getEntityProtoBytes() { - return entityProtoBytes.clone(); - } - - /** Deserializes embedded entity bytes and returns it. */ - public com.google.appengine.api.datastore.Entity getEntity() { - return createFromPbBytes(entityProtoBytes); - } - - /** - * Returns a new mutation entity created from an @Entity ImmutableObject instance. - * - *

The mutation key is generated deterministically from the {@code entity} key. The object is - * converted to a raw Datastore Entity, serialized to bytes, and stored within the mutation. - */ - public static CommitLogMutation create(Key parent, Object entity) { - return createFromRaw(parent, auditedOfy().saveIgnoringReadOnlyWithBackup().toEntity(entity)); - } - - /** - * Returns a new mutation entity created from a raw Datastore Entity instance. - * - *

The mutation key is generated deterministically from the {@code entity} key. The Entity - * itself is serialized to bytes and stored within the returned mutation. - */ - @VisibleForTesting - public static CommitLogMutation createFromRaw( - Key parent, - com.google.appengine.api.datastore.Entity rawEntity) { - CommitLogMutation instance = new CommitLogMutation(); - instance.parent = checkNotNull(parent); - // TODO(b/207516684): figure out if this should be converted to a vkey string via stringify() - // Creates a web-safe key string. - instance.entityKey = KeyFactory.keyToString(rawEntity.getKey()); - instance.entityProtoBytes = convertToPb(rawEntity).toByteArray(); - return instance; - } - - /** Returns the key of a mutation based on the {@code entityKey} of the entity it stores. */ - public static - Key createKey(Key parent, Key entityKey) { - // TODO(b/207516684): figure out if the return type needs to be VKey and - // if the string used to create a key should remain the same - return Key.create(parent, CommitLogMutation.class, entityKey.getString()); - } -} 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 49aef53f3..736d2d178 100644 --- a/core/src/main/java/google/registry/model/ofy/CommitLoggedWork.java +++ b/core/src/main/java/google/registry/model/ofy/CommitLoggedWork.java @@ -15,29 +15,12 @@ package google.registry.model.ofy; import static com.google.common.base.Preconditions.checkState; -import static com.google.common.base.Predicates.in; -import static com.google.common.base.Predicates.not; -import static com.google.common.collect.ImmutableSet.toImmutableSet; -import static com.google.common.collect.Maps.filterKeys; -import static com.google.common.collect.Sets.difference; -import static com.google.common.collect.Sets.union; -import static google.registry.model.ofy.CommitLogBucket.loadBucket; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.util.DateTimeUtils.isBeforeOrAt; -import com.google.common.collect.ImmutableMap; 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; -import java.util.Map.Entry; -import java.util.Set; import java.util.function.Supplier; -import org.joda.time.DateTime; /** Wrapper for {@link Supplier} that associates a time with each attempt. */ @DeleteAfterMigration @@ -57,17 +40,6 @@ public class CommitLoggedWork implements Runnable { */ private R result; - /** - * Temporary place to store the key of the commit log manifest. - * - *

We can use this to determine whether a transaction that failed with a - * {@link com.google.appengine.api.datastore.DatastoreTimeoutException} actually succeeded. If - * the manifest exists, and if the contents of the commit log are what we expected to have saved, - * then the transaction committed. If the manifest does not exist, then the transaction failed and - * is retryable. - */ - protected CommitLogManifest manifest; - /** * Temporary place to store the mutations belonging to the commit log manifest. * @@ -96,16 +68,6 @@ public class CommitLoggedWork implements Runnable { return result; } - CommitLogManifest getManifest() { - checkState(runCalled, "Cannot call getManifest() before run()"); - return manifest; - } - - ImmutableSet getMutations() { - checkState(runCalled, "Cannot call getMutations() before run()"); - return mutations; - } - @Override public void run() { // The previous time will generally be null, except when using transactNew. @@ -114,90 +76,9 @@ public class CommitLoggedWork implements Runnable { try { Ofy.TRANSACTION_INFO.set(createNewTransactionInfo()); result = work.get(); - saveCommitLog(Ofy.TRANSACTION_INFO.get()); } finally { Ofy.TRANSACTION_INFO.set(previous); } runCalled = true; } - - /** Records all mutations enrolled by this transaction to a {@link CommitLogManifest} entry. */ - private void saveCommitLog(TransactionInfo info) { - ImmutableSet> touchedKeys = info.getTouchedKeys(); - if (touchedKeys.isEmpty()) { - return; - } - CommitLogBucket bucket = loadBucket(info.bucketKey); - // Enforce unique monotonic property on CommitLogBucket.getLastWrittenTime(). - if (isBeforeOrAt(info.transactionTime, bucket.getLastWrittenTime())) { - throw new TimestampInversionException(info.transactionTime, bucket.getLastWrittenTime()); - } - // The keys read by Objectify during this transaction. This won't include the keys of - // asynchronous save and delete operations that haven't been reaped, but that's ok because we - // already logged all of those keys in {@link TransactionInfo} and now just need to figure out - // what was loaded. - ImmutableSet> keysInSessionCache = auditedOfy().getSessionKeys(); - Map, BackupGroupRoot> rootsForTouchedKeys = - getBackupGroupRoots(touchedKeys); - Map, BackupGroupRoot> rootsForUntouchedKeys = - getBackupGroupRoots(difference(keysInSessionCache, touchedKeys)); - // Check the update timestamps of all keys in the transaction, whether touched or merely read. - checkBackupGroupRootTimestamps( - info.transactionTime, - union(rootsForUntouchedKeys.entrySet(), rootsForTouchedKeys.entrySet())); - // Find any BGRs that have children which were touched but were not themselves touched. - Set untouchedRootsWithTouchedChildren = - ImmutableSet.copyOf(filterKeys(rootsForTouchedKeys, not(in(touchedKeys))).values()); - manifest = CommitLogManifest.create(info.bucketKey, info.transactionTime, info.getDeletes()); - final Key manifestKey = Key.create(manifest); - mutations = - union(info.getSaves(), untouchedRootsWithTouchedChildren) - .stream() - .map(entity -> (ImmutableObject) CommitLogMutation.create(manifestKey, entity)) - .collect(toImmutableSet()); - auditedOfy() - .saveIgnoringReadOnlyWithoutBackup() - .entities( - new ImmutableSet.Builder<>() - .add(manifest) - .add(bucket.asBuilder().setLastWrittenTime(info.transactionTime).build()) - .addAll(mutations) - .addAll(untouchedRootsWithTouchedChildren) - .build()) - .now(); - } - - /** Check that the timestamp of each BackupGroupRoot is in the past. */ - private void checkBackupGroupRootTimestamps( - DateTime transactionTime, Set, BackupGroupRoot>> bgrEntries) { - ImmutableMap.Builder, DateTime> builder = new ImmutableMap.Builder<>(); - for (Entry, BackupGroupRoot> entry : bgrEntries) { - DateTime updateTime = entry.getValue().getUpdateTimestamp().getTimestamp(); - if (!updateTime.isBefore(transactionTime)) { - builder.put(entry.getKey(), updateTime); - } - } - ImmutableMap, DateTime> problematicRoots = builder.build(); - if (!problematicRoots.isEmpty()) { - throw new TimestampInversionException(transactionTime, problematicRoots); - } - } - - /** Find the set of {@link BackupGroupRoot} ancestors of the given keys. */ - private Map, BackupGroupRoot> getBackupGroupRoots(Iterable> keys) { - Set> rootKeys = new HashSet<>(); - for (Key key : keys) { - while (key != null - && !BackupGroupRoot.class.isAssignableFrom( - auditedOfy().factory().getMetadata(key).getEntityClass())) { - key = key.getParent(); - } - if (key != null) { - @SuppressWarnings("unchecked") - Key rootKey = (Key) key; - rootKeys.add(rootKey); - } - } - return ImmutableMap.copyOf(auditedOfy().load().keys(rootKeys)); - } } diff --git a/core/src/main/java/google/registry/model/ofy/EntityWritePriorities.java b/core/src/main/java/google/registry/model/ofy/EntityWritePriorities.java deleted file mode 100644 index e3aec086f..000000000 --- a/core/src/main/java/google/registry/model/ofy/EntityWritePriorities.java +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2020 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -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. - * - *

When replaying Datastore commit logs to SQL (asynchronous replication), in order to avoid - * issues with foreign keys, we should replay entity writes so that foreign key references are - * always written after the entity that they reference. This class represents that DAG, where lower - * 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 { - - /** - * Mapping from class name to "priority". - * - *

Here, "priority" means the order in which the class should be inserted / updated in a - * transaction with respect to instances of other classes. By default, all classes have a priority - * number of zero. - * - *

For each transaction, classes should be written in priority order from the lowest number to - * the highest, in order to maintain foreign-key write consistency. For the same reason, deletes - * should happen after all writes. - */ - static final ImmutableMap CLASS_PRIORITIES = - ImmutableMap.of( - "AllocationToken", -9, - "ContactResource", 8, - "HostResource", 9, - "DomainBase", 10, - "HistoryEntry", 20); - - // The beginning of the range of priority numbers reserved for delete. This must be greater than - // any of the values in CLASS_PRIORITIES by enough overhead to accommodate any negative values in - // it. Note: by design, deletions will happen in the opposite order of insertions, which is - // necessary to make sure foreign keys aren't violated during deletion. - @VisibleForTesting static final int DELETE_RANGE = Integer.MAX_VALUE / 2; - - /** Returns the priority of the entity type in the map entry. */ - public static int getEntityPriority(String kind, boolean isDelete) { - int priority = CLASS_PRIORITIES.getOrDefault(kind, 0); - return isDelete ? DELETE_RANGE - priority : priority; - } -} 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 ca486e187..2958a3b60 100644 --- a/core/src/main/java/google/registry/model/ofy/ObjectifyService.java +++ b/core/src/main/java/google/registry/model/ofy/ObjectifyService.java @@ -38,7 +38,6 @@ 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; import google.registry.model.translators.CreateAutoTimestampTranslatorFactory; import google.registry.model.translators.CurrencyUnitTranslatorFactory; import google.registry.model.translators.DurationTranslatorFactory; @@ -124,7 +123,6 @@ public class ObjectifyService { ImmutableList.of( new BloomFilterOfStringTranslatorFactory(), new CidrAddressBlockTranslatorFactory(), - new CommitLogRevisionsTranslatorFactory(), new CreateAutoTimestampTranslatorFactory(), new CurrencyUnitTranslatorFactory(), new DurationTranslatorFactory(), 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 9f56f864d..0fa6063d3 100644 --- a/core/src/main/java/google/registry/model/ofy/Ofy.java +++ b/core/src/main/java/google/registry/model/ofy/Ofy.java @@ -19,11 +19,9 @@ import static com.google.common.base.Preconditions.checkState; import static com.google.common.collect.Maps.uniqueIndex; import static com.googlecode.objectify.ObjectifyService.ofy; import static google.registry.config.RegistryConfig.getBaseOfyRetryDuration; -import static google.registry.util.CollectionUtils.union; import com.google.appengine.api.datastore.DatastoreFailureException; import com.google.appengine.api.datastore.DatastoreTimeoutException; -import com.google.appengine.api.datastore.Entity; import com.google.appengine.api.taskqueue.TransientFailureException; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableMap; @@ -238,8 +236,7 @@ public class Ofy { /** Pause the current transaction (if any) and complete this one before returning to it. */ public R transactNew(Supplier work) { - // Wrap the Work in a CommitLoggedWork so that we can give transactions a frozen view of time - // and maintain commit logs for them. + // Wrap the Work in a CommitLoggedWork so that we can give transactions a frozen view of time. return transactCommitLoggedWork(new CommitLoggedWork<>(work, getClock())); } @@ -260,7 +257,7 @@ public class Ofy { /** * Transact with commit logs and retry with exponential backoff. * - *

This method is broken out from {@link #transactNew(Work)} for testing purposes. + *

This method is broken out from {@link #transactNew(Supplier)} for testing purposes. */ @VisibleForTesting R transactCommitLoggedWork(CommitLoggedWork work) { @@ -282,7 +279,7 @@ public class Ofy { // TimestampInversionExceptions are thrown by our code and are always retryable as well. // However, Datastore exceptions might get thrown even if the transaction succeeded. if ((e instanceof DatastoreTimeoutException || e instanceof DatastoreFailureException) - && checkIfAlreadySucceeded(work)) { + && work.hasRun()) { return work.getResult(); } if (attempt == NUM_RETRIES) { @@ -295,31 +292,6 @@ public class Ofy { } } - /** - * We can determine whether a transaction has succeded by trying to read the commit log back in - * its own retryable read-only transaction. - */ - private Boolean checkIfAlreadySucceeded(final CommitLoggedWork work) { - return work.hasRun() && transactNewReadOnly(() -> { - CommitLogManifest manifest = work.getManifest(); - if (manifest == null) { - // Work ran but no commit log was created. This might mean that the transaction did not - // write anything to Datastore. We can safely retry because it only reads. (Although the - // transaction might have written a task to a queue, we consider that safe to retry too - // since we generally assume that tasks might be doubly executed.) Alternatively it - // might mean that the transaction wrote to Datastore but turned off commit logs by - // exclusively using save/deleteWithoutBackups() rather than save/delete(). Although we - // have no hard proof that retrying is safe, we use these methods judiciously and it is - // reasonable to assume that if the transaction really did succeed that the retry will - // either be idempotent or will fail with a non-transient error. - return false; - } - return Objects.equals( - union(work.getMutations(), manifest), - ImmutableSet.copyOf(load().ancestor(manifest))); - }); - } - /** A read-only transaction is useful to get strongly consistent reads at a shared timestamp. */ R transactNewReadOnly(Supplier work) { ReadOnlyWork readOnlyWork = new ReadOnlyWork<>(work, getClock()); @@ -381,23 +353,6 @@ public class Ofy { return TRANSACTION_INFO.get().transactionTime; } - /** Returns key of {@link CommitLogManifest} that will be saved when the transaction ends. */ - public Key getCommitLogManifestKey() { - assertInTransaction(); - TransactionInfo info = TRANSACTION_INFO.get(); - return Key.create(info.bucketKey, CommitLogManifest.class, info.transactionTime.getMillis()); - } - - /** Convert an entity POJO to a datastore Entity. */ - public Entity toEntity(Object pojo) { - return ofy().save().toEntity(pojo); - } - - /** Convert a datastore entity to a POJO. */ - public Object toPojo(Entity entity) { - return ofy().load().fromEntity(entity); - } - /** * Returns the @Entity-annotated base class for an object that is either an {@code Key} or an * object of an entity class registered with Objectify. 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 5ae239d36..ba3a6b357 100644 --- a/core/src/main/java/google/registry/model/ofy/TransactionInfo.java +++ b/core/src/main/java/google/registry/model/ofy/TransactionInfo.java @@ -15,16 +15,10 @@ package google.registry.model.ofy; import static com.google.common.base.Preconditions.checkState; -import static com.google.common.base.Predicates.not; -import static com.google.common.collect.ImmutableSet.toImmutableSet; -import static com.google.common.collect.Maps.filterValues; import static com.google.common.collect.Maps.toMap; -import static google.registry.model.ofy.CommitLogBucket.getArbitraryBucketId; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; 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; @@ -45,9 +39,6 @@ public class TransactionInfo { /** Whether this is a read-only transaction. */ private boolean readOnly; - /** Bucket shard to under which commit log will be stored, chosen at random (in production). */ - final Key bucketKey = CommitLogBucket.getBucketKey(getArbitraryBucketId()); - /** * Accumulator of save/delete operations performed in transaction. * @@ -59,7 +50,6 @@ public class TransactionInfo { TransactionInfo(DateTime now) { this.transactionTime = now; - auditedOfy().load().key(bucketKey); // Asynchronously load value into session cache. } TransactionInfo setReadOnly() { @@ -80,26 +70,4 @@ public class TransactionInfo { assertNotReadOnly(); changesBuilder.putAll(toMap(keys, k -> Delete.SENTINEL)); } - - ImmutableSet> getTouchedKeys() { - return ImmutableSet.copyOf(changesBuilder.build().keySet()); - } - - ImmutableMap, Object> getChanges() { - return changesBuilder.build(); - } - - ImmutableSet> getDeletes() { - return ImmutableSet.copyOf( - filterValues(changesBuilder.build(), Delete.SENTINEL::equals).keySet()); - } - - ImmutableSet getSaves() { - return changesBuilder - .build() - .values() - .stream() - .filter(not(Delete.SENTINEL::equals)) - .collect(toImmutableSet()); - } } diff --git a/core/src/main/java/google/registry/model/translators/CommitLogRevisionsTranslatorFactory.java b/core/src/main/java/google/registry/model/translators/CommitLogRevisionsTranslatorFactory.java deleted file mode 100644 index 9696976af..000000000 --- a/core/src/main/java/google/registry/model/translators/CommitLogRevisionsTranslatorFactory.java +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.model.translators; - -import static com.google.common.base.MoreObjects.firstNonNull; -import static google.registry.config.RegistryConfig.getCommitLogDatastoreRetention; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.persistence.transaction.TransactionManagerFactory.ofyTm; -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 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. - *
- * - *

This allows you to have a field on your model object that tracks historical revisions of - * itself, which can be binary searched for point-in-time restoration. - * - *

Warning: Fields of this type must not be {@code null}, or else new entries can't be - * inserted. You must take care to initialize the field to empty. - * - * @see google.registry.model.EppResource - */ -@DeleteAfterMigration -public final class CommitLogRevisionsTranslatorFactory - extends ImmutableSortedMapTranslatorFactory> { - - /** - * Add a reference to the current commit log to the resource's revisions map. - * - *

This method also prunes the revisions map. It guarantees to keep enough data so that floor - * will work going back N days. It does this by making sure one entry exists before that duration, - * and pruning everything after it. The size of the map is guaranteed to never exceed N+2. - * - *

We store a maximum of one entry per day. It will be the last transaction that happened on - * that day. - * - *

In serialization mode, this method just returns "revisions" without modification. - * - * @see google.registry.config.RegistryConfig#getCommitLogDatastoreRetention() - */ - @Override - ImmutableSortedMap> transformBeforeSave( - ImmutableSortedMap> revisions) { - DateTime now = ofyTm().getTransactionTime(); - DateTime threshold = now.minus(getCommitLogDatastoreRetention()); - DateTime preThresholdTime = firstNonNull(revisions.floorKey(threshold), START_OF_TIME); - return new ImmutableSortedMap.Builder>(Ordering.natural()) - .putAll(revisions.subMap(preThresholdTime, true, now.withTimeAtStartOfDay(), false)) - .put(now, auditedOfy().getCommitLogManifestKey()) - .build(); - } -} diff --git a/core/src/main/java/google/registry/module/backend/BackendRequestComponent.java b/core/src/main/java/google/registry/module/backend/BackendRequestComponent.java index a34960903..d8f103f72 100644 --- a/core/src/main/java/google/registry/module/backend/BackendRequestComponent.java +++ b/core/src/main/java/google/registry/module/backend/BackendRequestComponent.java @@ -16,24 +16,18 @@ package google.registry.module.backend; import dagger.Module; import dagger.Subcomponent; -import google.registry.backup.BackupModule; -import google.registry.backup.CommitLogCheckpointAction; -import google.registry.backup.DeleteOldCommitLogsAction; -import google.registry.backup.ExportCommitLogDiffAction; import google.registry.batch.BatchModule; import google.registry.batch.DeleteExpiredDomainsAction; import google.registry.batch.DeleteLoadTestDataAction; import google.registry.batch.DeleteProberDataAction; import google.registry.batch.ExpandRecurringBillingEventsAction; import google.registry.batch.RelockDomainAction; -import google.registry.batch.ResaveAllEppResourcesAction; import google.registry.batch.ResaveAllEppResourcesPipelineAction; import google.registry.batch.ResaveEntityAction; import google.registry.batch.SendExpiringCertificateNotificationEmailAction; import google.registry.batch.WipeOutCloudSqlAction; import google.registry.batch.WipeOutContactHistoryPiiAction; import google.registry.batch.WipeoutDatastoreAction; -import google.registry.cron.CommitLogFanoutAction; import google.registry.cron.CronModule; import google.registry.cron.TldFanoutAction; import google.registry.dns.DnsModule; @@ -58,7 +52,6 @@ import google.registry.export.sheet.SheetModule; import google.registry.export.sheet.SyncRegistrarsSheetAction; import google.registry.flows.FlowComponent; import google.registry.flows.custom.CustomLogicModule; -import google.registry.mapreduce.MapreduceModule; import google.registry.monitoring.whitebox.WhiteboxModule; import google.registry.rdap.UpdateRegistrarRdapBaseUrlsAction; import google.registry.rde.BrdaCopyAction; @@ -93,7 +86,6 @@ import google.registry.tmch.TmchSmdrlAction; @RequestScope @Subcomponent( modules = { - BackupModule.class, BatchModule.class, BillingModule.class, CloudDnsWriterModule.class, @@ -105,7 +97,6 @@ import google.registry.tmch.TmchSmdrlAction; DnsUpdateWriterModule.class, ExportRequestModule.class, IcannReportingModule.class, - MapreduceModule.class, RdeModule.class, ReportingModule.class, RequestModule.class, @@ -125,24 +116,16 @@ interface BackendRequestComponent { CheckBackupAction checkBackupAction(); - CommitLogCheckpointAction commitLogCheckpointAction(); - - CommitLogFanoutAction commitLogFanoutAction(); - CopyDetailReportsAction copyDetailReportAction(); DeleteExpiredDomainsAction deleteExpiredDomainsAction(); DeleteLoadTestDataAction deleteLoadTestDataAction(); - DeleteOldCommitLogsAction deleteOldCommitLogsAction(); - DeleteProberDataAction deleteProberDataAction(); ExpandRecurringBillingEventsAction expandRecurringBillingEventsAction(); - ExportCommitLogDiffAction exportCommitLogDiffAction(); - ExportDomainListsAction exportDomainListsAction(); ExportPremiumTermsAction exportPremiumTermsAction(); @@ -181,8 +164,6 @@ interface BackendRequestComponent { RelockDomainAction relockDomainAction(); - ResaveAllEppResourcesAction resaveAllEppResourcesAction(); - ResaveAllEppResourcesPipelineAction resaveAllEppResourcesPipelineAction(); ResaveEntityAction resaveEntityAction(); diff --git a/core/src/main/java/google/registry/module/tools/ToolsRequestComponent.java b/core/src/main/java/google/registry/module/tools/ToolsRequestComponent.java index 26655ccfe..e57dfb1fd 100644 --- a/core/src/main/java/google/registry/module/tools/ToolsRequestComponent.java +++ b/core/src/main/java/google/registry/module/tools/ToolsRequestComponent.java @@ -16,23 +16,18 @@ package google.registry.module.tools; import dagger.Module; import dagger.Subcomponent; -import google.registry.backup.BackupModule; -import google.registry.backup.RestoreCommitLogsAction; import google.registry.dns.DnsModule; import google.registry.flows.EppToolAction; import google.registry.flows.EppToolAction.EppToolModule; import google.registry.flows.FlowComponent; import google.registry.loadtest.LoadTestAction; import google.registry.loadtest.LoadTestModule; -import google.registry.mapreduce.MapreduceModule; import google.registry.monitoring.whitebox.WhiteboxModule; import google.registry.request.RequestComponentBuilder; import google.registry.request.RequestModule; import google.registry.request.RequestScope; import google.registry.tools.server.CreateGroupsAction; import google.registry.tools.server.GenerateZoneFilesAction; -import google.registry.tools.server.KillAllCommitLogsAction; -import google.registry.tools.server.KillAllEppResourcesAction; import google.registry.tools.server.ListDomainsAction; import google.registry.tools.server.ListHostsAction; import google.registry.tools.server.ListPremiumListsAction; @@ -40,7 +35,6 @@ import google.registry.tools.server.ListRegistrarsAction; import google.registry.tools.server.ListReservedListsAction; import google.registry.tools.server.ListTldsAction; import google.registry.tools.server.RefreshDnsForAllDomainsAction; -import google.registry.tools.server.ResaveAllHistoryEntriesAction; import google.registry.tools.server.ToolsServerModule; import google.registry.tools.server.VerifyOteAction; @@ -48,11 +42,9 @@ import google.registry.tools.server.VerifyOteAction; @RequestScope @Subcomponent( modules = { - BackupModule.class, DnsModule.class, EppToolModule.class, LoadTestModule.class, - MapreduceModule.class, RequestModule.class, ToolsServerModule.class, WhiteboxModule.class, @@ -62,8 +54,6 @@ interface ToolsRequestComponent { EppToolAction eppToolAction(); FlowComponent.Builder flowComponentBuilder(); GenerateZoneFilesAction generateZoneFilesAction(); - KillAllCommitLogsAction killAllCommitLogsAction(); - KillAllEppResourcesAction killAllEppResourcesAction(); ListDomainsAction listDomainsAction(); ListHostsAction listHostsAction(); ListPremiumListsAction listPremiumListsAction(); @@ -72,8 +62,6 @@ interface ToolsRequestComponent { ListTldsAction listTldsAction(); LoadTestAction loadTestAction(); RefreshDnsForAllDomainsAction refreshDnsForAllDomainsAction(); - ResaveAllHistoryEntriesAction resaveAllHistoryEntriesAction(); - RestoreCommitLogsAction restoreCommitLogsAction(); VerifyOteAction verifyOteAction(); @Subcomponent.Builder diff --git a/core/src/main/java/google/registry/rde/BrdaCopyAction.java b/core/src/main/java/google/registry/rde/BrdaCopyAction.java index 5d2df6f9c..0e98a726a 100644 --- a/core/src/main/java/google/registry/rde/BrdaCopyAction.java +++ b/core/src/main/java/google/registry/rde/BrdaCopyAction.java @@ -49,9 +49,9 @@ import org.joda.time.DateTime; /** * Action that re-encrypts a BRDA escrow deposit and puts it into the upload bucket. * - *

This action is run by the mapreduce for each BRDA staging file it generates. The staging file - * is encrypted with our internal {@link Ghostryde} encryption. We then re-encrypt it as a RyDE - * file, which is what the third-party escrow provider understands. + *

This action is run for each BRDA staging file it generates. The staging file is encrypted with + * our internal {@link Ghostryde} encryption. We then re-encrypt it as a RyDE file, which is what + * the third-party escrow provider understands. * *

Then we put the RyDE file (along with our digital signature) into the configured BRDA bucket. * This bucket is special because a separate script will rsync it to the third party escrow provider diff --git a/core/src/main/java/google/registry/rde/PendingDepositChecker.java b/core/src/main/java/google/registry/rde/PendingDepositChecker.java index e1a5fc823..2df99f707 100644 --- a/core/src/main/java/google/registry/rde/PendingDepositChecker.java +++ b/core/src/main/java/google/registry/rde/PendingDepositChecker.java @@ -39,17 +39,17 @@ import org.joda.time.Duration; *

This class is called by {@link RdeStagingAction} at the beginning of its execution. Since it * stages everything in a single run, it needs to know what's awaiting deposit. * - *

We start off by getting the list of TLDs with escrow enabled. We then check {@code cursor} - * to see when it when it was due for a deposit. If that's in the past, then we know that we need - * to generate a deposit. If it's really far in the past, we might have to generate multiple - * deposits for that TLD, based on the configured interval. + *

We start off by getting the list of TLDs with escrow enabled. We then check {@code cursor} to + * see when it was due for a deposit. If that's in the past, then we know that we need to generate a + * deposit. If it's really far in the past, we might have to generate multiple deposits for that + * TLD, based on the configured interval. * - *

However we will only generate one interval forward per mapreduce, since the reduce - * phase rolls forward a TLD's cursor, and we can't have that happening in parallel. + *

However we will only generate one interval forward per run, since the reduce phase + * rolls forward a TLD's cursor, and we can't have that happening in parallel. * - *

If no deposits have been made so far, then {@code startingPoint} is used as the watermark - * of the next deposit. If that's a day in the future, then escrow won't start until that date. - * This first deposit time will be set to Datastore in a transaction. + *

If no deposits have been made so far, then {@code startingPoint} is used as the watermark of + * the next deposit. If that's a day in the future, then escrow won't start until that date. This + * first deposit time will be set to Datastore in a transaction. */ public final class PendingDepositChecker { diff --git a/core/src/main/java/google/registry/rde/RdeStagingAction.java b/core/src/main/java/google/registry/rde/RdeStagingAction.java index db965f58d..b776ec42e 100644 --- a/core/src/main/java/google/registry/rde/RdeStagingAction.java +++ b/core/src/main/java/google/registry/rde/RdeStagingAction.java @@ -16,7 +16,6 @@ package google.registry.rde; import static com.google.common.collect.ImmutableSetMultimap.toImmutableSetMultimap; import static google.registry.beam.BeamUtils.createJobName; -import static google.registry.persistence.transaction.TransactionManagerFactory.tm; import static google.registry.request.Action.Method.GET; import static google.registry.request.Action.Method.POST; import static google.registry.xml.ValidationMode.LENIENT; @@ -44,10 +43,6 @@ import google.registry.config.RegistryConfig.Config; import google.registry.config.RegistryEnvironment; import google.registry.gcs.GcsUtils; import google.registry.keyring.api.KeyModule.Key; -import google.registry.mapreduce.MapreduceRunner; -import google.registry.mapreduce.inputs.EppResourceInputs; -import google.registry.mapreduce.inputs.NullInput; -import google.registry.model.EppResource; import google.registry.model.common.Cursor; import google.registry.model.common.Cursor.CursorType; import google.registry.model.contact.ContactResource; @@ -72,29 +67,14 @@ import org.joda.time.DateTime; import org.joda.time.Duration; /** - * Action that kicks off either a MapReduce (for Datastore) or Dataflow (for Cloud SQL) job to stage - * escrow deposit XML files on GCS for RDE/BRDA for all TLDs. + * Action that kicks off a Dataflow job to stage escrow deposit XML files on GCS for RDE/BRDA for + * all TLDs. * *

Pending Deposits

* *

This task starts by asking {@link PendingDepositChecker} which deposits need to be generated. - * If there's nothing to deposit, we return 204 No Content; otherwise, we fire off a MapReduce job - * and redirect to its status GUI. The task can also be run in manual operation, as described below. - * - *

MapReduce

- * - *

The mapreduce job scans every {@link EppResource} in Datastore. It maps a point-in-time - * representation of each entity to the escrow XML files in which it should appear. - * - *

There is one map worker for each {@code EppResourceIndexBucket} entity group shard. There is - * one reduce worker for each deposit being generated. - * - *

{@link ContactResource} and {@link HostResource} are emitted on all TLDs, even when the - * domains on a TLD don't reference them. BRDA {@link RdeMode#THIN thin} deposits exclude contacts - * and hosts entirely. - * - *

{@link Registrar} entities, both active and inactive, are included in all deposits. They are - * not rewinded point-in-time. + * If there's nothing to deposit, we return 204 No Content; otherwise, we fire off a job and + * redirect to its status GUI. The task can also be run in manual operation, as described below. * *

Dataflow

* @@ -166,10 +146,6 @@ import org.joda.time.Duration; * *

Idempotency

* - *

We lock the reduce tasks for the MapReduce job. This is necessary because: a) App Engine tasks - * might get double executed; and b) Cloud Storage file handles get committed on close even if - * our code throws an exception. - * *

For the Dataflow job we do not employ a lock because it is difficult to span a lock across * three subsequent transforms (save to GCS, roll forward cursor, enqueue next action). Instead, we * get around the issue by saving the deposit to a unique folder named after the job name so there @@ -250,10 +226,8 @@ public final class RdeStagingAction implements Runnable { @Inject Clock clock; @Inject PendingDepositChecker pendingDepositChecker; - @Inject RdeStagingReducer.Factory reducerFactory; @Inject Response response; @Inject GcsUtils gcsUtils; - @Inject MapreduceRunner mrRunner; @Inject @Config("projectId") String projectId; @Inject @Config("defaultJobRegion") String jobRegion; @@ -270,10 +244,6 @@ public final class RdeStagingAction implements Runnable { @Inject @Config("rdeBucket") String rdeBucket; @Inject @Parameter(RdeModule.PARAM_MANUAL) boolean manual; - @Inject - @Parameter(RdeModule.PARAM_BEAM) - boolean beam; - @Inject @Parameter(RdeModule.PARAM_DIRECTORY) Optional directory; @Inject @Parameter(RdeModule.PARAM_MODE) ImmutableSet modeStrings; @Inject @Parameter(RequestParameters.PARAM_TLDS) ImmutableSet tlds; @@ -299,85 +269,67 @@ public final class RdeStagingAction implements Runnable { logger.atInfo().log("Pending deposit: %s", pending); } ValidationMode validationMode = lenient ? LENIENT : STRICT; - if (tm().isOfy() && !beam) { - RdeStagingMapper mapper = new RdeStagingMapper(validationMode, pendings); - RdeStagingReducer reducer = reducerFactory.create(validationMode, gcsUtils); - mrRunner - .setJobName("Stage escrow deposits for all TLDs") - .setModuleName("backend") - .setDefaultReduceShards(pendings.size()) - .runMapreduce( - mapper, - reducer, - ImmutableList.of( - // Add an extra shard that maps over a null resource. See the mapper code for why. - new NullInput<>(), EppResourceInputs.createEntityInput(EppResource.class))) - .sendLinkToMapreduceConsole(response); - } else { - ImmutableList.Builder jobNameBuilder = new ImmutableList.Builder<>(); - pendings.values().stream() - .collect(toImmutableSetMultimap(PendingDeposit::watermark, identity())) - .asMap() - .forEach( - (watermark, pendingDeposits) -> { - try { - LaunchFlexTemplateParameter parameter = - new LaunchFlexTemplateParameter() - .setJobName( - createJobName( - String.format( - "rde-%s", watermark.toString("yyyy-MM-dd't'HH-mm-ss'z'")), - clock)) - .setContainerSpecGcsPath( - String.format("%s/%s_metadata.json", stagingBucketUrl, PIPELINE_NAME)) - .setParameters( - new ImmutableMap.Builder() - .put( - "pendings", - RdePipeline.encodePendingDeposits( - ImmutableSet.copyOf(pendingDeposits))) - .put("validationMode", validationMode.name()) - .put("rdeStagingBucket", rdeBucket) - .put( - "stagingKey", - BaseEncoding.base64Url() - .omitPadding() - .encode(stagingKeyBytes)) - .put("registryEnvironment", RegistryEnvironment.get().name()) - .put("workerMachineType", machineType) - .put("numWorkers", String.valueOf(numWorkers)) - .put( - "jpaTransactionManagerType", - JpaTransactionManagerType.READ_ONLY_REPLICA.toString()) - // TODO (jianglai): Investigate turning off public IPs (for which - // there is a quota) in order to increase the total number of - // workers allowed (also under quota). - // See: - // https://cloud.google.com/dataflow/docs/guides/routes-firewall - .put("usePublicIps", "true") - .build()); - LaunchFlexTemplateResponse launchResponse = - dataflow - .projects() - .locations() - .flexTemplates() - .launch( - projectId, - jobRegion, - new LaunchFlexTemplateRequest().setLaunchParameter(parameter)) - .execute(); - logger.atInfo().log("Got response: %s", launchResponse.getJob().toPrettyString()); - jobNameBuilder.add(launchResponse.getJob().getId()); - } catch (IOException e) { - logger.atWarning().withCause(e).log("Pipeline Launch failed"); - response.setStatus(SC_INTERNAL_SERVER_ERROR); - response.setPayload(String.format("Pipeline launch failed: %s", e.getMessage())); - } - }); - response.setStatus(SC_OK); - response.setPayload( - String.format("Launched RDE pipeline: %s", Joiner.on(", ").join(jobNameBuilder.build()))); - } + ImmutableList.Builder jobNameBuilder = new ImmutableList.Builder<>(); + pendings.values().stream() + .collect(toImmutableSetMultimap(PendingDeposit::watermark, identity())) + .asMap() + .forEach( + (watermark, pendingDeposits) -> { + try { + LaunchFlexTemplateParameter parameter = + new LaunchFlexTemplateParameter() + .setJobName( + createJobName( + String.format( + "rde-%s", watermark.toString("yyyy-MM-dd't'HH-mm-ss'z'")), + clock)) + .setContainerSpecGcsPath( + String.format("%s/%s_metadata.json", stagingBucketUrl, PIPELINE_NAME)) + .setParameters( + new ImmutableMap.Builder() + .put( + "pendings", + RdePipeline.encodePendingDeposits( + ImmutableSet.copyOf(pendingDeposits))) + .put("validationMode", validationMode.name()) + .put("rdeStagingBucket", rdeBucket) + .put( + "stagingKey", + BaseEncoding.base64Url().omitPadding().encode(stagingKeyBytes)) + .put("registryEnvironment", RegistryEnvironment.get().name()) + .put("workerMachineType", machineType) + .put("numWorkers", String.valueOf(numWorkers)) + .put( + "jpaTransactionManagerType", + JpaTransactionManagerType.READ_ONLY_REPLICA.toString()) + // TODO (jianglai): Investigate turning off public IPs (for which + // there is a quota) in order to increase the total number of + // workers allowed (also under quota). + // See: + // https://cloud.google.com/dataflow/docs/guides/routes-firewall + .put("usePublicIps", "true") + .build()); + LaunchFlexTemplateResponse launchResponse = + dataflow + .projects() + .locations() + .flexTemplates() + .launch( + projectId, + jobRegion, + new LaunchFlexTemplateRequest().setLaunchParameter(parameter)) + .execute(); + logger.atInfo().log("Got response: %s", launchResponse.getJob().toPrettyString()); + jobNameBuilder.add(launchResponse.getJob().getId()); + } catch (IOException e) { + logger.atWarning().withCause(e).log("Pipeline Launch failed"); + response.setStatus(SC_INTERNAL_SERVER_ERROR); + response.setPayload(String.format("Pipeline launch failed: %s", e.getMessage())); + } + }); + response.setStatus(SC_OK); + response.setPayload( + String.format("Launched RDE pipeline: %s", Joiner.on(", ").join(jobNameBuilder.build()))); } private ImmutableSetMultimap getStandardPendingDeposits() { diff --git a/core/src/main/java/google/registry/rde/RdeStagingMapper.java b/core/src/main/java/google/registry/rde/RdeStagingMapper.java deleted file mode 100644 index d1885aa6d..000000000 --- a/core/src/main/java/google/registry/rde/RdeStagingMapper.java +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.rde; - -import static com.google.common.base.Strings.nullToEmpty; -import static com.google.common.collect.ImmutableSet.toImmutableSet; -import static google.registry.model.EppResourceUtils.loadAtPointInTimeAsync; -import static google.registry.persistence.transaction.TransactionManagerFactory.tm; - -import com.google.appengine.tools.mapreduce.Mapper; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.ImmutableSetMultimap; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; -import google.registry.model.EppResource; -import google.registry.model.annotations.DeleteAfterMigration; -import google.registry.model.contact.ContactResource; -import google.registry.model.domain.DomainBase; -import google.registry.model.host.HostResource; -import google.registry.model.rde.RdeMode; -import google.registry.model.registrar.Registrar; -import google.registry.xml.ValidationMode; -import java.util.Optional; -import java.util.function.Supplier; -import org.joda.time.DateTime; - -/** Mapper for {@link RdeStagingAction}. */ -@DeleteAfterMigration -public final class RdeStagingMapper extends Mapper { - - private static final long serialVersionUID = -1518185703789372524L; - - // Registrars to be excluded from data escrow. Not including the sandbox-only OTE type so that - // if sneaks into production we would get an extra signal. - private static final ImmutableSet IGNORED_REGISTRAR_TYPES = - Sets.immutableEnumSet(Registrar.Type.MONITORING, Registrar.Type.TEST); - - private final RdeMarshaller marshaller; - private final ImmutableSetMultimap pendings; - - RdeStagingMapper( - ValidationMode validationMode, ImmutableSetMultimap pendings) { - this.marshaller = new RdeMarshaller(validationMode); - this.pendings = pendings; - } - - @Override - public final void map(final EppResource resource) { - // The mapreduce has one special input that provides a null resource. This is used as a sentinel - // to indicate that we should emit the Registrar objects on this map shard, as these need to be - // added to every deposit. It is important that these be emitted as part of the mapreduce and - // not added in a separate stage, because the reducer only runs if there is at least one value - // emitted from the mapper. Without this, a cursor might never advance because no EppResource - // entity exists at the watermark. - if (resource == null) { - long registrarsEmitted = 0; - for (Registrar registrar : Registrar.loadAllCached()) { - if (IGNORED_REGISTRAR_TYPES.contains(registrar.getType())) { - continue; - } - DepositFragment fragment = marshaller.marshalRegistrar(registrar); - for (PendingDeposit pending : pendings.values()) { - emit(pending, fragment); - registrarsEmitted++; - } - } - getContext().incrementCounter("registrars emitted", registrarsEmitted); - return; - } - - // Skip polymorphic entities that share Datastore kind. - if (!(resource instanceof ContactResource - || resource instanceof DomainBase - || resource instanceof HostResource)) { - getContext().incrementCounter("polymorphic entities skipped"); - return; - } - - // Skip prober data. - if (nullToEmpty(resource.getCreationRegistrarId()).startsWith("prober-") - || nullToEmpty(resource.getPersistedCurrentSponsorRegistrarId()).startsWith("prober-") - || nullToEmpty(resource.getLastEppUpdateRegistrarId()).startsWith("prober-")) { - getContext().incrementCounter("prober data skipped"); - return; - } - - // The set of all TLDs to which this resource should be emitted. - ImmutableSet tlds; - if (resource instanceof DomainBase) { - String tld = ((DomainBase) resource).getTld(); - if (!pendings.containsKey(tld)) { - getContext().incrementCounter("DomainBase of an unneeded TLD skipped"); - return; - } - getContext().incrementCounter("DomainBase instances"); - tlds = ImmutableSet.of(tld); - } else { - getContext().incrementCounter("non-DomainBase instances"); - // Contacts and hosts get emitted on all TLDs, even if domains don't reference them. - tlds = pendings.keySet(); - } - - // Get the set of all point-in-time watermarks we need, to minimize rewinding. - ImmutableSet dates = - tlds.stream() - .map(pendings::get) - .flatMap(ImmutableSet::stream) - .map(PendingDeposit::watermark) - .collect(toImmutableSet()); - - // Launch asynchronous fetches of point-in-time representations of resource. - ImmutableMap> resourceAtTimes = - ImmutableMap.copyOf(Maps.asMap(dates, input -> loadAtPointInTimeAsync(resource, input))); - - // Convert resource to an XML fragment for each watermark/mode pair lazily and cache the result. - RdeFragmenter fragmenter = new RdeFragmenter(resourceAtTimes, marshaller); - - // Emit resource as an XML fragment for all TLDs and modes pending deposit. - long resourcesEmitted = 0; - for (String tld : tlds) { - for (PendingDeposit pending : pendings.get(tld)) { - // Hosts and contacts don't get included in BRDA deposits. - if (pending.mode() == RdeMode.THIN - && (resource instanceof ContactResource - || resource instanceof HostResource)) { - continue; - } - Optional fragment = - fragmenter.marshal(pending.watermark(), pending.mode()); - if (fragment.isPresent()) { - emit(pending, fragment.get()); - resourcesEmitted++; - } - } - } - getContext().incrementCounter("resources emitted", resourcesEmitted); - getContext().incrementCounter("fragmenter cache hits", fragmenter.cacheHits); - getContext().incrementCounter("fragmenter resources not found", fragmenter.resourcesNotFound); - getContext().incrementCounter("fragmenter resources found", fragmenter.resourcesFound); - - // Avoid running out of memory. - tm().clearSessionCache(); - } -} diff --git a/core/src/main/java/google/registry/rde/RdeStagingReducer.java b/core/src/main/java/google/registry/rde/RdeStagingReducer.java deleted file mode 100644 index 96573c704..000000000 --- a/core/src/main/java/google/registry/rde/RdeStagingReducer.java +++ /dev/null @@ -1,291 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.rde; - -import static com.google.common.base.Preconditions.checkState; -import static com.google.common.base.Verify.verify; -import static google.registry.model.common.Cursor.getCursorTimeOrStartOfTime; -import static google.registry.persistence.transaction.TransactionManagerFactory.tm; -import static google.registry.persistence.transaction.TransactionManagerUtil.transactIfJpaTm; -import static java.nio.charset.StandardCharsets.UTF_8; - -import com.google.appengine.tools.mapreduce.Reducer; -import com.google.appengine.tools.mapreduce.ReducerInput; -import com.google.cloud.storage.BlobId; -import com.google.common.collect.ImmutableMultimap; -import com.google.common.flogger.FluentLogger; -import google.registry.config.RegistryConfig.Config; -import google.registry.gcs.GcsUtils; -import google.registry.keyring.api.KeyModule; -import google.registry.keyring.api.PgpHelper; -import google.registry.model.annotations.DeleteAfterMigration; -import google.registry.model.common.Cursor; -import google.registry.model.rde.RdeMode; -import google.registry.model.rde.RdeNamingUtils; -import google.registry.model.rde.RdeRevision; -import google.registry.model.tld.Registry; -import google.registry.request.Action.Service; -import google.registry.request.RequestParameters; -import google.registry.request.lock.LockHandler; -import google.registry.tldconfig.idn.IdnTableEnum; -import google.registry.util.CloudTasksUtils; -import google.registry.xjc.rdeheader.XjcRdeHeader; -import google.registry.xjc.rdeheader.XjcRdeHeaderElement; -import google.registry.xml.ValidationMode; -import google.registry.xml.XmlException; -import java.io.IOException; -import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.io.Writer; -import java.security.Security; -import java.util.Iterator; -import java.util.Optional; -import java.util.concurrent.Callable; -import javax.inject.Inject; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.openpgp.PGPPublicKey; -import org.joda.time.DateTime; -import org.joda.time.Duration; - -/** Reducer for {@link RdeStagingAction}. */ -@DeleteAfterMigration -public final class RdeStagingReducer extends Reducer { - - private static final long serialVersionUID = 60326234579091203L; - - private static final FluentLogger logger = FluentLogger.forEnclosingClass(); - private static final Duration ENQUEUE_DELAY = Duration.standardMinutes(1); - - private final CloudTasksUtils cloudTasksUtils; - private final LockHandler lockHandler; - private final String bucket; - private final Duration lockTimeout; - private final byte[] stagingKeyBytes; - private final RdeMarshaller marshaller; - private final GcsUtils gcsUtils; - - RdeStagingReducer( - CloudTasksUtils cloudTasksUtils, - LockHandler lockHandler, - String bucket, - Duration lockTimeout, - byte[] stagingKeyBytes, - ValidationMode validationMode, - GcsUtils gcsUtils) { - this.cloudTasksUtils = cloudTasksUtils; - this.lockHandler = lockHandler; - this.bucket = bucket; - this.lockTimeout = lockTimeout; - this.stagingKeyBytes = stagingKeyBytes; - this.marshaller = new RdeMarshaller(validationMode); - this.gcsUtils = gcsUtils; - } - - @Override - public void reduce(final PendingDeposit key, final ReducerInput fragments) { - Callable lockRunner = - () -> { - reduceWithLock(key, fragments); - return null; - }; - String lockName = String.format("RdeStaging %s", key.mode()); - if (!lockHandler.executeWithLocks(lockRunner, key.tld(), lockTimeout, lockName)) { - logger.atWarning().log("Lock '%s' in use.", lockName); - } - } - - private void reduceWithLock(final PendingDeposit key, Iterator fragments) { - logger.atInfo().log("RdeStagingReducer %s.", key); - - // Normally this is done by BackendServlet but it's not present in MapReduceServlet. - Security.addProvider(new BouncyCastleProvider()); - - // Construct things that Dagger would inject if this wasn't serialized. - PGPPublicKey stagingKey = PgpHelper.loadPublicKeyBytes(stagingKeyBytes); - RdeCounter counter = new RdeCounter(); - - // Determine some basic things about the deposit. - final RdeMode mode = key.mode(); - final String tld = key.tld(); - final DateTime watermark = key.watermark(); - final int revision = - Optional.ofNullable(key.revision()) - .orElseGet(() -> RdeRevision.getNextRevision(tld, watermark, mode)); - String id = RdeUtil.timestampToId(watermark); - String prefix = RdeNamingUtils.makeRydeFilename(tld, watermark, mode, 1, revision); - if (key.manual()) { - checkState(key.directoryWithTrailingSlash() != null, "Manual subdirectory not specified"); - prefix = "manual/" + key.directoryWithTrailingSlash() + prefix; - } - BlobId xmlFilename = BlobId.of(bucket, prefix + ".xml.ghostryde"); - // This file will contain the byte length (ASCII) of the raw unencrypted XML. - // - // This is necessary because RdeUploadAction creates a tar file which requires that the length - // be outputted. We don't want to have to decrypt the entire ghostryde file to determine the - // length, so we just save it separately. - BlobId xmlLengthFilename = BlobId.of(bucket, prefix + ".xml.length"); - BlobId reportFilename = BlobId.of(bucket, prefix + "-report.xml.ghostryde"); - - // These variables will be populated as we write the deposit XML and used for other files. - boolean failed = false; - XjcRdeHeader header; - - // Write a gigantic XML file to GCS. We'll start by opening encrypted out/err file handles. - logger.atInfo().log("Writing files '%s' and '%s'.", xmlFilename, xmlLengthFilename); - try (OutputStream gcsOutput = gcsUtils.openOutputStream(xmlFilename); - OutputStream lengthOutput = gcsUtils.openOutputStream(xmlLengthFilename); - OutputStream ghostrydeEncoder = Ghostryde.encoder(gcsOutput, stagingKey, lengthOutput); - Writer output = new OutputStreamWriter(ghostrydeEncoder, UTF_8)) { - - // Output the top portion of the XML document. - output.write(marshaller.makeHeader(id, watermark, RdeResourceType.getUris(mode), revision)); - - // Output XML fragments emitted to us by RdeStagingMapper while counting them. - while (fragments.hasNext()) { - DepositFragment fragment = fragments.next(); - if (!fragment.xml().isEmpty()) { - output.write(fragment.xml()); - counter.increment(fragment.type()); - } - if (!fragment.error().isEmpty()) { - failed = true; - logger.atSevere().log("Fragment error: %s", fragment.error()); - } - } - - // Don't write the IDN elements for BRDA. - if (mode == RdeMode.FULL) { - for (IdnTableEnum idn : IdnTableEnum.values()) { - output.write(marshaller.marshalIdn(idn.getTable())); - counter.increment(RdeResourceType.IDN); - } - } - - // Output XML that says how many resources were emitted. - header = counter.makeHeader(tld, mode); - output.write(marshaller.marshalOrDie(new XjcRdeHeaderElement(header))); - - // Output the bottom of the XML document. - output.write(marshaller.makeFooter()); - - } catch (IOException e) { - throw new RuntimeException(e); - } - - // If an entity was broken, abort after writing as much logs/deposit data as possible. - verify(!failed, "RDE staging failed for TLD %s", tld); - - // Write a tiny XML file to GCS containing some information about the deposit. - // - // This will be sent to ICANN once we're done uploading the big XML to the escrow provider. - if (mode == RdeMode.FULL) { - logger.atInfo().log("Writing report file '%s'.", reportFilename); - try (OutputStream gcsOutput = gcsUtils.openOutputStream(reportFilename); - OutputStream ghostrydeEncoder = Ghostryde.encoder(gcsOutput, stagingKey)) { - counter.makeReport(id, watermark, header, revision).marshal(ghostrydeEncoder, UTF_8); - } catch (IOException | XmlException e) { - throw new RuntimeException(e); - } - } - - // Now that we're done, kick off RdeUploadAction and roll the cursor forward. - if (key.manual()) { - logger.atInfo().log("Manual operation; not advancing cursor or enqueuing upload task."); - return; - } - // We need to save the revision in a separate transaction because the subsequent upload/copy - // action reads the most current revision from the database. If it is done in the same - // transaction with the enqueueing, the action might start running before the transaction is - // committed, due to Cloud Tasks not being transaction aware, unlike Task Queue. The downside - // is that if for some reason the second transaction is rolled back, the revision update is not - // undone. But this should be fine since the next run will just increment the revision and start - // over. - tm().transact(() -> RdeRevision.saveRevision(tld, watermark, mode, revision)); - tm().transact( - () -> { - Registry registry = Registry.get(tld); - Optional cursor = - transactIfJpaTm( - () -> - tm().loadByKeyIfPresent( - Cursor.createVKey(key.cursor(), registry.getTldStr()))); - DateTime position = getCursorTimeOrStartOfTime(cursor); - checkState(key.interval() != null, "Interval must be present"); - DateTime newPosition = key.watermark().plus(key.interval()); - if (!position.isBefore(newPosition)) { - logger.atWarning().log("Cursor has already been rolled forward."); - return; - } - verify( - position.equals(key.watermark()), - "Partial ordering of RDE deposits broken: %s %s", - position, - key); - tm().put(Cursor.create(key.cursor(), newPosition, registry)); - logger.atInfo().log( - "Rolled forward %s on %s cursor to %s.", key.cursor(), tld, newPosition); - // Enqueueing a task is a side effect that is not undone if the transaction rolls - // back. So this may result in multiple copies of the same task being processed. - // This is fine because the RdeUploadAction is guarded by a lock and tracks progress - // by cursor. The BrdaCopyAction writes a file to GCS, which is an atomic action. It - // is also guarded by a cursor to not run before the cursor is updated. We also - // include a delay to minimize the chance that the enqueued job executes before the - // transaction is committed, which triggers a retry. - if (mode == RdeMode.FULL) { - cloudTasksUtils.enqueue( - "rde-upload", - cloudTasksUtils.createPostTaskWithDelay( - RdeUploadAction.PATH, - Service.BACKEND.toString(), - ImmutableMultimap.of(RequestParameters.PARAM_TLD, tld), - ENQUEUE_DELAY)); - } else { - cloudTasksUtils.enqueue( - "brda", - cloudTasksUtils.createPostTaskWithDelay( - BrdaCopyAction.PATH, - Service.BACKEND.toString(), - ImmutableMultimap.of( - RequestParameters.PARAM_TLD, - tld, - RdeModule.PARAM_WATERMARK, - watermark.toString()), - ENQUEUE_DELAY)); - } - }); - } - - /** Injectible factory for creating {@link RdeStagingReducer}. */ - static class Factory { - @Inject CloudTasksUtils cloudTasksUtils; - @Inject LockHandler lockHandler; - @Inject @Config("rdeBucket") String bucket; - @Inject @Config("rdeStagingLockTimeout") Duration lockTimeout; - @Inject @KeyModule.Key("rdeStagingEncryptionKey") byte[] stagingKeyBytes; - - @Inject Factory() {} - - RdeStagingReducer create(ValidationMode validationMode, GcsUtils gcsUtils) { - return new RdeStagingReducer( - cloudTasksUtils, - lockHandler, - bucket, - lockTimeout, - stagingKeyBytes, - validationMode, - gcsUtils); - } - } -} diff --git a/core/src/main/java/google/registry/tools/CompareDbBackups.java b/core/src/main/java/google/registry/tools/CompareDbBackups.java deleted file mode 100644 index 44e58bbdf..000000000 --- a/core/src/main/java/google/registry/tools/CompareDbBackups.java +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -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; - -/** - * Compares two Datastore backups in V3 format on local file system. This is for use in tests and - * experiments with small data sizes. - * - *

This utility only supports the current Datastore backup format (version 3). A backup is a - * 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-"; - - private static boolean isDatastoreV3File(File file) { - return file.isFile() && file.getName().startsWith(DS_V3_BACKUP_FILE_PREFIX); - } - - public static void main(String[] args) { - if (args.length != 2) { - System.err.println("Usage: compare_db_backups "); - return; - } - - ImmutableSet entities1 = - RecordAccumulator.readDirectory(new File(args[0]), CompareDbBackups::isDatastoreV3File) - .getEntityWrapperSet(); - ImmutableSet entities2 = - RecordAccumulator.readDirectory(new File(args[1]), CompareDbBackups::isDatastoreV3File) - .getEntityWrapperSet(); - - // Calculate the entities added and removed. - SetView added = Sets.difference(entities2, entities1); - SetView removed = Sets.difference(entities1, entities2); - - printHeader( - String.format("First backup: %d records", entities1.size()), - String.format("Second backup: %d records", entities2.size())); - - if (!removed.isEmpty()) { - printHeader(removed.size() + " records were removed:"); - for (EntityWrapper entity : removed) { - System.out.println(entity); - } - } - - if (!added.isEmpty()) { - printHeader(added.size() + " records were added:"); - for (EntityWrapper entity : added) { - System.out.println(entity); - } - } - - if (added.isEmpty() && removed.isEmpty()) { - System.out.printf("\nBoth sets have the same %d entities.\n", entities1.size()); - } - } - - /** Print out multi-line text in a pretty ASCII header frame. */ - private static void printHeader(String... headerLines) { - System.out.println("========================================================================"); - for (String line : headerLines) { - System.out.println("| " + line); - } - System.out.println("========================================================================"); - } -} diff --git a/core/src/main/java/google/registry/tools/GenerateZoneFilesCommand.java b/core/src/main/java/google/registry/tools/GenerateZoneFilesCommand.java index 0c2e3e62b..7d3707f3f 100644 --- a/core/src/main/java/google/registry/tools/GenerateZoneFilesCommand.java +++ b/core/src/main/java/google/registry/tools/GenerateZoneFilesCommand.java @@ -59,7 +59,6 @@ final class GenerateZoneFilesCommand implements CommandWithConnection, CommandWi "tlds", mainParameters, "exportTime", exportDate.toString()); Map response = connection.sendJson(GenerateZoneFilesAction.PATH, params); - System.out.println(response.get("mapreduceConsoleLink")); System.out.println("Output files:"); @SuppressWarnings("unchecked") List filenames = (List) response.get("filenames"); diff --git a/core/src/main/java/google/registry/tools/GetEppResourceCommand.java b/core/src/main/java/google/registry/tools/GetEppResourceCommand.java index 3a55badf5..0334a781a 100644 --- a/core/src/main/java/google/registry/tools/GetEppResourceCommand.java +++ b/core/src/main/java/google/registry/tools/GetEppResourceCommand.java @@ -45,8 +45,6 @@ abstract class GetEppResourceCommand implements CommandWithRemoteApi { /** * Prints a possibly-absent resource to stdout, using resourceType and uniqueId to construct a * nice error message if the resource was null (i.e. doesn't exist). - * - *

The websafe key is appended to the output for use in e.g. manual mapreduce calls. */ void printResource( String resourceType, String uniqueId, Optional resource) { diff --git a/core/src/main/java/google/registry/tools/GetResourceByKeyCommand.java b/core/src/main/java/google/registry/tools/GetResourceByKeyCommand.java deleted file mode 100644 index aa06cc23f..000000000 --- a/core/src/main/java/google/registry/tools/GetResourceByKeyCommand.java +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static com.google.common.base.Preconditions.checkNotNull; -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. */ -@DeleteAfterMigration -@Parameters(separators = " =", commandDescription = "Fetch a Datastore resource by websafe key") -final class GetResourceByKeyCommand implements CommandWithRemoteApi { - - @Parameter( - description = "Websafe key string(s)", - required = true) - private List mainParameters; - - @Parameter( - names = "--expand", - description = "Fully expand the requested resource. NOTE: Output may be lengthy.") - boolean expand; - - @Override - public void run() { - for (String keyString : mainParameters) { - System.out.println("\n"); - VKey resourceKey = - checkNotNull(VKey.create(keyString), "Could not parse key string: " + keyString); - EppResource resource = - checkNotNull( - auditedOfy().load().key(resourceKey.getOfyKey()).now(), - "Could not load resource for key: " + resourceKey); - System.out.println(expand ? resource.toHydratedString() : resource.toString()); - } - } -} diff --git a/core/src/main/java/google/registry/tools/RecordAccumulator.java b/core/src/main/java/google/registry/tools/RecordAccumulator.java deleted file mode 100644 index 4c2be48df..000000000 --- a/core/src/main/java/google/registry/tools/RecordAccumulator.java +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import com.google.appengine.api.datastore.EntityTranslator; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import com.google.storage.onestore.v3.OnestoreEntity.EntityProto; -import java.io.File; -import java.io.IOException; -import java.util.function.Predicate; - -/** Accumulates Entity records from level db files under a directory hierarchy. */ -class RecordAccumulator { - private final ImmutableList records; - - RecordAccumulator(ImmutableList records) { - this.records = records; - } - - /** Recursively reads all records in the directory. */ - public static RecordAccumulator readDirectory(File dir, Predicate fileMatcher) { - ImmutableList.Builder builder = new ImmutableList.Builder<>(); - for (File child : dir.listFiles()) { - if (child.isDirectory()) { - builder.addAll(readDirectory(child, fileMatcher).records); - } else if (fileMatcher.test(child)) { - try { - builder.addAll(LevelDbLogReader.from(child.getPath())); - } catch (IOException e) { - throw new RuntimeException("IOException reading from file: " + child, e); - } - } - } - - return new RecordAccumulator(builder.build()); - } - - /** Creates an {@link EntityWrapper} set from the current set of raw records. */ - ImmutableSet getEntityWrapperSet() { - ImmutableSet.Builder builder = new ImmutableSet.Builder<>(); - for (byte[] rawRecord : records) { - // Parse the entity proto and create an Entity object from it. - EntityProto proto = new EntityProto(); - proto.parseFrom(rawRecord); - EntityWrapper entity = new EntityWrapper(EntityTranslator.createFromPb(proto)); - - builder.add(entity); - } - - return builder.build(); - } -} diff --git a/core/src/main/java/google/registry/tools/RegistryTool.java b/core/src/main/java/google/registry/tools/RegistryTool.java index 2b865f191..637976279 100644 --- a/core/src/main/java/google/registry/tools/RegistryTool.java +++ b/core/src/main/java/google/registry/tools/RegistryTool.java @@ -74,7 +74,6 @@ public final class RegistryTool { .put("get_premium_list", GetPremiumListCommand.class) .put("get_registrar", GetRegistrarCommand.class) .put("get_reserved_list", GetReservedListCommand.class) - .put("get_resource_by_key", GetResourceByKeyCommand.class) .put("get_routing_map", GetRoutingMapCommand.class) .put("get_schema", GetSchemaCommand.class) .put("get_schema_tree", GetSchemaTreeCommand.class) @@ -99,7 +98,6 @@ public final class RegistryTool { .put("logout", LogoutCommand.class) .put("pending_escrow", PendingEscrowCommand.class) .put("registrar_contact", RegistrarContactCommand.class) - .put("remove_registry_one_key", RemoveRegistryOneKeyCommand.class) .put("renew_domain", RenewDomainCommand.class) .put("resave_entities", ResaveEntitiesCommand.class) .put("resave_environment_entities", ResaveEnvironmentEntitiesCommand.class) diff --git a/core/src/main/java/google/registry/tools/RemoveRegistryOneKeyCommand.java b/core/src/main/java/google/registry/tools/RemoveRegistryOneKeyCommand.java deleted file mode 100644 index cbdf04b53..000000000 --- a/core/src/main/java/google/registry/tools/RemoveRegistryOneKeyCommand.java +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2020 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import com.beust.jcommander.Parameters; -import com.googlecode.objectify.Key; -import google.registry.model.annotations.DeleteAfterMigration; -import google.registry.model.domain.DomainBase; -import google.registry.persistence.VKey; -import javax.annotation.Nullable; -import org.joda.time.DateTime; - -/** Command to remove the Registry 1.0 key in {@link DomainBase} entity. */ -@Parameters(separators = " =", commandDescription = "Remove .") -@DeleteAfterMigration -public class RemoveRegistryOneKeyCommand extends ReadEntityFromKeyPathCommand { - - @Override - void process(DomainBase entity) { - // Assert that the DomainBase entity must be deleted before 2017-08-01(most of the problematic - // entities were deleted before 2017, though there are still a few entities deleted in 2017-07). - // This is because we finished the Registry 2.0 migration in 2017 and should not generate any - // Registry 1.0 key after it. - if (!entity.getDeletionTime().isBefore(DateTime.parse("2017-08-01T00:00:00Z"))) { - throw new IllegalStateException( - String.format( - "Entity's deletion time %s is not before 2017-08-01T00:00:00Z", - entity.getDeletionTime())); - } - boolean hasChange = false; - DomainBase.Builder domainBuilder = entity.asBuilder(); - // We only found the registry 1.0 key existed in fields autorenewBillingEvent, - // autorenewPollMessage and deletePollMessage so we just need to check these fields for each - // entity. - if (isRegistryOneKey(entity.getAutorenewBillingEvent())) { - domainBuilder.setAutorenewBillingEvent(null); - hasChange = true; - } - if (isRegistryOneKey(entity.getAutorenewPollMessage())) { - domainBuilder.setAutorenewPollMessage(null); - hasChange = true; - } - if (isRegistryOneKey(entity.getDeletePollMessage())) { - domainBuilder.setDeletePollMessage(null); - hasChange = true; - } - if (hasChange) { - stageEntityChange(entity, domainBuilder.build()); - } - } - - private static boolean isRegistryOneKey(@Nullable VKey vKey) { - if (vKey == null || vKey.getOfyKey() == null || vKey.getOfyKey().getParent() == null) { - return false; - } - Key parentKey = vKey.getOfyKey().getParent(); - return parentKey.getKind().equals("EntityGroupRoot") && parentKey.getName().equals("per-tld"); - } -} diff --git a/core/src/main/java/google/registry/tools/server/GenerateZoneFilesAction.java b/core/src/main/java/google/registry/tools/server/GenerateZoneFilesAction.java index c1fcb3c8c..faf61684b 100644 --- a/core/src/main/java/google/registry/tools/server/GenerateZoneFilesAction.java +++ b/core/src/main/java/google/registry/tools/server/GenerateZoneFilesAction.java @@ -29,7 +29,6 @@ import com.google.common.collect.ImmutableSet; import com.google.common.flogger.FluentLogger; import google.registry.config.RegistryConfig.Config; import google.registry.gcs.GcsUtils; -import google.registry.mapreduce.MapreduceRunner; import google.registry.model.domain.DomainBase; import google.registry.model.domain.secdns.DelegationSignerData; import google.registry.model.host.HostResource; @@ -56,7 +55,7 @@ import org.joda.time.DateTime; import org.joda.time.Duration; /** - * MapReduce that requests generation of BIND zone files for a set of TLDs at a given time. + * Action that requests generation of BIND zone files for a set of TLDs at a given time. * *

Zone files for each requested TLD are written to GCS. TLDs without entries produce zone files * with only a header. The export time must be at least two minutes in the past and no more than 29 @@ -94,10 +93,13 @@ public class GenerateZoneFilesAction implements Runnable, JsonActionRunner.JsonA /** Format for A and AAAA records. */ private static final String A_FORMAT = "%s\t%d\tIN\t%s\t%s\n"; - @Inject MapreduceRunner mrRunner; @Inject JsonActionRunner jsonActionRunner; @Inject @Config("zoneFilesBucket") String bucket; - @Inject @Config("commitLogDatastoreRetention") Duration datastoreRetention; + + @Inject + @Config("databaseRetention") + Duration databaseRetention; + @Inject @Config("dnsDefaultATtl") Duration dnsDefaultATtl; @SuppressWarnings("DurationVariableWithUnits") // false-positive Error Prone check @Inject @Config("dnsDefaultNsTtl") Duration dnsDefaultNsTtl; @@ -124,10 +126,10 @@ public class GenerateZoneFilesAction implements Runnable, JsonActionRunner.JsonA if (exportTime.isAfter(now.minusMinutes(2))) { throw new BadRequestException("Invalid export time: must be > 2 minutes ago"); } - if (exportTime.isBefore(now.minus(datastoreRetention))) { - throw new BadRequestException(String.format( - "Invalid export time: must be < %d days ago", - datastoreRetention.getStandardDays())); + if (exportTime.isBefore(now.minus(databaseRetention))) { + throw new BadRequestException( + String.format( + "Invalid export time: must be < %d days ago", databaseRetention.getStandardDays())); } tlds.forEach(tld -> generateForTld(tld, exportTime)); ImmutableList filenames = diff --git a/core/src/main/java/google/registry/tools/server/KillAllCommitLogsAction.java b/core/src/main/java/google/registry/tools/server/KillAllCommitLogsAction.java deleted file mode 100644 index 9437a1bb5..000000000 --- a/core/src/main/java/google/registry/tools/server/KillAllCommitLogsAction.java +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools.server; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.collect.ImmutableList.toImmutableList; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.request.Action.Method.POST; - -import com.google.appengine.tools.mapreduce.Input; -import com.google.appengine.tools.mapreduce.Mapper; -import com.google.appengine.tools.mapreduce.inputs.InMemoryInput; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; -import com.google.common.collect.Streams; -import com.googlecode.objectify.Key; -import google.registry.config.RegistryEnvironment; -import google.registry.mapreduce.MapreduceRunner; -import google.registry.model.ofy.CommitLogBucket; -import google.registry.model.ofy.CommitLogCheckpointRoot; -import google.registry.request.Action; -import google.registry.request.Response; -import google.registry.request.auth.Auth; -import java.util.stream.Stream; -import javax.inject.Inject; - -/** - * Deletes all commit logs in Datastore. - * - *

Because there are no auth settings in the {@link Action} annotation, this command can only be - * run internally, or by pretending to be internal by setting the X-AppEngine-QueueName header, - * which only admin users can do. That makes this command hard to use, which is appropriate, given - * the drastic consequences of accidental execution. - */ -@Action( - service = Action.Service.TOOLS, - path = "/_dr/task/killAllCommitLogs", - method = POST, - auth = Auth.AUTH_INTERNAL_OR_ADMIN) -// No longer needed in SQL. Subject to future removal. -@Deprecated -public class KillAllCommitLogsAction implements Runnable { - - @Inject MapreduceRunner mrRunner; - @Inject Response response; - @Inject KillAllCommitLogsAction() {} - - @Override - public void run() { - checkArgument( - RegistryEnvironment.get() == RegistryEnvironment.CRASH - || RegistryEnvironment.get() == RegistryEnvironment.UNITTEST, - "DO NOT RUN ANYWHERE ELSE EXCEPT CRASH OR TESTS."); - // Create a in-memory input, assigning each bucket to its own shard for maximum parallelization, - // with one extra shard for the CommitLogCheckpointRoot. - Input> input = - new InMemoryInput<>( - Lists.partition( - Streams.concat( - Stream.of(CommitLogCheckpointRoot.getKey()), - CommitLogBucket.getAllBucketKeys().stream()) - .collect(toImmutableList()), - 1)); - mrRunner - .setJobName("Delete all commit logs") - .setModuleName("tools") - .runMapreduce( - new KillAllCommitLogsMapper(), new KillAllEntitiesReducer(), ImmutableList.of(input)) - .sendLinkToMapreduceConsole(response); - } - - /** - * Mapper to delete a {@link CommitLogBucket} or {@link CommitLogCheckpointRoot} and any commit - * logs or checkpoints that descend from it. - * - *

This will delete: - *

    - *
  • {@link CommitLogBucket} - *
  • {@code CommitLogCheckpoint} - *
  • {@link CommitLogCheckpointRoot} - *
  • {@code CommitLogManifest} - *
  • {@code CommitLogMutation} - *
- */ - static class KillAllCommitLogsMapper extends Mapper, Key, Key> { - - private static final long serialVersionUID = 1504266335352952033L; - - @Override - public void map(Key bucketOrRoot) { - for (Key key : auditedOfy().load().ancestor(bucketOrRoot).keys()) { - emit(bucketOrRoot, key); - getContext().incrementCounter("entities emitted"); - getContext().incrementCounter(String.format("%s emitted", key.getKind())); - } - } - } -} - diff --git a/core/src/main/java/google/registry/tools/server/KillAllEntitiesReducer.java b/core/src/main/java/google/registry/tools/server/KillAllEntitiesReducer.java deleted file mode 100644 index 566bd35ad..000000000 --- a/core/src/main/java/google/registry/tools/server/KillAllEntitiesReducer.java +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools.server; - -import static com.google.common.collect.Iterators.partition; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.persistence.transaction.TransactionManagerFactory.tm; - -import com.google.appengine.tools.mapreduce.Reducer; -import com.google.appengine.tools.mapreduce.ReducerInput; -import com.googlecode.objectify.Key; -import java.util.Iterator; -import java.util.List; - -/** Reducer that deletes a group of keys, identified by a shared ancestor key. */ -public class KillAllEntitiesReducer extends Reducer, Key, Void> { - - private static final long serialVersionUID = 7939357855356876000L; - - private static final int BATCH_SIZE = 100; - - @Override - public void reduce(Key ancestor, final ReducerInput> keysToDelete) { - Iterator>> batches = partition(keysToDelete, BATCH_SIZE); - while (batches.hasNext()) { - final List> batch = batches.next(); - // Use a transaction to get retrying for free. - tm().transact(() -> auditedOfy().deleteWithoutBackup().keys(batch)); - getContext().incrementCounter("entities deleted", batch.size()); - for (Key key : batch) { - getContext().incrementCounter(String.format("%s deleted", key.getKind())); - } - } - } -} diff --git a/core/src/main/java/google/registry/tools/server/KillAllEppResourcesAction.java b/core/src/main/java/google/registry/tools/server/KillAllEppResourcesAction.java deleted file mode 100644 index c5ae16010..000000000 --- a/core/src/main/java/google/registry/tools/server/KillAllEppResourcesAction.java +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools.server; - -import static com.google.common.base.Preconditions.checkArgument; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.request.Action.Method.POST; - -import com.google.appengine.tools.mapreduce.Mapper; -import com.google.common.collect.ImmutableList; -import com.googlecode.objectify.Key; -import google.registry.config.RegistryEnvironment; -import google.registry.mapreduce.MapreduceRunner; -import google.registry.mapreduce.inputs.EppResourceInputs; -import google.registry.model.EppResource; -import google.registry.model.index.EppResourceIndex; -import google.registry.model.index.ForeignKeyIndex; -import google.registry.request.Action; -import google.registry.request.Response; -import google.registry.request.auth.Auth; -import javax.inject.Inject; - -/** - * Deletes all {@link EppResource} objects in Datastore, including indices and descendants. - * - *

Because there are no auth settings in the {@link Action} annotation, this command can only be - * run internally, or by pretending to be internal by setting the X-AppEngine-QueueName header, - * which only admin users can do. That makes this command hard to use, which is appropriate, given - * the drastic consequences of accidental execution. - */ -@Action( - service = Action.Service.TOOLS, - path = "/_dr/task/killAllEppResources", - method = POST, - auth = Auth.AUTH_INTERNAL_OR_ADMIN) -public class KillAllEppResourcesAction implements Runnable { - - @Inject MapreduceRunner mrRunner; - @Inject Response response; - @Inject KillAllEppResourcesAction() {} - - @Override - public void run() { - checkArgument( - RegistryEnvironment.get() == RegistryEnvironment.CRASH - || RegistryEnvironment.get() == RegistryEnvironment.UNITTEST, - "DO NOT RUN ANYWHERE ELSE EXCEPT CRASH OR TESTS."); - mrRunner - .setJobName("Delete all EppResources, children, and indices") - .setModuleName("tools") - .runMapreduce( - new KillAllEppResourcesMapper(), - new KillAllEntitiesReducer(), - ImmutableList.of(EppResourceInputs.createIndexInput())) - .sendLinkToMapreduceConsole(response); - } - - static class KillAllEppResourcesMapper extends Mapper, Key> { - - private static final long serialVersionUID = 8205309000002507407L; - - /** - * Delete an {@link EppResourceIndex}, its referent, all descendants of each referent, and the - * {@link ForeignKeyIndex} of the referent, as appropriate. - * - *

This will delete: - *

    - *
  • All {@link ForeignKeyIndex} types - *
  • {@link EppResourceIndex} - *
  • All {@link EppResource} types - *
  • {@code HistoryEntry} - *
  • All {@code BillingEvent} types - *
  • All {@code PollMessage} types - *
- */ - @Override - public void map(final EppResourceIndex eri) { - Key eriKey = Key.create(eri); - emitAndIncrementCounter(eriKey, eriKey); - Key resourceKey = eri.getKey(); - for (Key key : auditedOfy().load().ancestor(resourceKey).keys()) { - emitAndIncrementCounter(resourceKey, key); - } - EppResource resource = auditedOfy().load().key(eri.getKey()).now(); - // TODO(b/28247733): What about FKI's for renamed hosts? - Key indexKey = ForeignKeyIndex.createKey(resource); - emitAndIncrementCounter(indexKey, indexKey); - } - - private void emitAndIncrementCounter(Key ancestor, Key child) { - emit(ancestor, child); - getContext().incrementCounter("entities emitted"); - getContext().incrementCounter(String.format("%s emitted", child.getKind())); - } - } -} diff --git a/core/src/main/java/google/registry/tools/server/RefreshDnsForAllDomainsAction.java b/core/src/main/java/google/registry/tools/server/RefreshDnsForAllDomainsAction.java index ef05a9610..6b7c20c75 100644 --- a/core/src/main/java/google/registry/tools/server/RefreshDnsForAllDomainsAction.java +++ b/core/src/main/java/google/registry/tools/server/RefreshDnsForAllDomainsAction.java @@ -15,35 +15,26 @@ package google.registry.tools.server; import static com.google.common.base.Preconditions.checkArgument; -import static google.registry.mapreduce.inputs.EppResourceInputs.createEntityInput; -import static google.registry.model.EppResourceUtils.isActive; import static google.registry.model.tld.Registries.assertTldsExist; import static google.registry.persistence.transaction.TransactionManagerFactory.jpaTm; import static google.registry.persistence.transaction.TransactionManagerFactory.tm; import static google.registry.request.RequestParameters.PARAM_TLDS; -import com.google.appengine.tools.mapreduce.Mapper; -import com.google.common.annotations.VisibleForTesting; -import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.flogger.FluentLogger; import google.registry.dns.DnsQueue; -import google.registry.mapreduce.MapreduceRunner; -import google.registry.model.domain.DomainBase; import google.registry.request.Action; import google.registry.request.Parameter; import google.registry.request.Response; import google.registry.request.auth.Auth; import google.registry.util.Clock; -import google.registry.util.NonFinalForTesting; import java.util.Random; import javax.inject.Inject; import org.apache.http.HttpStatus; -import org.joda.time.DateTime; import org.joda.time.Duration; /** - * A mapreduce that enqueues DNS publish tasks on all active domains on the specified TLD(s). + * A task that enqueues DNS publish tasks on all active domains on the specified TLD(s). * *

This refreshes DNS both for all domain names and all in-bailiwick hostnames, as DNS writers * are responsible for enqueuing refresh tasks for subordinate hosts. So this action thus refreshes @@ -66,7 +57,6 @@ public class RefreshDnsForAllDomainsAction implements Runnable { private static final FluentLogger logger = FluentLogger.forEnclosingClass(); - @Inject MapreduceRunner mrRunner; @Inject Response response; @Inject @@ -88,92 +78,28 @@ public class RefreshDnsForAllDomainsAction implements Runnable { public void run() { assertTldsExist(tlds); checkArgument(smearMinutes > 0, "Must specify a positive number of smear minutes"); - if (tm().isOfy()) { - mrRunner - .setJobName("Refresh DNS for all domains") - .setModuleName("tools") - .setDefaultMapShards(10) - .runMapOnly( - new RefreshDnsForAllDomainsActionMapper(tlds, smearMinutes, random, clock.nowUtc()), - ImmutableList.of(createEntityInput(DomainBase.class))) - .sendLinkToMapreduceConsole(response); - } else { - tm().transact( - () -> - jpaTm() - .query( - "SELECT fullyQualifiedDomainName FROM Domain " - + "WHERE tld IN (:tlds) " - + "AND deletionTime > :now", - String.class) - .setParameter("tlds", tlds) - .setParameter("now", clock.nowUtc()) - .getResultStream() - .forEach( - domainName -> { - try { - // Smear the task execution time over the next N minutes. - dnsQueue.addDomainRefreshTask( - domainName, - Duration.standardMinutes(random.nextInt(smearMinutes))); - } catch (Throwable t) { - logger.atSevere().withCause(t).log( - "Error while enqueuing DNS refresh for domain '%s'.", domainName); - response.setStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR); - } - })); - } - } - - /** Mapper to refresh DNS for all active domain resources. */ - public static class RefreshDnsForAllDomainsActionMapper - extends Mapper { - - private static final long serialVersionUID = -5103865047156795489L; - - @NonFinalForTesting private static DnsQueue dnsQueue = DnsQueue.create(); - - private final ImmutableSet tlds; - private final int smearMinutes; - private final Random random; - private final DateTime now; - - RefreshDnsForAllDomainsActionMapper( - ImmutableSet tlds, int smearMinutes, Random random, DateTime now) { - this.tlds = tlds; - this.smearMinutes = smearMinutes; - this.random = random; - this.now = now; - } - - @Override - public void map(final DomainBase domain) { - String domainName = domain.getDomainName(); - if (tlds.contains(domain.getTld())) { - if (isActive(domain, now)) { - try { - // Smear the task execution time over the next N minutes. - dnsQueue.addDomainRefreshTask( - domainName, Duration.standardMinutes(random.nextInt(smearMinutes))); - getContext().incrementCounter("active domains refreshed"); - } catch (Throwable t) { - logger.atSevere().withCause(t).log( - "Error while enqueuing DNS refresh for domain '%s'.", domainName); - getContext().incrementCounter("active domains errored"); - } - } else { - getContext().incrementCounter("inactive domains skipped"); - } - } else { - getContext().incrementCounter("domains on non-targeted TLDs skipped"); - } - } - - @VisibleForTesting - public static DnsQueue setDnsQueueForTest(DnsQueue testQueue) { - DnsQueue currentQueue = dnsQueue; - dnsQueue = testQueue; - return currentQueue; - } + tm().transact( + () -> + jpaTm() + .query( + "SELECT fullyQualifiedDomainName FROM Domain " + + "WHERE tld IN (:tlds) " + + "AND deletionTime > :now", + String.class) + .setParameter("tlds", tlds) + .setParameter("now", clock.nowUtc()) + .getResultStream() + .forEach( + domainName -> { + try { + // Smear the task execution time over the next N minutes. + dnsQueue.addDomainRefreshTask( + domainName, Duration.standardMinutes(random.nextInt(smearMinutes))); + } catch (Throwable t) { + logger.atSevere().withCause(t).log( + "Error while enqueuing DNS refresh for domain '%s'.", domainName); + response.setStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR); + } + })); } } diff --git a/core/src/main/java/google/registry/tools/server/ResaveAllHistoryEntriesAction.java b/core/src/main/java/google/registry/tools/server/ResaveAllHistoryEntriesAction.java deleted file mode 100644 index e87f318f3..000000000 --- a/core/src/main/java/google/registry/tools/server/ResaveAllHistoryEntriesAction.java +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools.server; - -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.persistence.transaction.TransactionManagerFactory.tm; - -import com.google.appengine.tools.mapreduce.Mapper; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import google.registry.mapreduce.MapreduceRunner; -import google.registry.mapreduce.inputs.EppResourceInputs; -import google.registry.model.EppResource; -import google.registry.model.reporting.HistoryEntry; -import google.registry.request.Action; -import google.registry.request.Response; -import google.registry.request.auth.Auth; -import javax.inject.Inject; - -/** - * A mapreduce that re-saves all {@link HistoryEntry} entities. - * - *

This is useful for completing data migrations on HistoryEntry fields. - * - *

Because there are no auth settings in the {@link Action} annotation, this command can only be - * run internally, or by pretending to be internal by setting the X-AppEngine-QueueName header, - * which only admin users can do. - */ -@Action( - service = Action.Service.TOOLS, - path = "/_dr/task/resaveAllHistoryEntries", - auth = Auth.AUTH_INTERNAL_OR_ADMIN) -// No longer needed in SQL. Subject to future removal. -@Deprecated -public class ResaveAllHistoryEntriesAction implements Runnable { - - @Inject MapreduceRunner mrRunner; - @Inject Response response; - @Inject ResaveAllHistoryEntriesAction() {} - - @Override - public void run() { - mrRunner - .setJobName("Re-save all HistoryEntry entities") - .setModuleName("tools") - .runMapOnly( - new ResaveAllHistoryEntriesActionMapper(), - ImmutableList.of( - EppResourceInputs.createChildEntityInput( - ImmutableSet.of(EppResource.class), ImmutableSet.of(HistoryEntry.class)))) - .sendLinkToMapreduceConsole(response); - } - - /** Mapper to re-save all HistoryEntry entities. */ - public static class ResaveAllHistoryEntriesActionMapper - extends Mapper { - - private static final long serialVersionUID = 123064872315192L; - - @Override - public final void map(final HistoryEntry historyEntry) { - tm().transact( - () -> - auditedOfy().save().entity(auditedOfy().load().entity(historyEntry).now()).now()); - getContext().incrementCounter( - String.format( - "HistoryEntries parented under %s re-saved", historyEntry.getParent().getKind())); - } - } -} - diff --git a/core/src/main/resources/google/registry/beam/spec11_pipeline_metadata.json b/core/src/main/resources/google/registry/beam/spec11_pipeline_metadata.json index 3ffcbeb6e..1e86a5c59 100644 --- a/core/src/main/resources/google/registry/beam/spec11_pipeline_metadata.json +++ b/core/src/main/resources/google/registry/beam/spec11_pipeline_metadata.json @@ -49,7 +49,7 @@ { "name": "safeBrowsingApiKey", "label": "API Key used to identify the project with Safe Browsing", - "helpText": "The earliest CommitLogs to load, in ISO8601 format.", + "helpText": "API key used to authenticate the project with the SafeBrowsing API.", "regexes": [ "^[0-9a-zA-Z_]+[\\n]?$" ] diff --git a/core/src/test/java/google/registry/backup/CommitLogCheckpointActionTest.java b/core/src/test/java/google/registry/backup/CommitLogCheckpointActionTest.java deleted file mode 100644 index 3f4567552..000000000 --- a/core/src/test/java/google/registry/backup/CommitLogCheckpointActionTest.java +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.backup; - -import static com.google.common.truth.Truth.assertThat; -import static google.registry.model.ofy.CommitLogCheckpointRoot.loadRoot; -import static google.registry.testing.DatabaseHelper.persistResource; -import static google.registry.util.DateTimeUtils.START_OF_TIME; -import static org.joda.time.DateTimeZone.UTC; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import com.google.common.collect.ImmutableMap; -import google.registry.model.ofy.CommitLogCheckpoint; -import google.registry.model.ofy.CommitLogCheckpointRoot; -import google.registry.testing.AppEngineExtension; -import google.registry.testing.CloudTasksHelper; -import google.registry.testing.CloudTasksHelper.TaskMatcher; -import google.registry.testing.FakeClock; -import google.registry.testing.TmOverrideExtension; -import org.joda.time.DateTime; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Unit tests for {@link CommitLogCheckpointAction}. */ -public class CommitLogCheckpointActionTest { - - private static final String QUEUE_NAME = "export-commits"; - - @RegisterExtension - @Order(Order.DEFAULT - 1) - TmOverrideExtension tmOverrideExtension = TmOverrideExtension.withOfy(); - - @RegisterExtension - public final AppEngineExtension appEngine = - AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); - - private CommitLogCheckpointStrategy strategy = mock(CommitLogCheckpointStrategy.class); - - private DateTime now = DateTime.now(UTC); - private CommitLogCheckpointAction task = new CommitLogCheckpointAction(); - private final CloudTasksHelper cloudTasksHelper = new CloudTasksHelper(new FakeClock(now)); - - @BeforeEach - void beforeEach() { - task.strategy = strategy; - task.cloudTasksUtils = cloudTasksHelper.getTestCloudTasksUtils(); - when(strategy.computeCheckpoint()) - .thenReturn( - CommitLogCheckpoint.create( - now, ImmutableMap.of(1, START_OF_TIME, 2, START_OF_TIME, 3, START_OF_TIME))); - } - - @Test - void testRun_noCheckpointEverWritten_writesCheckpointAndEnqueuesTask() { - task.run(); - cloudTasksHelper.assertTasksEnqueued( - QUEUE_NAME, - new TaskMatcher() - .url(ExportCommitLogDiffAction.PATH) - .param(ExportCommitLogDiffAction.LOWER_CHECKPOINT_TIME_PARAM, START_OF_TIME.toString()) - .param(ExportCommitLogDiffAction.UPPER_CHECKPOINT_TIME_PARAM, now.toString()) - .scheduleTime(now.plus(CommitLogCheckpointAction.ENQUEUE_DELAY_SECONDS))); - assertThat(loadRoot().getLastWrittenTime()).isEqualTo(now); - } - - @Test - void testRun_checkpointWrittenBeforeNow_writesCheckpointAndEnqueuesTask() { - DateTime oneMinuteAgo = now.minusMinutes(1); - persistResource(CommitLogCheckpointRoot.create(oneMinuteAgo)); - task.run(); - cloudTasksHelper.assertTasksEnqueued( - QUEUE_NAME, - new TaskMatcher() - .url(ExportCommitLogDiffAction.PATH) - .param(ExportCommitLogDiffAction.LOWER_CHECKPOINT_TIME_PARAM, oneMinuteAgo.toString()) - .param(ExportCommitLogDiffAction.UPPER_CHECKPOINT_TIME_PARAM, now.toString()) - .scheduleTime(now.plus(CommitLogCheckpointAction.ENQUEUE_DELAY_SECONDS))); - assertThat(loadRoot().getLastWrittenTime()).isEqualTo(now); - } - - @Test - void testRun_checkpointWrittenAfterNow_doesntOverwrite_orEnqueueTask() { - DateTime oneMinuteFromNow = now.plusMinutes(1); - persistResource(CommitLogCheckpointRoot.create(oneMinuteFromNow)); - task.run(); - cloudTasksHelper.assertNoTasksEnqueued(QUEUE_NAME); - assertThat(loadRoot().getLastWrittenTime()).isEqualTo(oneMinuteFromNow); - } -} diff --git a/core/src/test/java/google/registry/backup/CommitLogCheckpointStrategyTest.java b/core/src/test/java/google/registry/backup/CommitLogCheckpointStrategyTest.java deleted file mode 100644 index 9500f81f6..000000000 --- a/core/src/test/java/google/registry/backup/CommitLogCheckpointStrategyTest.java +++ /dev/null @@ -1,307 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.backup; - -import static com.google.common.truth.Truth.assertThat; -import static google.registry.model.common.Cursor.CursorType.RDE_REPORT; -import static google.registry.model.ofy.CommitLogBucket.getBucketKey; -import static google.registry.testing.DatabaseHelper.createTld; -import static google.registry.util.DateTimeUtils.END_OF_TIME; -import static google.registry.util.DateTimeUtils.START_OF_TIME; - -import com.google.common.base.Supplier; -import com.google.common.collect.ImmutableMap; -import google.registry.model.common.Cursor; -import google.registry.model.ofy.CommitLogBucket; -import google.registry.model.ofy.CommitLogCheckpoint; -import google.registry.model.ofy.DatastoreTransactionManager; -import google.registry.model.ofy.Ofy; -import google.registry.model.tld.Registry; -import google.registry.persistence.transaction.TransactionManager; -import google.registry.testing.AppEngineExtension; -import google.registry.testing.FakeClock; -import google.registry.testing.InjectExtension; -import org.joda.time.DateTime; -import org.joda.time.Duration; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Unit tests for {@link CommitLogCheckpointStrategy}. */ -public class CommitLogCheckpointStrategyTest { - - @RegisterExtension - public final AppEngineExtension appEngine = - AppEngineExtension.builder().withDatastoreAndCloudSql().build(); - - @RegisterExtension public final InjectExtension inject = new InjectExtension(); - - private final FakeClock clock = new FakeClock(DateTime.parse("2000-01-01TZ")); - private final Ofy ofy = new Ofy(clock); - private final TransactionManager tm = new DatastoreTransactionManager(ofy); - private final CommitLogCheckpointStrategy strategy = new CommitLogCheckpointStrategy(); - - /** - * Supplier to inject into CommitLogBucket for doling out predictable bucket IDs. - * - *

If not overridden, the supplier returns 1 so that other saves won't hit an NPE (since even - * if they use saveWithoutBackup() the transaction still selects a bucket key early). - */ - private final FakeSupplier fakeBucketIdSupplier = new FakeSupplier<>(1); - - /** Gross but necessary supplier that can be modified to return the desired value. */ - private static class FakeSupplier implements Supplier { - /** Default value to return if 'value' is not set. */ - final T defaultValue; - - /** Set this value field to make the supplier return this value. */ - T value = null; - - FakeSupplier(T defaultValue) { - this.defaultValue = defaultValue; - } - - @Override - public T get() { - return value == null ? defaultValue : value; - } - } - - @BeforeEach - void beforeEach() { - strategy.clock = clock; - strategy.ofy = ofy; - - // Need to inject clock into Ofy so that createTld() below will get the right time. - inject.setStaticField(Ofy.class, "clock", clock); - // Inject a fake bucket ID supplier so we can dole out specific bucket IDs to commit logs. - inject.setStaticField(CommitLogBucket.class, "bucketIdSupplier", fakeBucketIdSupplier); - - // Create some fake TLDs to parent RegistryCursor test objects under. - createTld("tld1"); - createTld("tld2"); - createTld("tld3"); - clock.advanceOneMilli(); - } - - @Test - void test_readBucketTimestamps_noCommitLogs() { - assertThat(strategy.readBucketTimestamps()) - .containsExactly(1, START_OF_TIME, 2, START_OF_TIME, 3, START_OF_TIME); - } - - @Test - void test_readBucketTimestamps_withSomeCommitLogs() { - DateTime startTime = clock.nowUtc(); - writeCommitLogToBucket(1); - clock.advanceOneMilli(); - writeCommitLogToBucket(2); - assertThat(strategy.readBucketTimestamps()) - .containsExactly(1, startTime, 2, startTime.plusMillis(1), 3, START_OF_TIME); - } - - @Test - void test_readBucketTimestamps_againAfterUpdate_reflectsUpdate() { - DateTime firstTime = clock.nowUtc(); - writeCommitLogToBucket(1); - writeCommitLogToBucket(2); - writeCommitLogToBucket(3); - assertThat(strategy.readBucketTimestamps().values()) - .containsExactly(firstTime, firstTime, firstTime); - clock.advanceOneMilli(); - writeCommitLogToBucket(1); - DateTime secondTime = clock.nowUtc(); - assertThat(strategy.readBucketTimestamps()) - .containsExactly(1, secondTime, 2, firstTime, 3, firstTime); - } - - @Test - void test_readNewCommitLogsAndFindThreshold_noCommitsAtAll_returnsEndOfTime() { - ImmutableMap bucketTimes = - ImmutableMap.of(1, START_OF_TIME, 2, START_OF_TIME, 3, START_OF_TIME); - assertThat(strategy.readNewCommitLogsAndFindThreshold(bucketTimes)).isEqualTo(END_OF_TIME); - } - - @Test - void test_readNewCommitLogsAndFindThreshold_noNewCommits_returnsEndOfTime() { - DateTime now = clock.nowUtc(); - writeCommitLogToBucket(1); - clock.advanceOneMilli(); - writeCommitLogToBucket(2); - clock.advanceOneMilli(); - writeCommitLogToBucket(3); - ImmutableMap bucketTimes = - ImmutableMap.of(1, now, 2, now.plusMillis(1), 3, now.plusMillis(2)); - assertThat(strategy.readNewCommitLogsAndFindThreshold(bucketTimes)).isEqualTo(END_OF_TIME); - } - - @Test - void test_readNewCommitLogsAndFindThreshold_tiedNewCommits_returnsCommitTimeMinusOne() { - DateTime now = clock.nowUtc(); - writeCommitLogToBucket(1); - writeCommitLogToBucket(2); - writeCommitLogToBucket(3); - assertThat(strategy.readNewCommitLogsAndFindThreshold( - ImmutableMap.of(1, START_OF_TIME, 2, START_OF_TIME, 3, START_OF_TIME))) - .isEqualTo(now.minusMillis(1)); - } - - @Test - void test_readNewCommitLogsAndFindThreshold_someNewCommits_returnsEarliestTimeMinusOne() { - DateTime now = clock.nowUtc(); - writeCommitLogToBucket(1); // 1A - writeCommitLogToBucket(2); // 2A - writeCommitLogToBucket(3); // 3A - clock.advanceBy(Duration.millis(5)); - writeCommitLogToBucket(1); // 1B - writeCommitLogToBucket(2); // 2B - writeCommitLogToBucket(3); // 3B - clock.advanceBy(Duration.millis(5)); - writeCommitLogToBucket(1); // 1C - writeCommitLogToBucket(2); // 2C - writeCommitLogToBucket(3); // 3C - // First pass times: 1 at T0, 2 at T+5, 3 at T+10. - // Commits 1A, 2B, 3C are the commits seen in the first pass. - // Commits 2A, 3A, 3B are all old prior commits that should be ignored. - // Commit 1B is the first new commit for bucket 1, at T+5. - // Commit 1C is the second new commit for bucket 1, at T+10, and should be ignored. - // Commit 2C is the first new commit for bucket 2, at T+10. - // Since 1B as a new commit is older than 1C, T+5 is the oldest new commit time. - // Therefore, expect T+4 as the threshold time. - assertThat(strategy.readNewCommitLogsAndFindThreshold( - ImmutableMap.of(1, now, 2, now.plusMillis(5), 3, now.plusMillis(10)))) - .isEqualTo(now.plusMillis(4)); - } - - @Test - void test_readNewCommitLogsAndFindThreshold_commitsAtBucketTimes() { - DateTime now = clock.nowUtc(); - ImmutableMap bucketTimes = - ImmutableMap.of(1, now.minusMillis(1), 2, now, 3, now.plusMillis(1)); - assertThat(strategy.readNewCommitLogsAndFindThreshold(bucketTimes)).isEqualTo(END_OF_TIME); - } - - @Test - void test_computeBucketCheckpointTimes_earlyThreshold_setsEverythingToThreshold() { - DateTime now = clock.nowUtc(); - ImmutableMap bucketTimes = - ImmutableMap.of(1, now.minusMillis(1), 2, now, 3, now.plusMillis(1)); - assertThat(strategy.computeBucketCheckpointTimes(bucketTimes, now.minusMillis(2)).values()) - .containsExactly(now.minusMillis(2), now.minusMillis(2), now.minusMillis(2)); - } - - @Test - void test_computeBucketCheckpointTimes_middleThreshold_clampsToThreshold() { - DateTime now = clock.nowUtc(); - ImmutableMap bucketTimes = - ImmutableMap.of(1, now.minusMillis(1), 2, now, 3, now.plusMillis(1)); - assertThat(strategy.computeBucketCheckpointTimes(bucketTimes, now)) - .containsExactly(1, now.minusMillis(1), 2, now, 3, now); - } - - @Test - void test_computeBucketCheckpointTimes_lateThreshold_leavesBucketTimesAsIs() { - DateTime now = clock.nowUtc(); - ImmutableMap bucketTimes = - ImmutableMap.of(1, now.minusMillis(1), 2, now, 3, now.plusMillis(1)); - assertThat(strategy.computeBucketCheckpointTimes(bucketTimes, now.plusMillis(2))) - .isEqualTo(bucketTimes); - } - - @Test - void test_computeCheckpoint_noCommitsAtAll_bucketCheckpointTimesAreStartOfTime() { - assertThat(strategy.computeCheckpoint()) - .isEqualTo(CommitLogCheckpoint.create( - clock.nowUtc(), - ImmutableMap.of(1, START_OF_TIME, 2, START_OF_TIME, 3, START_OF_TIME))); - } - - @Test - void test_computeCheckpoint_noNewCommitLogs_bucketCheckpointTimesAreBucketTimes() { - DateTime now = clock.nowUtc(); - writeCommitLogToBucket(1); - clock.advanceOneMilli(); - writeCommitLogToBucket(2); - clock.advanceOneMilli(); - writeCommitLogToBucket(3); - clock.advanceOneMilli(); - DateTime checkpointTime = clock.nowUtc(); - assertThat(strategy.computeCheckpoint()) - .isEqualTo(CommitLogCheckpoint.create( - checkpointTime, - ImmutableMap.of(1, now, 2, now.plusMillis(1), 3, now.plusMillis(2)))); - } - - @Test - void test_computeCheckpoint_someNewCommits_bucketCheckpointTimesAreClampedToThreshold() { - DateTime now = clock.nowUtc(); - writeCommitLogToBucket(1); // 1A - writeCommitLogToBucket(2); // 2A - writeCommitLogToBucket(3); // 3A - clock.advanceBy(Duration.millis(5)); - writeCommitLogToBucket(1); // 1B - writeCommitLogToBucket(2); // 2B - writeCommitLogToBucket(3); // 3B - clock.advanceBy(Duration.millis(5)); - writeCommitLogToBucket(1); // 1C - writeCommitLogToBucket(2); // 2C - writeCommitLogToBucket(3); // 3C - - // Set first pass times: 1 at T0, 2 at T+5, 3 at T+10. - saveBucketWithLastWrittenTime(1, now); - saveBucketWithLastWrittenTime(2, now.plusMillis(5)); - saveBucketWithLastWrittenTime(3, now.plusMillis(10)); - - // Commits 1A, 2B, 3C are the commits seen in the first pass. - // Commits 2A, 3A, 3B are all old prior commits that should be ignored. - // Commit 1B is the first new commit for bucket 1, at T+5. - // Commit 1C is the second new commit for bucket 1, at T+10, and should be ignored. - // Commit 2C is the first new commit for bucket 2, at T+10. - // Since 1B as a new commit is older than 1C, T+5 is the oldest new commit time. - // Therefore, expect T+4 as the threshold time. - DateTime threshold = now.plusMillis(4); - - // Advance clock before taking checkpoint. - clock.advanceBy(Duration.millis(10)); - DateTime checkpointTime = clock.nowUtc(); - - // Bucket checkpoint times should be clamped as expected. - assertThat(strategy.computeCheckpoint()) - .isEqualTo( - CommitLogCheckpoint.create( - checkpointTime, ImmutableMap.of(1, now, 2, threshold, 3, threshold))); - } - - private void writeCommitLogToBucket(final int bucketId) { - fakeBucketIdSupplier.value = bucketId; - tm.transact( - () -> - tm.put( - Cursor.create( - RDE_REPORT, tm.getTransactionTime(), Registry.get("tld" + bucketId)))); - fakeBucketIdSupplier.value = null; - } - - private void saveBucketWithLastWrittenTime(final int bucketId, final DateTime lastWrittenTime) { - tm.transact( - () -> - ofy.saveWithoutBackup() - .entity( - CommitLogBucket.loadBucket(getBucketKey(bucketId)) - .asBuilder() - .setLastWrittenTime(lastWrittenTime) - .build())); - } -} diff --git a/core/src/test/java/google/registry/backup/CommitLogExports.java b/core/src/test/java/google/registry/backup/CommitLogExports.java deleted file mode 100644 index a01496f30..000000000 --- a/core/src/test/java/google/registry/backup/CommitLogExports.java +++ /dev/null @@ -1,231 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.backup; - -import static com.google.common.base.MoreObjects.firstNonNull; -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkState; -import static com.google.common.collect.ImmutableList.toImmutableList; -import static com.google.common.collect.Iterables.concat; -import static com.google.common.collect.Lists.partition; -import static google.registry.backup.BackupUtils.serializeEntity; -import static google.registry.model.ofy.CommitLogBucket.getBucketKey; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.persistence.transaction.TransactionManagerFactory.tm; -import static google.registry.util.DateTimeUtils.START_OF_TIME; -import static google.registry.util.DateTimeUtils.isAtOrAfter; -import static java.util.Comparator.comparingLong; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Streams; -import com.googlecode.objectify.Key; -import google.registry.model.ImmutableObject; -import google.registry.model.ofy.CommitLogBucket; -import google.registry.model.ofy.CommitLogCheckpoint; -import google.registry.model.ofy.CommitLogCheckpointRoot; -import google.registry.model.ofy.CommitLogManifest; -import google.registry.model.ofy.CommitLogMutation; -import google.registry.util.Clock; -import java.io.BufferedOutputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import javax.annotation.Nullable; -import org.joda.time.DateTime; - -/** - * Helpers for exporting the diff between two commit log checkpoints to a local file. - * - *

In production, CommitLogs are saved periodically by cron jobs. During each job, the {@link - * CommitLogCheckpointAction} is invoked first to compute a {@link CommitLogCheckpoint} and persist - * it in Datastore. Then the {@link ExportCommitLogDiffAction} is invoked to export the diffs - * accumulated between the previous and current checkpoints to a file. - * - *

The {@link #computeCheckpoint(Clock)} method is copied with simplification from {@link - * CommitLogCheckpointAction}, and the {@link #saveCommitLogs(String, CommitLogCheckpoint, - * CommitLogCheckpoint)} method is copied with simplification from {@link - * ExportCommitLogDiffAction}. We opted for copying instead of refactoring to reduce risk to - * production code. - */ -public final class CommitLogExports { - - public static final String DIFF_FILE_PREFIX = "commit_diff_until_"; - - private static final int EXPORT_DIFF_BATCH_SIZE = 100; - - private CommitLogExports() {} - - /** - * Returns the next {@link CommitLogCheckpoint} for Commit logs. Please refer to the class javadoc - * for background. - */ - public static CommitLogCheckpoint computeCheckpoint(Clock clock) { - CommitLogCheckpointStrategy strategy = new CommitLogCheckpointStrategy(); - strategy.clock = clock; - strategy.ofy = auditedOfy(); - - CommitLogCheckpoint checkpoint = strategy.computeCheckpoint(); - tm().transact( - () -> { - DateTime lastWrittenTime = CommitLogCheckpointRoot.loadRoot().getLastWrittenTime(); - checkState( - checkpoint.getCheckpointTime().isAfter(lastWrittenTime), - "Newer checkpoint already written at time: %s", - lastWrittenTime); - auditedOfy() - .saveWithoutBackup() - .entities( - checkpoint, CommitLogCheckpointRoot.create(checkpoint.getCheckpointTime())); - }); - return checkpoint; - } - - /** - * Saves the incremental changes between {@code prevCheckpoint} and {@code checkpoint} and returns - * the {@link File}. Please refer to class javadoc for background. - */ - public static File saveCommitLogs( - String commitLogDir, - @Nullable CommitLogCheckpoint prevCheckpoint, - CommitLogCheckpoint checkpoint) { - checkArgument( - prevCheckpoint == null - || (isAtOrAfter(prevCheckpoint.getCheckpointTime(), START_OF_TIME) - && prevCheckpoint.getCheckpointTime().isBefore(checkpoint.getCheckpointTime())), - "Inversed checkpoint: prev is %s, current is %s.", - Optional.ofNullable(prevCheckpoint) - .map(CommitLogCheckpoint::getCheckpointTime) - .map(DateTime::toString) - .orElse("null"), - checkpoint.getCheckpointTime().toString()); - - // Load the keys of all the manifests to include in this diff. - List> sortedKeys = loadAllDiffKeys(prevCheckpoint, checkpoint); - // Open an output channel to GCS, wrapped in a stream for convenience. - File commitLogFile = - new File(commitLogDir + "/" + DIFF_FILE_PREFIX + checkpoint.getCheckpointTime()); - try (OutputStream commitLogStream = - new BufferedOutputStream(new FileOutputStream(commitLogFile))) { - // Export the upper checkpoint itself. - serializeEntity(checkpoint, commitLogStream); - // If there are no manifests to export, stop early, now that we've written out the file with - // the checkpoint itself (which is needed for restores, even if it's empty). - if (sortedKeys.isEmpty()) { - return commitLogFile; - } - // Export to GCS in chunks, one per fixed batch of commit logs. While processing one batch, - // asynchronously load the entities for the next one. - List>> keyChunks = partition(sortedKeys, EXPORT_DIFF_BATCH_SIZE); - // Objectify's map return type is asynchronous. Calling .values() will block until it loads. - Map nextChunkToExport = auditedOfy().load().keys(keyChunks.get(0)); - for (int i = 0; i < keyChunks.size(); i++) { - // Force the async load to finish. - Collection chunkValues = nextChunkToExport.values(); - // Since there is no hard bound on how much data this might be, take care not to let the - // Objectify session cache fill up and potentially run out of memory. This is the only safe - // point to do this since at this point there is no async load in progress. - auditedOfy().clearSessionCache(); - // Kick off the next async load, which can happen in parallel to the current GCS export. - if (i + 1 < keyChunks.size()) { - nextChunkToExport = auditedOfy().load().keys(keyChunks.get(i + 1)); - } - exportChunk(commitLogStream, chunkValues); - } - } catch (IOException e) { - throw new RuntimeException(e); - } - return commitLogFile; - } - - /** - * Loads all the diff keys, sorted in a transaction-consistent chronological order. - * - * @param lowerCheckpoint exclusive lower bound on keys in this diff, or null if no lower bound - * @param upperCheckpoint inclusive upper bound on keys in this diff - */ - private static ImmutableList> loadAllDiffKeys( - @Nullable final CommitLogCheckpoint lowerCheckpoint, - final CommitLogCheckpoint upperCheckpoint) { - // Fetch the keys (no data) between these checkpoints, and sort by timestamp. This ordering is - // transaction-consistent by virtue of our checkpoint strategy and our customized Ofy; see - // CommitLogCheckpointStrategy for the proof. We break ties by sorting on bucket ID to ensure - // a deterministic order. - return upperCheckpoint.getBucketTimestamps().keySet().stream() - .flatMap( - bucketNum -> - Streams.stream(loadDiffKeysFromBucket(lowerCheckpoint, upperCheckpoint, bucketNum))) - .sorted( - comparingLong(Key::getId) - .thenComparingLong(a -> a.getParent().getId())) - .collect(toImmutableList()); - } - - /** - * Loads the diff keys for one bucket. - * - * @param lowerCheckpoint exclusive lower bound on keys in this diff, or null if no lower bound - * @param upperCheckpoint inclusive upper bound on keys in this diff - * @param bucketNum the bucket to load diff keys from - */ - private static Iterable> loadDiffKeysFromBucket( - @Nullable CommitLogCheckpoint lowerCheckpoint, - CommitLogCheckpoint upperCheckpoint, - int bucketNum) { - // If no lower checkpoint exists, or if it exists but had no timestamp for this bucket number - // (because the bucket count was increased between these checkpoints), then use START_OF_TIME - // as the effective exclusive lower bound. - DateTime lowerCheckpointBucketTime = - firstNonNull( - (lowerCheckpoint == null) ? null : lowerCheckpoint.getBucketTimestamps().get(bucketNum), - START_OF_TIME); - // Since START_OF_TIME=0 is not a valid id in a key, add 1 to both bounds. Then instead of - // loading lowerBound < x <= upperBound, we can load lowerBound <= x < upperBound. - DateTime lowerBound = lowerCheckpointBucketTime.plusMillis(1); - DateTime upperBound = upperCheckpoint.getBucketTimestamps().get(bucketNum).plusMillis(1); - // If the lower and upper bounds are equal, there can't be any results, so skip the query. - if (lowerBound.equals(upperBound)) { - return ImmutableSet.of(); - } - Key bucketKey = getBucketKey(bucketNum); - return auditedOfy() - .load() - .type(CommitLogManifest.class) - .ancestor(bucketKey) - .filterKey(">=", CommitLogManifest.createKey(bucketKey, lowerBound)) - .filterKey("<", CommitLogManifest.createKey(bucketKey, upperBound)) - .keys(); - } - - /** Writes a chunks-worth of manifests and associated mutations to GCS. */ - private static void exportChunk(OutputStream gcsStream, Collection chunk) - throws IOException { - // Kickoff async loads for all the manifests in the chunk. - ImmutableList.Builder> entities = - new ImmutableList.Builder<>(); - for (CommitLogManifest manifest : chunk) { - entities.add(ImmutableList.of(manifest)); - entities.add(auditedOfy().load().type(CommitLogMutation.class).ancestor(manifest)); - } - for (ImmutableObject entity : concat(entities.build())) { - serializeEntity(entity, gcsStream); - } - } -} diff --git a/core/src/test/java/google/registry/backup/DeleteOldCommitLogsActionTest.java b/core/src/test/java/google/registry/backup/DeleteOldCommitLogsActionTest.java deleted file mode 100644 index 39d2fa94d..000000000 --- a/core/src/test/java/google/registry/backup/DeleteOldCommitLogsActionTest.java +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.backup; - -import static com.google.common.truth.Truth.assertThat; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; - -import com.google.common.collect.ImmutableList; -import google.registry.model.contact.ContactResource; -import google.registry.model.ofy.CommitLogManifest; -import google.registry.model.ofy.CommitLogMutation; -import google.registry.model.ofy.Ofy; -import google.registry.testing.DatabaseHelper; -import google.registry.testing.FakeClock; -import google.registry.testing.FakeResponse; -import google.registry.testing.InjectExtension; -import google.registry.testing.TmOverrideExtension; -import google.registry.testing.mapreduce.MapreduceTestCase; -import org.joda.time.DateTime; -import org.joda.time.Duration; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Unit tests for {@link DeleteOldCommitLogsAction}. */ -public class DeleteOldCommitLogsActionTest - extends MapreduceTestCase { - - @RegisterExtension - @Order(Order.DEFAULT - 1) - TmOverrideExtension tmOverrideExtension = TmOverrideExtension.withOfy(); - - private final FakeClock clock = new FakeClock(DateTime.parse("2000-01-01TZ")); - private final FakeResponse response = new FakeResponse(); - private ContactResource contact; - - @RegisterExtension public final InjectExtension inject = new InjectExtension(); - - @BeforeEach - void beforeEach() { - inject.setStaticField(Ofy.class, "clock", clock); - action = new DeleteOldCommitLogsAction(); - action.mrRunner = makeDefaultRunner(); - action.response = response; - action.clock = clock; - action.maxAge = Duration.standardDays(30); - - ContactResource contact = DatabaseHelper.persistActiveContact("TheRegistrar"); - clock.advanceBy(Duration.standardDays(1)); - DatabaseHelper.persistResourceWithCommitLog(contact); - - prepareData(); - } - - private void runMapreduce(Duration maxAge) throws Exception { - action.maxAge = maxAge; - action.run(); - executeTasksUntilEmpty("mapreduce"); - auditedOfy().clearSessionCache(); - } - - private void mutateContact(String email) { - auditedOfy().clearSessionCache(); - ContactResource contact = - auditedOfy() - .load() - .type(ContactResource.class) - .first() - .now() - .asBuilder() - .setEmailAddress(email) - .build(); - DatabaseHelper.persistResourceWithCommitLog(contact); - } - - private void prepareData() { - - for (int i = 0; i < 10; i++) { - clock.advanceBy(Duration.standardDays(7)); - String email = String.format("pumpkin_%d@cat.test", i); - mutateContact(email); - } - auditedOfy().clearSessionCache(); - - contact = auditedOfy().load().type(ContactResource.class).first().now(); - - // The following value might change if {@link CommitLogRevisionsTranslatorFactory} changes. - assertThat(contact.getRevisions()).hasSize(6); - - // Before deleting the unneeded manifests - we have 11 of them (one for the first - // creation, and 10 more for the mutateContacts) - assertThat(auditedOfy().load().type(CommitLogManifest.class).count()).isEqualTo(11); - // And each DatabaseHelper.persistResourceWithCommitLog creates 3 mutations - assertThat(auditedOfy().load().type(CommitLogMutation.class).count()).isEqualTo(33); - } - - private ImmutableList ofyLoadType(Class clazz) { - return ImmutableList.copyOf(auditedOfy().load().type(clazz).iterable()); - } - - /** Check that with very short maxAge, only the referenced elements remain. */ - @Test - void test_shortMaxAge() throws Exception { - runMapreduce(Duration.millis(1)); - - assertThat( - ImmutableList.copyOf( - auditedOfy().load().type(CommitLogManifest.class).keys().iterable())) - .containsExactlyElementsIn(contact.getRevisions().values()); - - // And each DatabaseHelper.persistResourceWithCommitLog creates 3 mutations - assertThat(ofyLoadType(CommitLogMutation.class)).hasSize(contact.getRevisions().size() * 3); - } - - /** Check that with very long maxAge, all the elements remain. */ - @Test - void test_longMaxAge() throws Exception { - - ImmutableList initialManifests = ofyLoadType(CommitLogManifest.class); - ImmutableList initialMutations = ofyLoadType(CommitLogMutation.class); - - runMapreduce(Duration.standardDays(1000)); - - assertThat(ofyLoadType(CommitLogManifest.class)).containsExactlyElementsIn(initialManifests); - assertThat(ofyLoadType(CommitLogMutation.class)).containsExactlyElementsIn(initialMutations); - } -} diff --git a/core/src/test/java/google/registry/backup/EntityImportsTest.java b/core/src/test/java/google/registry/backup/EntityImportsTest.java deleted file mode 100644 index e5e105a3a..000000000 --- a/core/src/test/java/google/registry/backup/EntityImportsTest.java +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2021 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.backup; - -import static com.google.common.truth.Truth.assertThat; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; - -import com.google.appengine.api.datastore.DatastoreService; -import com.google.appengine.api.datastore.DatastoreServiceFactory; -import com.google.appengine.api.datastore.Entity; -import com.google.appengine.api.datastore.EntityTranslator; -import com.google.common.collect.ImmutableList; -import com.google.common.io.Resources; -import com.google.storage.onestore.v3.OnestoreEntity.EntityProto; -import google.registry.model.ofy.CommitLogCheckpoint; -import google.registry.testing.AppEngineExtension; -import google.registry.testing.DatastoreEntityExtension; -import java.io.InputStream; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -public class EntityImportsTest { - - @RegisterExtension - @Order(value = 1) - final DatastoreEntityExtension datastoreEntityExtension = new DatastoreEntityExtension(); - - @RegisterExtension - final AppEngineExtension appEngine = - new AppEngineExtension.Builder().withDatastoreAndCloudSql().withoutCannedData().build(); - - private DatastoreService datastoreService; - - @BeforeEach - void beforeEach() { - datastoreService = DatastoreServiceFactory.getDatastoreService(); - } - - @Test - void importCommitLogs_keysFixed() throws Exception { - // Input resource is a standard commit log file whose entities has "AppId_1" as appId. The key - // fixes can be verified by checking that the appId of an imported entity's key has been updated - // to 'test' (which is set by AppEngineExtension) and/or that after persistence the imported - // entity can be loaded by Objectify. - try (InputStream commitLogInputStream = - Resources.getResource("google/registry/backup/commitlog.data").openStream()) { - ImmutableList entities = - loadEntityProtos(commitLogInputStream).stream() - .map(EntityImports::fixEntity) - .map(EntityTranslator::createFromPb) - .collect(ImmutableList.toImmutableList()); - // Verifies that the original appId has been overwritten. - assertThat(entities.get(0).getKey().getAppId()).isEqualTo("test"); - datastoreService.put(entities); - // Imported entity can be found by Ofy after appId conversion. - assertThat(auditedOfy().load().type(CommitLogCheckpoint.class).count()).isGreaterThan(0); - } - } - - private static ImmutableList loadEntityProtos(InputStream inputStream) { - ImmutableList.Builder protosBuilder = new ImmutableList.Builder<>(); - while (true) { - EntityProto proto = new EntityProto(); - boolean parsed = proto.parseDelimitedFrom(inputStream); - if (parsed && proto.isInitialized()) { - protosBuilder.add(proto); - } else { - break; - } - } - return protosBuilder.build(); - } -} diff --git a/core/src/test/java/google/registry/backup/ExportCommitLogDiffActionTest.java b/core/src/test/java/google/registry/backup/ExportCommitLogDiffActionTest.java deleted file mode 100644 index a91021d51..000000000 --- a/core/src/test/java/google/registry/backup/ExportCommitLogDiffActionTest.java +++ /dev/null @@ -1,464 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.backup; - -import static com.google.common.truth.Truth.assertThat; -import static com.google.common.truth.Truth.assertWithMessage; -import static google.registry.backup.BackupUtils.GcsMetadataKeys.LOWER_BOUND_CHECKPOINT; -import static google.registry.backup.BackupUtils.GcsMetadataKeys.NUM_TRANSACTIONS; -import static google.registry.backup.BackupUtils.GcsMetadataKeys.UPPER_BOUND_CHECKPOINT; -import static google.registry.backup.BackupUtils.deserializeEntities; -import static google.registry.testing.DatabaseHelper.persistResource; -import static google.registry.util.DateTimeUtils.START_OF_TIME; -import static org.joda.time.DateTimeZone.UTC; - -import com.google.cloud.storage.BlobId; -import com.google.cloud.storage.contrib.nio.testing.LocalStorageHelper; -import com.google.common.collect.ImmutableMap; -import com.googlecode.objectify.Key; -import google.registry.gcs.GcsUtils; -import google.registry.model.ImmutableObject; -import google.registry.model.ofy.CommitLogBucket; -import google.registry.model.ofy.CommitLogCheckpoint; -import google.registry.model.ofy.CommitLogManifest; -import google.registry.model.ofy.CommitLogMutation; -import google.registry.testing.AppEngineExtension; -import google.registry.testing.TestObject; -import google.registry.testing.TmOverrideExtension; -import java.util.List; -import org.joda.time.DateTime; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Unit tests for {@link ExportCommitLogDiffAction}. */ -public class ExportCommitLogDiffActionTest { - - @RegisterExtension - @Order(Order.DEFAULT - 1) - TmOverrideExtension tmOverrideExtension = TmOverrideExtension.withOfy(); - - @RegisterExtension - public final AppEngineExtension appEngine = - AppEngineExtension.builder() - .withDatastoreAndCloudSql() - .withOfyTestEntities(TestObject.class) - .build(); - - private final GcsUtils gcsUtils = new GcsUtils(LocalStorageHelper.getOptions()); - - private final DateTime now = DateTime.now(UTC); - private final DateTime oneMinuteAgo = now.minusMinutes(1); - - private final ExportCommitLogDiffAction task = new ExportCommitLogDiffAction(); - - @BeforeEach - void beforeEach() { - task.gcsUtils = gcsUtils; - task.gcsBucket = "gcs bucket"; - task.batchSize = 5; - } - - @Test - void testRun_noCommitHistory_onlyUpperCheckpointExported() throws Exception { - task.lowerCheckpointTime = oneMinuteAgo; - task.upperCheckpointTime = now; - - persistResource(CommitLogCheckpoint.create( - oneMinuteAgo, - ImmutableMap.of(1, oneMinuteAgo, 2, oneMinuteAgo, 3, oneMinuteAgo))); - CommitLogCheckpoint upperCheckpoint = persistResource(CommitLogCheckpoint.create( - now, - ImmutableMap.of(1, now, 2, now, 3, now))); - - // Don't persist any manifests or mutations. - - task.run(); - - BlobId expectedFilename = BlobId.of("gcs bucket", "commit_diff_until_" + now); - assertWithMessage("GCS file not found: " + expectedFilename) - .that(gcsUtils.existsAndNotEmpty(expectedFilename)) - .isTrue(); - assertThat(gcsUtils.getMetadata(expectedFilename)) - .containsExactly( - LOWER_BOUND_CHECKPOINT, - oneMinuteAgo.toString(), - UPPER_BOUND_CHECKPOINT, - now.toString(), - NUM_TRANSACTIONS, - "0"); - List exported = deserializeEntities(gcsUtils.readBytesFrom(expectedFilename)); - assertThat(exported).containsExactly(upperCheckpoint); - } - - @Test - void testRun_regularCommitHistory_exportsCorrectCheckpointDiff() throws Exception { - task.lowerCheckpointTime = oneMinuteAgo; - task.upperCheckpointTime = now; - - // Persist the lower and upper checkpoints, with 3 buckets each and staggered times. We respect - // the real invariant that the time for bucket n in the lower checkpoint is <= the time for - // that bucket in the upper. - persistResource(CommitLogCheckpoint.create( - oneMinuteAgo, - ImmutableMap.of( - 1, oneMinuteAgo, - 2, oneMinuteAgo.minusDays(1), - 3, oneMinuteAgo.minusDays(2)))); - CommitLogCheckpoint upperCheckpoint = persistResource(CommitLogCheckpoint.create( - now, - ImmutableMap.of( - 1, now, - 2, now.minusDays(1), - 3, oneMinuteAgo.minusDays(2)))); // Note that this matches the lower bound. - - // Persist some fake commit log manifests. - // These shouldn't be in the diff because the lower bound is exclusive. - persistManifestAndMutation(1, oneMinuteAgo); - persistManifestAndMutation(2, oneMinuteAgo.minusDays(1)); - persistManifestAndMutation(3, oneMinuteAgo.minusDays(2)); // Even though it's == upper bound. - // These shouldn't be in the diff because they are above the upper bound. - persistManifestAndMutation(1, now.plusMillis(1)); - persistManifestAndMutation(2, now.minusDays(1).plusMillis(1)); - persistManifestAndMutation(3, oneMinuteAgo.minusDays(2).plusMillis(1)); - // These should be in the diff because they are between the bounds. (Not possible for bucket 3.) - persistManifestAndMutation(1, now.minusMillis(1)); - persistManifestAndMutation(2, now.minusDays(1).minusMillis(1)); - // These should be in the diff because they are at the upper bound. (Not possible for bucket 3.) - persistManifestAndMutation(1, now); - persistManifestAndMutation(2, now.minusDays(1)); - - task.run(); - - BlobId expectedFilename = BlobId.of("gcs bucket", "commit_diff_until_" + now); - assertWithMessage("GCS file not found: " + expectedFilename) - .that(gcsUtils.existsAndNotEmpty(expectedFilename)) - .isTrue(); - assertThat(gcsUtils.getMetadata(expectedFilename)) - .containsExactly( - LOWER_BOUND_CHECKPOINT, - oneMinuteAgo.toString(), - UPPER_BOUND_CHECKPOINT, - now.toString(), - NUM_TRANSACTIONS, - "4"); - List exported = deserializeEntities(gcsUtils.readBytesFrom(expectedFilename)); - assertThat(exported.get(0)).isEqualTo(upperCheckpoint); - // We expect these manifests, in time order, with matching mutations. - CommitLogManifest manifest1 = createManifest(2, now.minusDays(1).minusMillis(1)); - CommitLogManifest manifest2 = createManifest(2, now.minusDays(1)); - CommitLogManifest manifest3 = createManifest(1, now.minusMillis(1)); - CommitLogManifest manifest4 = createManifest(1, now); - assertThat(exported).containsExactly( - upperCheckpoint, - manifest1, - createMutation(manifest1), - manifest2, - createMutation(manifest2), - manifest3, - createMutation(manifest3), - manifest4, - createMutation(manifest4)) - .inOrder(); - } - - @Test - void testRun_simultaneousTransactions_bothExported() throws Exception { - task.lowerCheckpointTime = oneMinuteAgo; - task.upperCheckpointTime = now; - - persistResource(CommitLogCheckpoint.create( - oneMinuteAgo, - ImmutableMap.of(1, START_OF_TIME, 2, START_OF_TIME, 3, START_OF_TIME))); - CommitLogCheckpoint upperCheckpoint = persistResource(CommitLogCheckpoint.create( - now, - ImmutableMap.of(1, now, 2, now, 3, now))); - - // Persist some fake commit log manifests that are at the same time but in different buckets. - persistManifestAndMutation(1, oneMinuteAgo); - persistManifestAndMutation(2, oneMinuteAgo); - persistManifestAndMutation(1, now); - persistManifestAndMutation(2, now); - - task.run(); - - BlobId expectedFilename = BlobId.of("gcs bucket", "commit_diff_until_" + now); - assertWithMessage("GCS file not found: " + expectedFilename) - .that(gcsUtils.existsAndNotEmpty(expectedFilename)) - .isTrue(); - assertThat(gcsUtils.getMetadata(expectedFilename)) - .containsExactly( - LOWER_BOUND_CHECKPOINT, - oneMinuteAgo.toString(), - UPPER_BOUND_CHECKPOINT, - now.toString(), - NUM_TRANSACTIONS, - "4"); - List exported = deserializeEntities(gcsUtils.readBytesFrom(expectedFilename)); - assertThat(exported.get(0)).isEqualTo(upperCheckpoint); - // We expect these manifests, in the order below, with matching mutations. - CommitLogManifest manifest1 = createManifest(1, oneMinuteAgo); - CommitLogManifest manifest2 = createManifest(2, oneMinuteAgo); - CommitLogManifest manifest3 = createManifest(1, now); - CommitLogManifest manifest4 = createManifest(2, now); - assertThat(exported).containsExactly( - upperCheckpoint, - manifest1, - createMutation(manifest1), - manifest2, - createMutation(manifest2), - manifest3, - createMutation(manifest3), - manifest4, - createMutation(manifest4)) - .inOrder(); - } - - @Test - void testRun_exportsAcrossMultipleBatches() throws Exception { - task.batchSize = 2; - task.lowerCheckpointTime = oneMinuteAgo; - task.upperCheckpointTime = now; - - persistResource(CommitLogCheckpoint.create( - oneMinuteAgo, - ImmutableMap.of(1, START_OF_TIME, 2, START_OF_TIME, 3, START_OF_TIME))); - CommitLogCheckpoint upperCheckpoint = persistResource(CommitLogCheckpoint.create( - now, - ImmutableMap.of(1, now, 2, now, 3, now))); - - // Persist some fake commit log manifests. - persistManifestAndMutation(1, oneMinuteAgo); - persistManifestAndMutation(2, oneMinuteAgo); - persistManifestAndMutation(3, oneMinuteAgo); - persistManifestAndMutation(1, now); - persistManifestAndMutation(2, now); - persistManifestAndMutation(3, now); - - task.run(); - - BlobId expectedFilename = BlobId.of("gcs bucket", "commit_diff_until_" + now); - assertWithMessage("GCS file not found: " + expectedFilename) - .that(gcsUtils.existsAndNotEmpty(expectedFilename)) - .isTrue(); - assertThat(gcsUtils.getMetadata(expectedFilename)) - .containsExactly( - LOWER_BOUND_CHECKPOINT, - oneMinuteAgo.toString(), - UPPER_BOUND_CHECKPOINT, - now.toString(), - NUM_TRANSACTIONS, - "6"); - List exported = deserializeEntities(gcsUtils.readBytesFrom(expectedFilename)); - assertThat(exported.get(0)).isEqualTo(upperCheckpoint); - // We expect these manifests, in the order below, with matching mutations. - CommitLogManifest manifest1 = createManifest(1, oneMinuteAgo); - CommitLogManifest manifest2 = createManifest(2, oneMinuteAgo); - CommitLogManifest manifest3 = createManifest(3, oneMinuteAgo); - CommitLogManifest manifest4 = createManifest(1, now); - CommitLogManifest manifest5 = createManifest(2, now); - CommitLogManifest manifest6 = createManifest(3, now); - assertThat(exported).containsExactly( - upperCheckpoint, - manifest1, - createMutation(manifest1), - manifest2, - createMutation(manifest2), - manifest3, - createMutation(manifest3), - manifest4, - createMutation(manifest4), - manifest5, - createMutation(manifest5), - manifest6, - createMutation(manifest6)) - .inOrder(); - } - - @Test - void testRun_checkpointDiffWithNeverTouchedBuckets_exportsCorrectly() throws Exception { - task.lowerCheckpointTime = oneMinuteAgo; - task.upperCheckpointTime = now; - - persistResource(CommitLogCheckpoint.create( - oneMinuteAgo, - ImmutableMap.of(1, START_OF_TIME, 2, START_OF_TIME, 3, START_OF_TIME))); - CommitLogCheckpoint upperCheckpoint = persistResource(CommitLogCheckpoint.create( - now, - ImmutableMap.of(1, START_OF_TIME, 2, START_OF_TIME, 3, START_OF_TIME))); - - // Don't persist any commit log manifests; we're just checking that the task runs correctly - // even if the upper timestamp contains START_OF_TIME values. - - task.run(); - - BlobId expectedFilename = BlobId.of("gcs bucket", "commit_diff_until_" + now); - assertWithMessage("GCS file not found: " + expectedFilename) - .that(gcsUtils.existsAndNotEmpty(expectedFilename)) - .isTrue(); - assertThat(gcsUtils.getMetadata(expectedFilename)) - .containsExactly( - LOWER_BOUND_CHECKPOINT, - oneMinuteAgo.toString(), - UPPER_BOUND_CHECKPOINT, - now.toString(), - NUM_TRANSACTIONS, - "0"); - List exported = deserializeEntities(gcsUtils.readBytesFrom(expectedFilename)); - // We expect no manifests or mutations, only the upper checkpoint. - assertThat(exported).containsExactly(upperCheckpoint); - } - - @Test - void testRun_checkpointDiffWithNonExistentBucketTimestamps_exportsCorrectly() throws Exception { - // Non-existent bucket timestamps can exist when the commit log bucket count was increased - // recently. - - task.lowerCheckpointTime = oneMinuteAgo; - task.upperCheckpointTime = now; - - // No lower checkpoint times are persisted for buckets 2 and 3 (simulating a recent increase in - // the number of commit log buckets from 1 to 3), so all mutations on buckets 2 and 3, even - // those older than the lower checkpoint, will be exported. - persistResource( - CommitLogCheckpoint.createForTest(oneMinuteAgo, ImmutableMap.of(1, oneMinuteAgo))); - CommitLogCheckpoint upperCheckpoint = - persistResource( - CommitLogCheckpoint.create( - now, - ImmutableMap.of( - 1, now, - 2, now.minusDays(1), - 3, oneMinuteAgo.minusDays(2)))); - - // These shouldn't be in the diff because the lower bound is exclusive. - persistManifestAndMutation(1, oneMinuteAgo); - // These shouldn't be in the diff because they are above the upper bound. - persistManifestAndMutation(1, now.plusMillis(1)); - persistManifestAndMutation(2, now.minusDays(1).plusMillis(1)); - persistManifestAndMutation(3, oneMinuteAgo.minusDays(2).plusMillis(1)); - // These should be in the diff because they happened after START_OF_TIME on buckets with - // non-existent timestamps. - persistManifestAndMutation(2, oneMinuteAgo.minusDays(1)); - persistManifestAndMutation(3, oneMinuteAgo.minusDays(2)); - // These should be in the diff because they are between the bounds. - persistManifestAndMutation(1, now.minusMillis(1)); - persistManifestAndMutation(2, now.minusDays(1).minusMillis(1)); - // These should be in the diff because they are at the upper bound. - persistManifestAndMutation(1, now); - persistManifestAndMutation(2, now.minusDays(1)); - - task.run(); - - BlobId expectedFilename = BlobId.of("gcs bucket", "commit_diff_until_" + now); - assertWithMessage("GCS file not found: " + expectedFilename) - .that(gcsUtils.existsAndNotEmpty(expectedFilename)) - .isTrue(); - assertThat(gcsUtils.getMetadata(expectedFilename)) - .containsExactly( - LOWER_BOUND_CHECKPOINT, - oneMinuteAgo.toString(), - UPPER_BOUND_CHECKPOINT, - now.toString(), - NUM_TRANSACTIONS, - "6"); - List exported = deserializeEntities(gcsUtils.readBytesFrom(expectedFilename)); - assertThat(exported.get(0)).isEqualTo(upperCheckpoint); - // We expect these manifests, in time order, with matching mutations. - CommitLogManifest manifest1 = createManifest(3, oneMinuteAgo.minusDays(2)); - CommitLogManifest manifest2 = createManifest(2, oneMinuteAgo.minusDays(1)); - CommitLogManifest manifest3 = createManifest(2, now.minusDays(1).minusMillis(1)); - CommitLogManifest manifest4 = createManifest(2, now.minusDays(1)); - CommitLogManifest manifest5 = createManifest(1, now.minusMillis(1)); - CommitLogManifest manifest6 = createManifest(1, now); - assertThat(exported) - .containsExactly( - upperCheckpoint, - manifest1, - createMutation(manifest1), - manifest2, - createMutation(manifest2), - manifest3, - createMutation(manifest3), - manifest4, - createMutation(manifest4), - manifest5, - createMutation(manifest5), - manifest6, - createMutation(manifest6)) - .inOrder(); - } - - @Test - void testRun_exportingFromStartOfTime_exportsAllCommits() throws Exception { - task.lowerCheckpointTime = START_OF_TIME; - task.upperCheckpointTime = now; - - CommitLogCheckpoint upperCheckpoint = persistResource(CommitLogCheckpoint.create( - now, - ImmutableMap.of(1, now, 2, now, 3, now))); - - // Persist some fake commit log manifests. - persistManifestAndMutation(1, START_OF_TIME.plusMillis(1)); // Oldest possible manifest time. - persistManifestAndMutation(2, oneMinuteAgo); - persistManifestAndMutation(3, now); - - task.run(); - - BlobId expectedFilename = BlobId.of("gcs bucket", "commit_diff_until_" + now); - assertWithMessage("GCS file not found: " + expectedFilename) - .that(gcsUtils.existsAndNotEmpty(expectedFilename)) - .isTrue(); - assertThat(gcsUtils.getMetadata(expectedFilename)) - .containsExactly( - LOWER_BOUND_CHECKPOINT, - START_OF_TIME.toString(), - UPPER_BOUND_CHECKPOINT, - now.toString(), - NUM_TRANSACTIONS, - "3"); - List exported = deserializeEntities(gcsUtils.readBytesFrom(expectedFilename)); - assertThat(exported.get(0)).isEqualTo(upperCheckpoint); - // We expect these manifests, in the order below, with matching mutations. - CommitLogManifest manifest1 = createManifest(1, START_OF_TIME.plusMillis(1)); - CommitLogManifest manifest2 = createManifest(2, oneMinuteAgo); - CommitLogManifest manifest3 = createManifest(3, now); - assertThat(exported).containsExactly( - upperCheckpoint, - manifest1, - createMutation(manifest1), - manifest2, - createMutation(manifest2), - manifest3, - createMutation(manifest3)) - .inOrder(); - } - - private CommitLogManifest createManifest(int bucketNum, DateTime commitTime) { - return CommitLogManifest.create(CommitLogBucket.getBucketKey(bucketNum), commitTime, null); - } - - private CommitLogMutation createMutation(CommitLogManifest manifest) { - return CommitLogMutation.create( - Key.create(manifest), - TestObject.create(manifest.getCommitTime().toString())); - } - - private void persistManifestAndMutation(int bucketNum, DateTime commitTime) { - persistResource( - createMutation(persistResource(createManifest(bucketNum, commitTime)))); - } -} diff --git a/core/src/test/java/google/registry/backup/GcsDiffFileListerTest.java b/core/src/test/java/google/registry/backup/GcsDiffFileListerTest.java deleted file mode 100644 index 395e0d5d1..000000000 --- a/core/src/test/java/google/registry/backup/GcsDiffFileListerTest.java +++ /dev/null @@ -1,212 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.backup; - -import static com.google.common.collect.Iterables.transform; -import static com.google.common.truth.Truth.assertThat; -import static google.registry.backup.BackupUtils.GcsMetadataKeys.LOWER_BOUND_CHECKPOINT; -import static google.registry.backup.ExportCommitLogDiffAction.DIFF_FILE_PREFIX; -import static google.registry.backup.GcsDiffFileLister.getCommitLogDiffPrefix; -import static org.joda.time.DateTimeZone.UTC; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.fail; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.when; - -import com.google.cloud.storage.BlobId; -import com.google.cloud.storage.BlobInfo; -import com.google.cloud.storage.contrib.nio.testing.LocalStorageHelper; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.testing.TestLogHandler; -import com.google.common.util.concurrent.MoreExecutors; -import google.registry.gcs.GcsUtils; -import google.registry.testing.AppEngineExtension; -import google.registry.util.JdkLoggerConfig; -import java.io.IOException; -import java.util.concurrent.Executors; -import java.util.logging.LogRecord; -import org.joda.time.DateTime; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Unit tests for {@link GcsDiffFileLister}. */ -public class GcsDiffFileListerTest { - - private static final String GCS_BUCKET = "gcs bucket"; - - private final DateTime now = DateTime.now(UTC); - private final GcsDiffFileLister diffLister = new GcsDiffFileLister(); - private final GcsUtils gcsUtils = new GcsUtils(LocalStorageHelper.getOptions()); - private final TestLogHandler logHandler = new TestLogHandler(); - - @RegisterExtension - public final AppEngineExtension appEngine = - AppEngineExtension.builder().withDatastoreAndCloudSql().build(); - - @BeforeEach - void beforeEach() throws Exception { - diffLister.gcsUtils = gcsUtils; - diffLister.executorProvider = MoreExecutors::newDirectExecutorService; - diffLister.scheduledExecutorService = Executors.newSingleThreadScheduledExecutor(); - for (int i = 0; i < 5; i++) { - addGcsFile(i, i + 1); - } - JdkLoggerConfig.getConfig(GcsDiffFileLister.class).addHandler(logHandler); - } - - private Iterable extractTimesFromDiffFiles(ImmutableList diffFiles) { - return transform( - diffFiles, - blobInfo -> DateTime.parse(blobInfo.getName().substring(DIFF_FILE_PREFIX.length()))); - } - - private Iterable listDiffFiles(DateTime fromTime, DateTime toTime) { - return extractTimesFromDiffFiles(diffLister.listDiffFiles(GCS_BUCKET, fromTime, toTime)); - } - - private void addGcsFile(int fileAge, int prevAge) throws IOException { - BlobInfo blobInfo = - BlobInfo.newBuilder(BlobId.of(GCS_BUCKET, DIFF_FILE_PREFIX + now.minusMinutes(fileAge))) - .setMetadata( - ImmutableMap.of(LOWER_BOUND_CHECKPOINT, now.minusMinutes(prevAge).toString())) - .build(); - gcsUtils.createFromBytes(blobInfo, new byte[] {1, 2, 3}); - } - - private void assertLogContains(String message) { - for (LogRecord entry : logHandler.getStoredLogRecords()) { - if (entry.getMessage().contains(message)) { - return; - } - } - fail("No log entry contains " + message); - } - - @Test - void testList_noFilesFound() { - DateTime fromTime = now.plusMillis(1); - assertThat(listDiffFiles(fromTime, null)).isEmpty(); - } - - @Test - void testList_patchesHoles() throws Exception { - GcsUtils mockGcsUtils = mock(GcsUtils.class); - diffLister.gcsUtils = spy(gcsUtils); - when(mockGcsUtils.listFolderObjects(anyString(), anyString())) - .thenReturn(ImmutableList.of(now.toString(), now.minusMinutes(4).toString())); - DateTime fromTime = now.minusMinutes(4).minusSeconds(1); - // Request all files with checkpoint > fromTime. - assertThat(listDiffFiles(fromTime, null)) - .containsExactly( - now.minusMinutes(4), - now.minusMinutes(3), - now.minusMinutes(2), - now.minusMinutes(1), - now) - .inOrder(); - } - - @Test - void testList_failsOnFork() throws Exception { - // We currently have files for now-4m ... now, construct the following sequence: - // now-8m <- now-7m <- now-6m now-5m <- now-4m ... now - // ^___________________________| - addGcsFile(5, 8); - for (int i = 6; i < 9; ++i) { - addGcsFile(i, i + 1); - } - - assertThrows(IllegalStateException.class, () -> listDiffFiles(now.minusMinutes(9), null)); - assertLogContains(String.format( - "Found sequence from %s to %s", now.minusMinutes(9), now)); - assertLogContains(String.format( - "Found sequence from %s to %s", now.minusMinutes(9), now.minusMinutes(6))); - } - - @Test - void testList_boundaries() { - assertThat(listDiffFiles(now.minusMinutes(4), now)) - .containsExactly( - now.minusMinutes(4), - now.minusMinutes(3), - now.minusMinutes(2), - now.minusMinutes(1), - now) - .inOrder(); - - } - - @Test - void testList_failsOnGaps() throws Exception { - // We currently have files for now-4m ... now, construct the following sequence: - // now-8m <- now-7m <- now-6m {missing} <- now-4m ... now - for (int i = 6; i < 9; ++i) { - addGcsFile(i, i + 1); - } - - assertThrows(IllegalStateException.class, () -> listDiffFiles(now.minusMinutes(9), null)); - assertLogContains(String.format( - "Gap discovered in sequence terminating at %s, missing file: commit_diff_until_%s", - now, now.minusMinutes(5))); - assertLogContains(String.format( - "Found sequence from %s to %s", now.minusMinutes(9), now.minusMinutes(6))); - assertLogContains(String.format( - "Found sequence from %s to %s", now.minusMinutes(5), now)); - - // Verify that we can work around the gap. - DateTime fromTime = now.minusMinutes(4).minusSeconds(1); - assertThat(listDiffFiles(fromTime, null)) - .containsExactly( - now.minusMinutes(4), - now.minusMinutes(3), - now.minusMinutes(2), - now.minusMinutes(1), - now) - .inOrder(); - assertThat(listDiffFiles( - now.minusMinutes(8).minusSeconds(1), now.minusMinutes(6).plusSeconds(1))) - .containsExactly( - now.minusMinutes(8), - now.minusMinutes(7), - now.minusMinutes(6)) - .inOrder(); - } - - @Test - void testList_toTimeSpecified() { - assertThat( - listDiffFiles(now.minusMinutes(4).minusSeconds(1), now.minusMinutes(2).plusSeconds(1))) - .containsExactly(now.minusMinutes(4), now.minusMinutes(3), now.minusMinutes(2)) - .inOrder(); - } - - @Test - void testPrefix_lengthened() { - DateTime from = DateTime.parse("2021-05-11T06:48:00.070Z"); - assertThat(getCommitLogDiffPrefix(from, null)).isEqualTo("commit_diff_until_"); - assertThat(getCommitLogDiffPrefix(from, DateTime.parse("2021-07-01"))) - .isEqualTo("commit_diff_until_2021-"); - assertThat(getCommitLogDiffPrefix(from, DateTime.parse("2021-05-21"))) - .isEqualTo("commit_diff_until_2021-05-"); - assertThat(getCommitLogDiffPrefix(from, DateTime.parse("2021-05-11T09:48:00.070Z"))) - .isEqualTo("commit_diff_until_2021-05-11T"); - assertThat(getCommitLogDiffPrefix(from, DateTime.parse("2021-05-11T06:59:00.070Z"))) - .isEqualTo("commit_diff_until_2021-05-11T06:"); - } -} diff --git a/core/src/test/java/google/registry/backup/RestoreCommitLogsActionTest.java b/core/src/test/java/google/registry/backup/RestoreCommitLogsActionTest.java deleted file mode 100644 index 099867f8f..000000000 --- a/core/src/test/java/google/registry/backup/RestoreCommitLogsActionTest.java +++ /dev/null @@ -1,346 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.backup; - -import static com.google.common.collect.Iterables.transform; -import static com.google.common.collect.Maps.toMap; -import static com.google.common.truth.Truth.assertThat; -import static google.registry.backup.BackupUtils.GcsMetadataKeys.LOWER_BOUND_CHECKPOINT; -import static google.registry.backup.BackupUtils.serializeEntity; -import static google.registry.backup.ExportCommitLogDiffAction.DIFF_FILE_PREFIX; -import static google.registry.model.ofy.CommitLogBucket.getBucketIds; -import static google.registry.model.ofy.CommitLogBucket.getBucketKey; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static org.joda.time.DateTimeZone.UTC; - -import com.google.appengine.api.datastore.DatastoreServiceFactory; -import com.google.cloud.storage.BlobId; -import com.google.cloud.storage.BlobInfo; -import com.google.cloud.storage.contrib.nio.testing.LocalStorageHelper; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Lists; -import com.google.common.io.Resources; -import com.google.common.primitives.Longs; -import com.google.common.util.concurrent.MoreExecutors; -import com.googlecode.objectify.Key; -import google.registry.gcs.GcsUtils; -import google.registry.model.ImmutableObject; -import google.registry.model.domain.DomainBase; -import google.registry.model.ofy.CommitLogBucket; -import google.registry.model.ofy.CommitLogCheckpoint; -import google.registry.model.ofy.CommitLogCheckpointRoot; -import google.registry.model.ofy.CommitLogManifest; -import google.registry.model.ofy.CommitLogMutation; -import google.registry.testing.AppEngineExtension; -import google.registry.testing.FakeClock; -import google.registry.testing.FakeSleeper; -import google.registry.testing.TestObject; -import google.registry.util.Retrier; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Optional; -import java.util.concurrent.Executors; -import org.joda.time.DateTime; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Unit tests for {@link RestoreCommitLogsAction}. */ -public class RestoreCommitLogsActionTest { - - static final String GCS_BUCKET = "gcs bucket"; - - private final DateTime now = DateTime.now(UTC); - private final RestoreCommitLogsAction action = new RestoreCommitLogsAction(); - private final GcsUtils gcsUtils = new GcsUtils(LocalStorageHelper.getOptions()); - - @RegisterExtension - public final AppEngineExtension appEngine = - AppEngineExtension.builder() - .withDatastoreAndCloudSql() - .withOfyTestEntities(TestObject.class) - .build(); - - @BeforeEach - void beforeEach() { - action.gcsUtils = gcsUtils; - action.dryRun = false; - action.datastoreService = DatastoreServiceFactory.getDatastoreService(); - action.fromTime = now.minusMillis(1); - action.retrier = new Retrier(new FakeSleeper(new FakeClock()), 1); - action.defaultGcsBucket = GCS_BUCKET; - action.gcsBucketOverride = Optional.empty(); - action.diffLister = new GcsDiffFileLister(); - action.diffLister.gcsUtils = gcsUtils; - action.diffLister.executorProvider = MoreExecutors::newDirectExecutorService; - action.diffLister.scheduledExecutorService = Executors.newSingleThreadScheduledExecutor(); - } - - @Test - void testRestore_multipleDiffFiles() throws Exception { - auditedOfy() - .saveWithoutBackup() - .entities(TestObject.create("previous to keep"), TestObject.create("previous to delete")) - .now(); - // Create 3 transactions, across two diff files. - // Before: {"previous to keep", "previous to delete"} - // 1a: Add {"a", "b"}, Delete {"previous to delete"} - // 1b: Add {"c", "d"}, Delete {"a"} - // 2: Add {"e", "f"}, Delete {"c"} - // After: {"previous to keep", "b", "d", "e", "f"} - Key manifest1aKey = - CommitLogManifest.createKey(getBucketKey(1), now.minusMinutes(3)); - Key manifest1bKey = - CommitLogManifest.createKey(getBucketKey(2), now.minusMinutes(2)); - Key manifest2Key = - CommitLogManifest.createKey(getBucketKey(1), now.minusMinutes(1)); - saveDiffFileNotToRestore(gcsUtils, now.minusMinutes(2)); - Iterable file1CommitLogs = - saveDiffFile( - gcsUtils, - createCheckpoint(now.minusMinutes(1)), - CommitLogManifest.create( - getBucketKey(1), - now.minusMinutes(3), - ImmutableSet.of(Key.create(TestObject.create("previous to delete")))), - CommitLogMutation.create(manifest1aKey, TestObject.create("a")), - CommitLogMutation.create(manifest1aKey, TestObject.create("b")), - CommitLogManifest.create( - getBucketKey(2), - now.minusMinutes(2), - ImmutableSet.of(Key.create(TestObject.create("a")))), - CommitLogMutation.create(manifest1bKey, TestObject.create("c")), - CommitLogMutation.create(manifest1bKey, TestObject.create("d"))); - Iterable file2CommitLogs = - saveDiffFile( - gcsUtils, - createCheckpoint(now), - CommitLogManifest.create( - getBucketKey(1), - now.minusMinutes(1), - ImmutableSet.of(Key.create(TestObject.create("c")))), - CommitLogMutation.create(manifest2Key, TestObject.create("e")), - CommitLogMutation.create(manifest2Key, TestObject.create("f"))); - action.fromTime = now.minusMinutes(1).minusMillis(1); - action.run(); - auditedOfy().clearSessionCache(); - assertExpectedIds("previous to keep", "b", "d", "e", "f"); - assertInDatastore(file1CommitLogs); - assertInDatastore(file2CommitLogs); - assertInDatastore(CommitLogCheckpointRoot.create(now)); - assertCommitLogBuckets(ImmutableMap.of(1, now.minusMinutes(1), 2, now.minusMinutes(2))); - } - - @Test - void testRestore_noManifests() throws Exception { - auditedOfy().saveWithoutBackup().entity(TestObject.create("previous to keep")).now(); - saveDiffFileNotToRestore(gcsUtils, now.minusMinutes(1)); - Iterable commitLogs = saveDiffFile(gcsUtils, createCheckpoint(now)); - action.run(); - auditedOfy().clearSessionCache(); - assertExpectedIds("previous to keep"); - assertInDatastore(commitLogs); - assertInDatastore(CommitLogCheckpointRoot.create(now)); - assertCommitLogBuckets(ImmutableMap.of()); - } - - @Test - void testRestore_manifestWithNoDeletions() throws Exception { - auditedOfy().saveWithoutBackup().entity(TestObject.create("previous to keep")).now(); - Key bucketKey = getBucketKey(1); - Key manifestKey = CommitLogManifest.createKey(bucketKey, now); - saveDiffFileNotToRestore(gcsUtils, now.minusMinutes(1)); - Iterable commitLogs = - saveDiffFile( - gcsUtils, - createCheckpoint(now), - CommitLogManifest.create(bucketKey, now, null), - CommitLogMutation.create(manifestKey, TestObject.create("a")), - CommitLogMutation.create(manifestKey, TestObject.create("b"))); - action.run(); - auditedOfy().clearSessionCache(); - assertExpectedIds("previous to keep", "a", "b"); - assertInDatastore(commitLogs); - assertInDatastore(CommitLogCheckpointRoot.create(now)); - assertCommitLogBuckets(ImmutableMap.of(1, now)); - } - - @Test - void testRestore_manifestWithNoMutations() throws Exception { - auditedOfy() - .saveWithoutBackup() - .entities(TestObject.create("previous to keep"), TestObject.create("previous to delete")) - .now(); - saveDiffFileNotToRestore(gcsUtils, now.minusMinutes(1)); - Iterable commitLogs = - saveDiffFile( - gcsUtils, - createCheckpoint(now), - CommitLogManifest.create( - getBucketKey(1), - now, - ImmutableSet.of(Key.create(TestObject.create("previous to delete"))))); - action.run(); - auditedOfy().clearSessionCache(); - assertExpectedIds("previous to keep"); - assertInDatastore(commitLogs); - assertInDatastore(CommitLogCheckpointRoot.create(now)); - assertCommitLogBuckets(ImmutableMap.of(1, now)); - } - - // This is a pathological case that shouldn't be possible, but we should be robust to it. - @Test - void testRestore_manifestWithNoMutationsOrDeletions() throws Exception { - auditedOfy().saveWithoutBackup().entities(TestObject.create("previous to keep")).now(); - saveDiffFileNotToRestore(gcsUtils, now.minusMinutes(1)); - Iterable commitLogs = - saveDiffFile( - gcsUtils, createCheckpoint(now), CommitLogManifest.create(getBucketKey(1), now, null)); - action.run(); - auditedOfy().clearSessionCache(); - assertExpectedIds("previous to keep"); - assertInDatastore(commitLogs); - assertInDatastore(CommitLogCheckpointRoot.create(now)); - assertCommitLogBuckets(ImmutableMap.of(1, now)); - } - - @Test - void testRestore_mutateExistingEntity() throws Exception { - auditedOfy().saveWithoutBackup().entity(TestObject.create("existing", "a")).now(); - Key manifestKey = CommitLogManifest.createKey(getBucketKey(1), now); - saveDiffFileNotToRestore(gcsUtils, now.minusMinutes(1)); - Iterable commitLogs = - saveDiffFile( - gcsUtils, - createCheckpoint(now), - CommitLogManifest.create(getBucketKey(1), now, null), - CommitLogMutation.create(manifestKey, TestObject.create("existing", "b"))); - action.run(); - auditedOfy().clearSessionCache(); - assertThat(auditedOfy().load().entity(TestObject.create("existing")).now().getField()) - .isEqualTo("b"); - assertInDatastore(commitLogs); - assertInDatastore(CommitLogCheckpointRoot.create(now)); - assertCommitLogBuckets(ImmutableMap.of(1, now)); - } - - // This should be harmless; deletes are idempotent. - @Test - void testRestore_deleteMissingEntity() throws Exception { - auditedOfy().saveWithoutBackup().entity(TestObject.create("previous to keep", "a")).now(); - saveDiffFileNotToRestore(gcsUtils, now.minusMinutes(1)); - Iterable commitLogs = - saveDiffFile( - gcsUtils, - createCheckpoint(now), - CommitLogManifest.create( - getBucketKey(1), - now, - ImmutableSet.of(Key.create(TestObject.create("previous to delete"))))); - action.run(); - auditedOfy().clearSessionCache(); - assertExpectedIds("previous to keep"); - assertInDatastore(commitLogs); - assertCommitLogBuckets(ImmutableMap.of(1, now)); - assertInDatastore(CommitLogCheckpointRoot.create(now)); - } - - @Test - void testRestore_fromOtherProject() throws IOException { - // Input resource is a standard commit log file whose entities has "AppId_1" as appId. Among the - // entities are CommitLogMutations that have an embedded DomainBase and a ContactResource, both - // having "AppId_1" as appId. This test verifies that the embedded entities are properly - // imported, in particular, the domain's 'registrant' key can be used by Objectify to load the - // contact. - saveDiffFile( - gcsUtils, - Resources.toByteArray(Resources.getResource("google/registry/backup/commitlog.data")), - now); - action.run(); - auditedOfy().clearSessionCache(); - List domainBases = auditedOfy().load().type(DomainBase.class).list(); - assertThat(domainBases).hasSize(1); - DomainBase domainBase = domainBases.get(0); - // If the registrant is found, then the key instance in domainBase is fixed. - assertThat(auditedOfy().load().key(domainBase.getRegistrant().getOfyKey()).now()).isNotNull(); - } - - static CommitLogCheckpoint createCheckpoint(DateTime now) { - return CommitLogCheckpoint.create(now, toMap(getBucketIds(), x -> now)); - } - - static void saveDiffFile(GcsUtils gcsUtils, byte[] rawBytes, DateTime timestamp) - throws IOException { - BlobInfo blobInfo = - BlobInfo.newBuilder(BlobId.of(GCS_BUCKET, DIFF_FILE_PREFIX + timestamp)) - .setMetadata( - ImmutableMap.of(LOWER_BOUND_CHECKPOINT, timestamp.minusMinutes(1).toString())) - .build(); - gcsUtils.createFromBytes(blobInfo, rawBytes); - } - - static Iterable saveDiffFile( - GcsUtils gcsUtils, CommitLogCheckpoint checkpoint, ImmutableObject... entities) - throws IOException { - DateTime now = checkpoint.getCheckpointTime(); - List allEntities = Lists.asList(checkpoint, entities); - ByteArrayOutputStream output = new ByteArrayOutputStream(); - for (ImmutableObject entity : allEntities) { - serializeEntity(entity, output); - } - saveDiffFile(gcsUtils, output.toByteArray(), now); - return allEntities; - } - - static void saveDiffFileNotToRestore(GcsUtils gcsUtils, DateTime now) throws Exception { - saveDiffFile( - gcsUtils, - createCheckpoint(now), - CommitLogManifest.create(getBucketKey(1), now, null), - CommitLogMutation.create( - CommitLogManifest.createKey(getBucketKey(1), now), - TestObject.create("should not be restored"))); - } - - private void assertExpectedIds(String... ids) { - assertThat(transform(auditedOfy().load().type(TestObject.class), TestObject::getId)) - .containsExactly((Object[]) ids); - } - - private void assertInDatastore(ImmutableObject entity) { - assertThat(auditedOfy().load().entity(entity).now()).isEqualTo(entity); - } - - private void assertInDatastore(Iterable entities) { - assertThat(auditedOfy().load().entities(entities).values()).containsExactlyElementsIn(entities); - } - - private void assertCommitLogBuckets(Map bucketIdsAndTimestamps) { - Map buckets = - auditedOfy() - .load() - .type(CommitLogBucket.class) - .ids(Longs.asList(Longs.toArray(CommitLogBucket.getBucketIds()))); - assertThat(buckets).hasSize(bucketIdsAndTimestamps.size()); - for (Entry bucketIdAndTimestamp : bucketIdsAndTimestamps.entrySet()) { - assertThat(buckets.get((long) bucketIdAndTimestamp.getKey()).getLastWrittenTime()) - .isEqualTo(bucketIdAndTimestamp.getValue()); - } - } -} diff --git a/core/src/test/java/google/registry/batch/DeleteProberDataActionTest.java b/core/src/test/java/google/registry/batch/DeleteProberDataActionTest.java index dd410b9d4..4f7f7932e 100644 --- a/core/src/test/java/google/registry/batch/DeleteProberDataActionTest.java +++ b/core/src/test/java/google/registry/batch/DeleteProberDataActionTest.java @@ -38,6 +38,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import com.google.common.collect.ImmutableSet; import com.googlecode.objectify.Key; import google.registry.config.RegistryEnvironment; +import google.registry.dns.DnsQueue; import google.registry.model.ImmutableObject; import google.registry.model.billing.BillingEvent; import google.registry.model.billing.BillingEvent.Reason; @@ -49,27 +50,39 @@ import google.registry.model.poll.PollMessage; import google.registry.model.reporting.HistoryEntry; import google.registry.model.tld.Registry; import google.registry.model.tld.Registry.TldType; +import google.registry.testing.AppEngineExtension; import google.registry.testing.DualDatabaseTest; +import google.registry.testing.FakeClock; import google.registry.testing.FakeResponse; import google.registry.testing.SystemPropertyExtension; import google.registry.testing.TestOfyAndSql; -import google.registry.testing.mapreduce.MapreduceTestCase; import java.util.Optional; import java.util.Set; import org.joda.money.Money; import org.joda.time.DateTime; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.extension.RegisterExtension; /** Unit tests for {@link DeleteProberDataAction}. */ @DualDatabaseTest -class DeleteProberDataActionTest extends MapreduceTestCase { +class DeleteProberDataActionTest { private static final DateTime DELETION_TIME = DateTime.parse("2010-01-01T00:00:00.000Z"); + @RegisterExtension + public final AppEngineExtension appEngine = + AppEngineExtension.builder() + .withDatastoreAndCloudSql() + .withLocalModules() + .withTaskQueue() + .build(); + @RegisterExtension final SystemPropertyExtension systemPropertyExtension = new SystemPropertyExtension(); + private DeleteProberDataAction action; + @BeforeEach void beforeEach() { // Entities in these two should not be touched. @@ -94,17 +107,17 @@ class DeleteProberDataActionTest extends MapreduceTestCase notTestEntities = persistLotsOfDomains("not-test.test"); Set ibEntities = persistLotsOfDomains("ib-any.test"); Set oaEntities = persistLotsOfDomains("oa-canary.test"); - runMapreduce(); + action.run(); assertAllExist(tldEntities); assertAllExist(exampleEntities); assertAllExist(notTestEntities); @@ -130,7 +143,7 @@ class DeleteProberDataActionTest extends MapreduceTestCase ibEntities = persistLotsOfDomains("ib-any.test"); Set oaEntities = persistLotsOfDomains("oa-canary.test"); action.tlds = ImmutableSet.of("example", "ib-any.test"); - runMapreduce(); + action.run(); assertAllExist(tldEntities); assertAllExist(notTestEntities); assertAllExist(oaEntities); @@ -141,8 +154,7 @@ class DeleteProberDataActionTest extends MapreduceTestCase fkiNic = - ForeignKeyIndex.load(DomainBase.class, "nic.ib-any.test", START_OF_TIME); Set ibEntities = persistLotsOfDomains("ib-any.test"); - runMapreduce(); + action.run(); assertAllAbsent(ibEntities); assertAllExist(ImmutableSet.of(nic)); - if (tm().isOfy()) { - assertAllExist(ImmutableSet.of(fkiNic)); - } } @TestOfyAndSql @@ -188,7 +193,7 @@ class DeleteProberDataActionTest extends MapreduceTestCase tldEntities = persistLotsOfDomains("tld"); Set oaEntities = persistLotsOfDomains("oa-canary.test"); action.isDryRun = true; - runMapreduce(); + action.run(); assertAllExist(tldEntities); assertAllExist(oaEntities); } @@ -201,7 +206,7 @@ class DeleteProberDataActionTest extends MapreduceTestCase domain = loadByForeignKey(DomainBase.class, "blah.ib-any.test", DateTime.now(UTC)); assertThat(domain).isPresent(); @@ -248,7 +253,7 @@ class DeleteProberDataActionTest extends MapreduceTestCase { +public class ExpandRecurringBillingEventsActionTest { + + @RegisterExtension + public final AppEngineExtension appEngine = + AppEngineExtension.builder() + .withDatastoreAndCloudSql() + .withLocalModules() + .withTaskQueue() + .build(); private DateTime currentTestTime = DateTime.parse("1999-01-05T00:00:00Z"); private final FakeClock clock = new FakeClock(currentTestTime); + private ExpandRecurringBillingEventsAction action; private DomainBase domain; private DomainHistory historyEntry; private BillingEvent.Recurring recurring; @@ -80,7 +86,6 @@ public class ExpandRecurringBillingEventsActionTest @BeforeEach void beforeEach() { action = new ExpandRecurringBillingEventsAction(); - action.mrRunner = makeDefaultRunner(); action.clock = clock; action.cursorTimeParam = Optional.empty(); action.batchSize = 2; @@ -121,12 +126,10 @@ public class ExpandRecurringBillingEventsActionTest private void runAction() throws Exception { action.response = new FakeResponse(); action.run(); - // Need to save the current test time before running the mapreduce, which increments the clock. + // Need to save the current test time before running the action, which increments the clock. // The execution time (e. g. transaction time) is captured when the action starts running so // the passage of time afterward does not affect the timestamp stored in the billing events. currentTestTime = clock.nowUtc(); - executeTasksUntilEmpty("mapreduce", clock); - auditedOfy().clearSessionCache(); } private void assertCursorAt(DateTime expectedCursorTime) { @@ -423,7 +426,7 @@ public class ExpandRecurringBillingEventsActionTest @TestOfyAndSql void testSuccess_expandSingleEvent_withCursorPastExpected() throws Exception { persistResource(recurring); - // Simulate a quick second run of the mapreduce (this should be a no-op). + // Simulate a quick second run of the action (this should be a no-op). saveCursor(clock.nowUtc().minusSeconds(1)); runAction(); // No new history entries should be generated @@ -801,24 +804,11 @@ public class ExpandRecurringBillingEventsActionTest @TestOfyAndSql void testFailure_cursorAtExecutionTime() { - // The clock advances one milli on runMapreduce. + // The clock advances one milli on run. action.cursorTimeParam = Optional.of(clock.nowUtc().plusMillis(1)); IllegalArgumentException thrown = assertThrows(IllegalArgumentException.class, this::runAction); assertThat(thrown) .hasMessageThat() .contains("Cursor time must be earlier than execution time."); } - - @TestOfyOnly - void testFailure_mapperException_doesNotMoveCursor() throws Exception { - saveCursor(START_OF_TIME); // Need a saved cursor to verify that it didn't move. - clock.advanceOneMilli(); - // Set target to a TLD that doesn't exist. - recurring = persistResource(recurring.asBuilder().setTargetId("domain.junk").build()); - runAction(); - // No new history entries should be generated - assertThat(getHistoryEntriesOfType(domain, DOMAIN_AUTORENEW)).isEmpty(); - assertBillingEvents(recurring); // only the bogus one in Datastore - assertCursorAt(START_OF_TIME); // Cursor doesn't move on a failure. - } } diff --git a/core/src/test/java/google/registry/batch/ResaveAllEppResourcesActionTest.java b/core/src/test/java/google/registry/batch/ResaveAllEppResourcesActionTest.java deleted file mode 100644 index 92d04d922..000000000 --- a/core/src/test/java/google/registry/batch/ResaveAllEppResourcesActionTest.java +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.batch; - -import static com.google.common.truth.Truth.assertThat; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.testing.DatabaseHelper.persistActiveContact; -import static google.registry.testing.DatabaseHelper.persistContactWithPendingTransfer; -import static org.joda.time.DateTimeZone.UTC; - -import google.registry.model.annotations.DeleteAfterMigration; -import google.registry.model.contact.ContactResource; -import google.registry.model.transfer.TransferStatus; -import google.registry.testing.FakeResponse; -import google.registry.testing.TmOverrideExtension; -import google.registry.testing.mapreduce.MapreduceTestCase; -import org.joda.time.DateTime; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Unit tests for {@link ResaveAllEppResourcesAction}. */ -// No longer needed in SQL. Subject to future removal. -@Deprecated -@DeleteAfterMigration -class ResaveAllEppResourcesActionTest extends MapreduceTestCase { - - @RegisterExtension - @Order(Order.DEFAULT - 1) - TmOverrideExtension tmOverrideExtension = TmOverrideExtension.withOfy(); - - @BeforeEach - void beforeEach() { - action = new ResaveAllEppResourcesAction(); - action.mrRunner = makeDefaultRunner(); - action.response = new FakeResponse(); - } - - private void runMapreduce() throws Exception { - action.run(); - executeTasksUntilEmpty("mapreduce"); - } - - @Test - void test_mapreduceSuccessfullyResavesEntity() throws Exception { - ContactResource contact = persistActiveContact("test123"); - DateTime creationTime = contact.getUpdateTimestamp().getTimestamp(); - assertThat(auditedOfy().load().entity(contact).now().getUpdateTimestamp().getTimestamp()) - .isEqualTo(creationTime); - auditedOfy().clearSessionCache(); - runMapreduce(); - assertThat(auditedOfy().load().entity(contact).now().getUpdateTimestamp().getTimestamp()) - .isGreaterThan(creationTime); - } - - @Test - void test_fastMode_doesNotResaveEntityWithNoChanges() throws Exception { - ContactResource contact = persistActiveContact("test123"); - DateTime creationTime = contact.getUpdateTimestamp().getTimestamp(); - assertThat(auditedOfy().load().entity(contact).now().getUpdateTimestamp().getTimestamp()) - .isEqualTo(creationTime); - auditedOfy().clearSessionCache(); - action.isFast = true; - runMapreduce(); - assertThat(auditedOfy().load().entity(contact).now().getUpdateTimestamp().getTimestamp()) - .isEqualTo(creationTime); - } - - @Test - void test_mapreduceResolvesPendingTransfer() throws Exception { - DateTime now = DateTime.now(UTC); - // Set up a contact with a transfer that implicitly completed five days ago. - ContactResource contact = - persistContactWithPendingTransfer( - persistActiveContact("meh789"), - now.minusDays(10), - now.minusDays(10), - now.minusDays(10)); - assertThat(contact.getTransferData().getTransferStatus()).isEqualTo(TransferStatus.PENDING); - runMapreduce(); - - auditedOfy().clearSessionCache(); - // The transfer should be effective after the contact is re-saved, as it should've been - // projected to the current time. - ContactResource resavedContact = auditedOfy().load().entity(contact).now(); - assertThat(resavedContact.getTransferData().getTransferStatus()) - .isEqualTo(TransferStatus.SERVER_APPROVED); - } -} diff --git a/core/src/test/java/google/registry/batch/ResaveAllEppResourcesPipelineActionTest.java b/core/src/test/java/google/registry/batch/ResaveAllEppResourcesPipelineActionTest.java index 76fd3de31..5745adc7b 100644 --- a/core/src/test/java/google/registry/batch/ResaveAllEppResourcesPipelineActionTest.java +++ b/core/src/test/java/google/registry/batch/ResaveAllEppResourcesPipelineActionTest.java @@ -15,7 +15,7 @@ package google.registry.batch; import static com.google.common.truth.Truth.assertThat; -import static google.registry.batch.ResaveAllEppResourcesPipelineAction.PARAM_FAST; +import static google.registry.batch.BatchModule.PARAM_FAST; import static google.registry.batch.ResaveAllEppResourcesPipelineAction.PIPELINE_NAME; import static google.registry.beam.BeamUtils.createJobName; import static javax.servlet.http.HttpServletResponse.SC_OK; @@ -28,7 +28,6 @@ import google.registry.beam.BeamActionTestBase; import google.registry.config.RegistryEnvironment; import google.registry.testing.AppEngineExtension; import google.registry.testing.FakeClock; -import java.util.Optional; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -43,13 +42,7 @@ public class ResaveAllEppResourcesPipelineActionTest extends BeamActionTestBase private ResaveAllEppResourcesPipelineAction createAction(boolean isFast) { return new ResaveAllEppResourcesPipelineAction( - "test-project", - "test-region", - "staging-bucket", - Optional.of(isFast), - fakeClock, - response, - dataflow); + "test-project", "test-region", "staging-bucket", isFast, fakeClock, response, dataflow); } @Test diff --git a/core/src/test/java/google/registry/cron/CommitLogFanoutActionTest.java b/core/src/test/java/google/registry/cron/CommitLogFanoutActionTest.java deleted file mode 100644 index d4f52429f..000000000 --- a/core/src/test/java/google/registry/cron/CommitLogFanoutActionTest.java +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.cron; - -import static google.registry.cron.CommitLogFanoutAction.BUCKET_PARAM; - -import com.google.common.base.Joiner; -import google.registry.model.ofy.CommitLogBucket; -import google.registry.testing.AppEngineExtension; -import google.registry.testing.CloudTasksHelper; -import google.registry.testing.CloudTasksHelper.TaskMatcher; -import google.registry.testing.FakeClock; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Unit tests for {@link CommitLogFanoutAction}. */ -class CommitLogFanoutActionTest { - - private static final String ENDPOINT = "/the/servlet"; - private static final String QUEUE = "the-queue"; - private final CloudTasksHelper cloudTasksHelper = new CloudTasksHelper(new FakeClock()); - - @RegisterExtension - final AppEngineExtension appEngineExtension = - AppEngineExtension.builder() - .withDatastoreAndCloudSql() - .withTaskQueue( - Joiner.on('\n') - .join( - "", - "", - " ", - " the-queue", - " 1/s", - " ", - "")) - .build(); - - @Test - void testSuccess() { - CommitLogFanoutAction action = new CommitLogFanoutAction(); - action.cloudTasksUtils = cloudTasksHelper.getTestCloudTasksUtils(); - action.endpoint = ENDPOINT; - action.queue = QUEUE; - action.jitterSeconds = Optional.empty(); - action.run(); - List matchers = new ArrayList<>(); - for (int bucketId : CommitLogBucket.getBucketIds()) { - matchers.add(new TaskMatcher().url(ENDPOINT).param(BUCKET_PARAM, Integer.toString(bucketId))); - } - cloudTasksHelper.assertTasksEnqueued(QUEUE, matchers); - } -} diff --git a/core/src/test/java/google/registry/export/ExportDomainListsActionTest.java b/core/src/test/java/google/registry/export/ExportDomainListsActionTest.java index 53f3d787a..5c6de250b 100644 --- a/core/src/test/java/google/registry/export/ExportDomainListsActionTest.java +++ b/core/src/test/java/google/registry/export/ExportDomainListsActionTest.java @@ -32,19 +32,16 @@ import com.google.cloud.storage.StorageException; import com.google.cloud.storage.contrib.nio.testing.LocalStorageHelper; import com.google.common.collect.ImmutableList; import com.google.common.net.MediaType; -import google.registry.export.ExportDomainListsAction.ExportDomainListsReducer; import google.registry.gcs.GcsUtils; import google.registry.model.ofy.Ofy; import google.registry.model.tld.Registry; import google.registry.model.tld.Registry.TldType; import google.registry.storage.drive.DriveConnection; +import google.registry.testing.AppEngineExtension; import google.registry.testing.DualDatabaseTest; import google.registry.testing.FakeClock; -import google.registry.testing.FakeResponse; import google.registry.testing.InjectExtension; import google.registry.testing.TestOfyAndSql; -import google.registry.testing.TestOfyOnly; -import google.registry.testing.mapreduce.MapreduceTestCase; import org.joda.time.DateTime; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; @@ -53,14 +50,22 @@ import org.mockito.ArgumentCaptor; /** Unit tests for {@link ExportDomainListsAction}. */ @DualDatabaseTest -class ExportDomainListsActionTest extends MapreduceTestCase { +class ExportDomainListsActionTest { private final GcsUtils gcsUtils = new GcsUtils(LocalStorageHelper.getOptions()); private DriveConnection driveConnection = mock(DriveConnection.class); private ArgumentCaptor bytesExportedToDrive = ArgumentCaptor.forClass(byte[].class); - private final FakeResponse response = new FakeResponse(); + private ExportDomainListsAction action; private final FakeClock clock = new FakeClock(DateTime.parse("2020-02-02T02:02:02Z")); + @RegisterExtension + public final AppEngineExtension appEngine = + AppEngineExtension.builder() + .withDatastoreAndCloudSql() + .withLocalModules() + .withTaskQueue() + .build(); + @Order(Order.DEFAULT - 1) @RegisterExtension public final InjectExtension inject = @@ -73,22 +78,13 @@ class ExportDomainListsActionTest extends MapreduceTestCase driveConnection); - action = new ExportDomainListsAction(); - action.mrRunner = makeDefaultRunner(); - action.response = response; action.gcsBucket = "outputbucket"; action.gcsUtils = gcsUtils; action.clock = clock; action.driveConnection = driveConnection; } - private void runAction() throws Exception { - action.run(); - executeTasksUntilEmpty("mapreduce"); - } - private void verifyExportedToDrive(String folderId, String domains) throws Exception { verify(driveConnection) .createOrUpdateFile( @@ -99,21 +95,12 @@ class ExportDomainListsActionTest extends MapreduceTestCase T serializeAndDeserialize(T obj) throws Exception { - try (ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); - ObjectOutputStream objectOut = new ObjectOutputStream(byteOut)) { - objectOut.writeObject(obj); - try (ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray()); - ObjectInputStream objectIn = new ObjectInputStream(byteIn)) { - return (T) objectIn.readObject(); - } - } - } - - @Test - void testSuccess_childEntityReader_multipleParentsAndChildren() throws Exception { - setupResources(); - setupSecondDomainBases(); - Set seen = new HashSet<>(); - InputReader reader = - EppResourceInputs.createChildEntityInput( - ImmutableSet.of(EppResource.class), - ImmutableSet.>of( - HistoryEntry.class, BillingEvent.OneTime.class, BillingEvent.Recurring.class)) - .createReaders() - .get(0); - reader.beginShard(); - reader.beginSlice(); - for (int i = 0; i < 8; i++) { - reader.endSlice(); - reader = serializeAndDeserialize(reader); - reader.beginSlice(); - if (i == 7) { - // This final readerCopy is needed for the assertThrows lambda. - final InputReader readerCopy = reader; - assertThrows(NoSuchElementException.class, () -> seen.add(readerCopy.next())); - } else { - seen.add(reader.next()); - } - } - assertThat(seen) - .containsExactly( - domainHistoryEntryA.asHistoryEntry(), - domainHistoryEntryB.asHistoryEntry(), - contactHistoryEntry.asHistoryEntry(), - oneTimeA, - recurringA, - oneTimeB, - recurringB); - } - - @Test - void testSuccess_childEntityInput_polymorphicBaseType() { - createChildEntityInput(ImmutableSet.of(EppResource.class), ImmutableSet.of(BillingEvent.class)); - } - - @Test - void testSuccess_childEntityReader_multipleChildTypes() throws Exception { - setupResources(); - InputReader reader = - EppResourceInputs.createChildEntityInput( - ImmutableSet.of(EppResource.class), - ImmutableSet.>of( - HistoryEntry.class, BillingEvent.OneTime.class, BillingEvent.Recurring.class)) - .createReaders() - .get(0); - assertThat(getAllFromReader(reader)) - .containsExactly( - domainHistoryEntryA.asHistoryEntry(), - contactHistoryEntry.asHistoryEntry(), - oneTimeA, - recurringA); - } - - private static Set getAllFromReader(InputReader reader) - throws Exception { - reader.beginShard(); - reader.beginSlice(); - ImmutableSet.Builder seen = new ImmutableSet.Builder<>(); - try { - while (true) { - seen.add(reader.next()); - } - } catch (NoSuchElementException e) { - // Swallow; this is expected. - } - return seen.build(); - } - - @Test - void testSuccess_childEntityReader_filterParentTypes() throws Exception { - setupResources(); - InputReader reader = - EppResourceInputs.createChildEntityInput( - ImmutableSet.>of(ContactResource.class), - ImmutableSet.>of( - HistoryEntry.class, BillingEvent.OneTime.class, BillingEvent.Recurring.class)) - .createReaders() - .get(0); - assertThat(getAllFromReader(reader)).containsExactly(contactHistoryEntry.asHistoryEntry()); - } - - @Test - void testSuccess_childEntityReader_polymorphicChildFiltering() throws Exception { - setupResources(); - InputReader reader = - EppResourceInputs.createChildEntityInput( - ImmutableSet.of(EppResource.class), - ImmutableSet.>of(BillingEvent.OneTime.class)) - .createReaders() - .get(0); - assertThat(getAllFromReader(reader)).containsExactly(oneTimeA); - } - - @Test - void testSuccess_childEntityReader_polymorphicChildClass() throws Exception { - setupResources(); - InputReader reader = - EppResourceInputs.createChildEntityInput( - ImmutableSet.of(EppResource.class), - ImmutableSet.>of(BillingEvent.class)) - .createReaders() - .get(0); - assertThat(getAllFromReader(reader)).containsExactly(oneTimeA, recurringA); - } - - @Test - void testSuccess_childEntityReader_noneReturned() throws Exception { - createTld("tld"); - InputReader reader = - EppResourceInputs.createChildEntityInput( - ImmutableSet.>of(ContactResource.class), - ImmutableSet.>of(BillingEvent.OneTime.class)) - .createReaders() - .get(0); - assertThat(getAllFromReader(reader)).isEmpty(); - } - - @Test - void testSuccess_childEntityReader_readerCountMatchesBucketCount() throws Exception { - assertThat( - EppResourceInputs.createChildEntityInput( - ImmutableSet.>of(DomainBase.class), - ImmutableSet.>of(BillingEvent.OneTime.class)) - .createReaders()) - .hasSize(3); - } - - @Test - void testSuccess_childEntityReader_oneReaderPerBucket() throws Exception { - createTld("tld"); - Set historyEntries = new HashSet<>(); - for (int i = 1; i <= 3; i++) { - DomainBase domain = persistSimpleResource(newDomainBase(i + ".tld")); - historyEntries.add( - persistResource( - new DomainHistory.Builder() - .setDomain(domain) - .setType(HistoryEntry.Type.DOMAIN_CREATE) - .setModificationTime(now) - .setRegistrarId(domain.getCreationRegistrarId()) - .build()) - .asHistoryEntry()); - persistResource(EppResourceIndex.create(getBucketKey(i), Key.create(domain))); - } - Set seen = new HashSet<>(); - for (InputReader reader : - EppResourceInputs.createChildEntityInput( - ImmutableSet.>of(DomainBase.class), - ImmutableSet.>of(HistoryEntry.class)) - .createReaders()) { - reader.beginShard(); - reader.beginSlice(); - seen.add(reader.next()); - try { - ImmutableObject o = reader.next(); - assertWithMessage("Unexpected element: %s", o).fail(); - } catch (NoSuchElementException expected) { - } - } - assertThat(seen).containsExactlyElementsIn(historyEntries); - } - - @Test - void testSuccess_childEntityReader_survivesAcrossSerialization() throws Exception { - setupResources(); - Set seen = new HashSet<>(); - InputReader reader = - EppResourceInputs.createChildEntityInput( - ImmutableSet.of(EppResource.class), - ImmutableSet.>of( - HistoryEntry.class, BillingEvent.OneTime.class, BillingEvent.Recurring.class)) - .createReaders() - .get(0); - reader.beginShard(); - reader.beginSlice(); - seen.add(reader.next()); - seen.add(reader.next()); - reader.endSlice(); - InputReader deserializedReader = serializeAndDeserialize(reader); - deserializedReader.beginSlice(); - seen.add(deserializedReader.next()); - seen.add(deserializedReader.next()); - assertThat(seen) - .containsExactly( - domainHistoryEntryA.asHistoryEntry(), - contactHistoryEntry.asHistoryEntry(), - oneTimeA, - recurringA); - assertThrows(NoSuchElementException.class, deserializedReader::next); - } -} diff --git a/core/src/test/java/google/registry/mapreduce/inputs/CommitLogManifestInputTest.java b/core/src/test/java/google/registry/mapreduce/inputs/CommitLogManifestInputTest.java deleted file mode 100644 index a906934d8..000000000 --- a/core/src/test/java/google/registry/mapreduce/inputs/CommitLogManifestInputTest.java +++ /dev/null @@ -1,138 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.mapreduce.inputs; - -import static com.google.common.truth.Truth.assertThat; -import static com.google.common.truth.Truth.assertWithMessage; - -import com.google.appengine.tools.mapreduce.Input; -import com.google.appengine.tools.mapreduce.InputReader; -import com.googlecode.objectify.Key; -import google.registry.model.ofy.CommitLogBucket; -import google.registry.model.ofy.CommitLogManifest; -import google.registry.testing.AppEngineExtension; -import google.registry.testing.DatabaseHelper; -import google.registry.testing.TmOverrideExtension; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.NoSuchElementException; -import java.util.Set; -import org.joda.time.DateTime; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Unit tests for {@link CommitLogManifestInput}. */ -final class CommitLogManifestInputTest { - - private static final DateTime DATE_TIME_OLD = DateTime.parse("2015-12-19T12:00Z"); - private static final DateTime DATE_TIME_OLD2 = DateTime.parse("2016-12-19T11:59Z"); - - private static final DateTime DATE_TIME_THRESHOLD = DateTime.parse("2016-12-19T12:00Z"); - - private static final DateTime DATE_TIME_NEW = DateTime.parse("2016-12-19T12:01Z"); - private static final DateTime DATE_TIME_NEW2 = DateTime.parse("2017-12-19T12:00Z"); - - @RegisterExtension - @Order(Order.DEFAULT - 1) - TmOverrideExtension tmOverrideExtension = TmOverrideExtension.withOfy(); - - @RegisterExtension - final AppEngineExtension appEngine = - AppEngineExtension.builder().withDatastoreAndCloudSql().build(); - - @Test - void testInputOlderThan_allFound() throws Exception { - Set> created = new HashSet<>(); - for (int i = 1; i <= 3; i++) { - created.add(createManifest(CommitLogBucket.getBucketKey(i), DATE_TIME_OLD)); - } - List> seen = new ArrayList<>(); - Input> input = new CommitLogManifestInput(DATE_TIME_THRESHOLD); - for (InputReader> reader : input.createReaders()) { - reader.beginShard(); - reader.beginSlice(); - seen.add(reader.next()); - try { - Key key = reader.next(); - assertWithMessage("Unexpected element: %s", key).fail(); - } catch (NoSuchElementException expected) { - } - } - assertThat(seen).containsExactlyElementsIn(created); - } - - @Test - void testInputOlderThan_skipsNew() throws Exception { - Set> old = new HashSet<>(); - for (int i = 1; i <= 3; i++) { - createManifest(CommitLogBucket.getBucketKey(i), DATE_TIME_NEW); - createManifest(CommitLogBucket.getBucketKey(i), DATE_TIME_NEW2); - old.add(createManifest(CommitLogBucket.getBucketKey(i), DATE_TIME_OLD)); - old.add(createManifest(CommitLogBucket.getBucketKey(i), DATE_TIME_OLD2)); - } - List> seen = new ArrayList<>(); - Input> input = new CommitLogManifestInput(DATE_TIME_THRESHOLD); - for (InputReader> reader : input.createReaders()) { - reader.beginShard(); - reader.beginSlice(); - try { - Key key = null; - for (int i = 0; i < 10; i++) { - key = reader.next(); - seen.add(key); - } - assertWithMessage("Unexpected element: %s", key).fail(); - } catch (NoSuchElementException expected) { - } - } - assertThat(seen).containsExactlyElementsIn(old); - } - - @Test - void testInputAll() throws Exception { - Set> created = new HashSet<>(); - for (int i = 1; i <= 3; i++) { - created.add(createManifest(CommitLogBucket.getBucketKey(i), DATE_TIME_NEW)); - created.add(createManifest(CommitLogBucket.getBucketKey(i), DATE_TIME_NEW2)); - created.add(createManifest(CommitLogBucket.getBucketKey(i), DATE_TIME_OLD)); - created.add(createManifest(CommitLogBucket.getBucketKey(i), DATE_TIME_OLD2)); - } - List> seen = new ArrayList<>(); - Input> input = new CommitLogManifestInput(); - for (InputReader> reader : input.createReaders()) { - reader.beginShard(); - reader.beginSlice(); - try { - Key key = null; - for (int i = 0; i < 10; i++) { - key = reader.next(); - seen.add(key); - } - assertWithMessage("Unexpected element: %s", key).fail(); - } catch (NoSuchElementException expected) { - } - } - assertThat(seen).containsExactlyElementsIn(created); - } - - private static Key createManifest( - Key parent, DateTime dateTime) { - CommitLogManifest commitLogManifest = CommitLogManifest.create(parent, dateTime, null); - DatabaseHelper.persistResource(commitLogManifest); - return Key.create(commitLogManifest); - } -} diff --git a/core/src/test/java/google/registry/mapreduce/inputs/EppResourceInputsTest.java b/core/src/test/java/google/registry/mapreduce/inputs/EppResourceInputsTest.java deleted file mode 100644 index d64ccc200..000000000 --- a/core/src/test/java/google/registry/mapreduce/inputs/EppResourceInputsTest.java +++ /dev/null @@ -1,258 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.mapreduce.inputs; - -import static com.google.common.truth.Truth.assertThat; -import static com.google.common.truth.Truth.assertWithMessage; -import static google.registry.mapreduce.inputs.EppResourceInputs.createEntityInput; -import static google.registry.mapreduce.inputs.EppResourceInputs.createKeyInput; -import static google.registry.model.index.EppResourceIndexBucket.getBucketKey; -import static google.registry.testing.DatabaseHelper.createTld; -import static google.registry.testing.DatabaseHelper.newContactResource; -import static google.registry.testing.DatabaseHelper.newDomainBase; -import static google.registry.testing.DatabaseHelper.newHostResource; -import static google.registry.testing.DatabaseHelper.persistActiveContact; -import static google.registry.testing.DatabaseHelper.persistEppResourceInFirstBucket; -import static google.registry.testing.DatabaseHelper.persistResource; -import static google.registry.testing.DatabaseHelper.persistSimpleResource; -import static org.junit.jupiter.api.Assertions.assertThrows; - -import com.google.appengine.tools.mapreduce.InputReader; -import com.googlecode.objectify.Key; -import google.registry.model.EppResource; -import google.registry.model.contact.ContactResource; -import google.registry.model.domain.DomainBase; -import google.registry.model.host.HostResource; -import google.registry.model.index.EppResourceIndex; -import google.registry.testing.AppEngineExtension; -import google.registry.testing.TmOverrideExtension; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.util.HashSet; -import java.util.NoSuchElementException; -import java.util.Set; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Tests {@link EppResourceInputs} */ -class EppResourceInputsTest { - - private static final double EPSILON = 0.0001; - - @RegisterExtension - @Order(Order.DEFAULT - 1) - TmOverrideExtension tmOverrideExtension = TmOverrideExtension.withOfy(); - - @RegisterExtension - final AppEngineExtension appEngine = - AppEngineExtension.builder().withDatastoreAndCloudSql().build(); - - @SuppressWarnings("unchecked") - private T serializeAndDeserialize(T obj) throws Exception { - try (ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); - ObjectOutputStream objectOut = new ObjectOutputStream(byteOut)) { - objectOut.writeObject(obj); - try (ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray()); - ObjectInputStream objectIn = new ObjectInputStream(byteIn)) { - return (T) objectIn.readObject(); - } - } - } - - @Test - void testSuccess_keyInputType_polymorphicBaseType() { - createKeyInput(EppResource.class); - } - - @Test - void testFailure_keyInputType_noInheritanceBetweenTypes_eppResource() { - IllegalArgumentException thrown = - assertThrows( - IllegalArgumentException.class, - () -> createKeyInput(EppResource.class, DomainBase.class)); - assertThat(thrown).hasMessageThat().contains("inheritance"); - } - - @Test - void testFailure_entityInputType_noInheritanceBetweenTypes_eppResource() { - IllegalArgumentException thrown = - assertThrows( - IllegalArgumentException.class, - () -> createEntityInput(EppResource.class, DomainBase.class)); - assertThat(thrown).hasMessageThat().contains("inheritance"); - } - - @Test - void testFailure_entityInputType_noInheritanceBetweenTypes_subclasses() { - IllegalArgumentException thrown = - assertThrows( - IllegalArgumentException.class, - () -> createEntityInput(EppResource.class, ContactResource.class)); - assertThat(thrown).hasMessageThat().contains("inheritance"); - } - - @Test - void testReaderCountMatchesBucketCount() throws Exception { - assertThat(createKeyInput(DomainBase.class).createReaders()).hasSize(3); - assertThat(createEntityInput(DomainBase.class).createReaders()).hasSize(3); - } - - @Test - void testKeyInput_oneReaderPerBucket() throws Exception { - createTld("tld"); - Set> domains = new HashSet<>(); - for (int i = 1; i <= 3; i++) { - Key key = Key.create(newDomainBase(i + ".tld")); - domains.add(key); - persistResource(EppResourceIndex.create(getBucketKey(i), key)); - } - Set> seen = new HashSet<>(); - for (InputReader> reader : createKeyInput(DomainBase.class).createReaders()) { - reader.beginShard(); - reader.beginSlice(); - seen.add(reader.next()); - try { - Key key = reader.next(); - assertWithMessage("Unexpected element: %s", key).fail(); - } catch (NoSuchElementException expected) { - } - } - assertThat(seen).containsExactlyElementsIn(domains); - } - - @Test - void testEntityInput_oneReaderPerBucket() throws Exception { - createTld("tld"); - Set domains = new HashSet<>(); - for (int i = 1; i <= 3; i++) { - // Persist the domain as a simple resource so that it doesn't automatically get an ERI. - DomainBase domain = persistSimpleResource(newDomainBase(i + ".tld")); - domains.add(domain); - persistResource(EppResourceIndex.create(getBucketKey(i), Key.create(domain))); - } - Set seen = new HashSet<>(); - for (InputReader reader : createEntityInput(DomainBase.class).createReaders()) { - reader.beginShard(); - reader.beginSlice(); - seen.add(reader.next()); - try { - DomainBase domain = reader.next(); - assertWithMessage("Unexpected element: %s", domain).fail(); - } catch (NoSuchElementException expected) { - } - } - assertThat(seen).containsExactlyElementsIn(domains); - } - - @Test - void testSuccess_keyReader_survivesAcrossSerialization() throws Exception { - createTld("tld"); - DomainBase domainA = persistEppResourceInFirstBucket(newDomainBase("a.tld")); - DomainBase domainB = persistEppResourceInFirstBucket(newDomainBase("b.tld")); - // Should be ignored. We'll know if it isn't because the progress counts will be off. - persistActiveContact("contact"); - Set> seen = new HashSet<>(); - InputReader> reader = createKeyInput(DomainBase.class).createReaders().get(0); - reader.beginShard(); - reader.beginSlice(); - assertThat(reader.getProgress()).isWithin(EPSILON).of(0); - seen.add(reader.next()); - assertThat(reader.getProgress()).isWithin(EPSILON).of(0.5); - reader.endSlice(); - reader = serializeAndDeserialize(reader); - reader.beginSlice(); - assertThat(reader.getProgress()).isWithin(EPSILON).of(0.5); - seen.add(reader.next()); - assertThat(reader.getProgress()).isWithin(EPSILON).of(1); - assertThat(seen).containsExactly(Key.create(domainA), Key.create(domainB)); - assertThrows(NoSuchElementException.class, reader::next); - } - - @Test - void testSuccess_entityReader_survivesAcrossSerialization() throws Exception { - createTld("tld"); - DomainBase domainA = persistEppResourceInFirstBucket(newDomainBase("a.tld")); - DomainBase domainB = persistEppResourceInFirstBucket(newDomainBase("b.tld")); - // Should be ignored. We'll know if it isn't because the progress counts will be off. - persistActiveContact("contact"); - Set seen = new HashSet<>(); - InputReader reader = createEntityInput(DomainBase.class).createReaders().get(0); - reader.beginShard(); - reader.beginSlice(); - assertThat(reader.getProgress()).isWithin(EPSILON).of(0); - seen.add(reader.next()); - assertThat(reader.getProgress()).isWithin(EPSILON).of(0.5); - reader.endSlice(); - InputReader deserializedReader = serializeAndDeserialize(reader); - deserializedReader.beginSlice(); - assertThat(deserializedReader.getProgress()).isWithin(EPSILON).of(0.5); - seen.add(deserializedReader.next()); - assertThat(deserializedReader.getProgress()).isWithin(EPSILON).of(1); - deserializedReader.endSlice(); - deserializedReader.endShard(); - assertThat(seen).containsExactly(domainA, domainB); - assertThrows(NoSuchElementException.class, deserializedReader::next); - } - - @Test - void testSuccess_entityReader_filtersOnMultipleTypes() throws Exception { - createTld("tld"); - DomainBase domain = persistEppResourceInFirstBucket(newDomainBase("a.tld")); - HostResource host = persistEppResourceInFirstBucket(newHostResource("ns1.example.com")); - persistEppResourceInFirstBucket(newContactResource("contact")); - Set seen = new HashSet<>(); - InputReader reader = - EppResourceInputs.createEntityInput(DomainBase.class, HostResource.class) - .createReaders() - .get(0); - reader.beginShard(); - reader.beginSlice(); - assertThat(reader.getProgress()).isWithin(EPSILON).of(0); - seen.add(reader.next()); - assertThat(reader.getProgress()).isWithin(EPSILON).of(0.5); - seen.add(reader.next()); - assertThat(reader.getProgress()).isWithin(EPSILON).of(1.0); - assertThat(seen).containsExactly(domain, host); - assertThrows(NoSuchElementException.class, reader::next); - } - - @Test - void testSuccess_entityReader_noFilteringWhenUsingEppResource() throws Exception { - createTld("tld"); - ContactResource contact = persistEppResourceInFirstBucket(newContactResource("contact")); - // Specify the contact since persistActiveDomain() creates a hidden one. - DomainBase domain1 = persistEppResourceInFirstBucket(newDomainBase("a.tld", contact)); - DomainBase domain2 = persistEppResourceInFirstBucket(newDomainBase("b.tld", contact)); - HostResource host = persistEppResourceInFirstBucket(newHostResource("ns1.example.com")); - Set seen = new HashSet<>(); - InputReader reader = createEntityInput(EppResource.class).createReaders().get(0); - reader.beginShard(); - reader.beginSlice(); - assertThat(reader.getProgress()).isWithin(EPSILON).of(0); - seen.add(reader.next()); - assertThat(reader.getProgress()).isWithin(EPSILON).of(0.25); - seen.add(reader.next()); - assertThat(reader.getProgress()).isWithin(EPSILON).of(0.5); - seen.add(reader.next()); - assertThat(reader.getProgress()).isWithin(EPSILON).of(0.75); - seen.add(reader.next()); - assertThat(reader.getProgress()).isWithin(EPSILON).of(1.0); - assertThat(seen).containsExactly(domain1, domain2, host, contact); - assertThrows(NoSuchElementException.class, reader::next); - } -} diff --git a/core/src/test/java/google/registry/model/EppResourceUtilsTest.java b/core/src/test/java/google/registry/model/EppResourceUtilsTest.java index 019c8e2b9..5db309976 100644 --- a/core/src/test/java/google/registry/model/EppResourceUtilsTest.java +++ b/core/src/test/java/google/registry/model/EppResourceUtilsTest.java @@ -18,9 +18,7 @@ import static com.google.common.truth.Truth.assertThat; import static google.registry.model.EppResourceUtils.loadAtPointInTime; import static google.registry.testing.DatabaseHelper.createTld; import static google.registry.testing.DatabaseHelper.newHostResource; -import static google.registry.testing.DatabaseHelper.persistNewRegistrars; import static google.registry.testing.DatabaseHelper.persistResource; -import static google.registry.testing.DatabaseHelper.persistResourceWithCommitLog; import static google.registry.util.DateTimeUtils.START_OF_TIME; import static org.joda.time.DateTimeZone.UTC; @@ -31,7 +29,6 @@ import google.registry.testing.DualDatabaseTest; import google.registry.testing.FakeClock; import google.registry.testing.InjectExtension; import google.registry.testing.TestOfyAndSql; -import google.registry.testing.TestOfyOnly; import org.joda.time.DateTime; import org.joda.time.Duration; import org.junit.jupiter.api.BeforeEach; @@ -80,107 +77,4 @@ class EppResourceUtilsTest { .build()); assertThat(loadAtPointInTime(host, clock.nowUtc())).isEqualTo(host); } - - @TestOfyOnly - void testLoadAtPointInTime_usingIntactRevisionHistory_returnsMutationValue() { - persistNewRegistrars("OLD", "NEW"); - clock.advanceOneMilli(); - // Save resource with a commit log that we can read in later as a revisions map value. - HostResource oldHost = - persistResourceWithCommitLog( - newHostResource("ns1.cat.tld") - .asBuilder() - .setCreationTimeForTest(START_OF_TIME) - .setPersistedCurrentSponsorRegistrarId("OLD") - .build()); - // Advance a day so that the next created revision entry doesn't overwrite the existing one. - clock.advanceBy(Duration.standardDays(1)); - // Overwrite the current host with one that has different data. - HostResource currentHost = - persistResource(oldHost.asBuilder().setPersistedCurrentSponsorRegistrarId("NEW").build()); - // Load at the point in time just before the latest update; the floor entry of the revisions - // map should point to the manifest for the first save, so we should get the old host. - assertThat(loadAtPointInTime(currentHost, clock.nowUtc().minusMillis(1))).isEqualTo(oldHost); - } - - @TestOfyOnly - void testLoadAtPointInTime_brokenRevisionHistory_returnsResourceAsIs() { - // Don't save a commit log since we want to test the handling of a broken revisions key. - HostResource oldHost = - persistResource( - newHostResource("ns1.cat.tld") - .asBuilder() - .setCreationTimeForTest(START_OF_TIME) - .setPersistedCurrentSponsorRegistrarId("OLD") - .build()); - // Advance a day so that the next created revision entry doesn't overwrite the existing one. - clock.advanceBy(Duration.standardDays(1)); - // Overwrite the existing resource to force revisions map use. - HostResource host = - persistResource(oldHost.asBuilder().setPersistedCurrentSponsorRegistrarId("NEW").build()); - // Load at the point in time just before the latest update; the old host is not recoverable - // (revisions map link is broken, and guessing using the oldest revision map entry finds the - // same broken link), so just returns the current host. - assertThat(loadAtPointInTime(host, clock.nowUtc().minusMillis(1))).isEqualTo(host); - } - - @TestOfyOnly - void testLoadAtPointInTime_fallback_returnsMutationValueForOldestRevision() { - clock.advanceOneMilli(); - // Save a commit log that we can fall back to. - HostResource oldHost = - persistResourceWithCommitLog( - newHostResource("ns1.cat.tld") - .asBuilder() - .setCreationTimeForTest(START_OF_TIME) - .setPersistedCurrentSponsorRegistrarId("OLD") - .build()); - // Advance a day so that the next created revision entry doesn't overwrite the existing one. - clock.advanceBy(Duration.standardDays(1)); - // Overwrite the current host with one that has different data. - HostResource currentHost = - persistResource(oldHost.asBuilder().setPersistedCurrentSponsorRegistrarId("NEW").build()); - // Load at the point in time before the first update; there will be no floor entry for the - // revisions map, so give up and return the oldest revision entry's mutation value (the old host - // data). - assertThat(loadAtPointInTime(currentHost, clock.nowUtc().minusDays(2))).isEqualTo(oldHost); - } - - @TestOfyOnly - void testLoadAtPointInTime_ultimateFallback_onlyOneRevision_returnsCurrentResource() { - clock.advanceOneMilli(); - // Don't save a commit log; we want to test that we load from the current resource. - HostResource host = - persistResource( - newHostResource("ns1.cat.tld") - .asBuilder() - .setCreationTimeForTest(START_OF_TIME) - .setPersistedCurrentSponsorRegistrarId("OLD") - .build()); - // Load at the point in time before the first save; there will be no floor entry for the - // revisions map. Since the oldest revision entry is the only (i.e. current) revision, return - // the resource. - assertThat(loadAtPointInTime(host, clock.nowUtc().minusMillis(1))).isEqualTo(host); - } - - @TestOfyOnly - void testLoadAtPointInTime_moreThanThirtyDaysInPast_historyIsPurged() { - clock.advanceOneMilli(); - HostResource host = - persistResourceWithCommitLog(newHostResource("ns1.example.net")); - assertThat(host.getRevisions()).hasSize(1); - clock.advanceBy(Duration.standardDays(31)); - host = persistResourceWithCommitLog(host); - assertThat(host.getRevisions()).hasSize(2); - clock.advanceBy(Duration.standardDays(31)); - host = persistResourceWithCommitLog(host); - assertThat(host.getRevisions()).hasSize(2); - // Even though there is no revision, make a best effort guess to use the oldest revision. - assertThat( - loadAtPointInTime(host, clock.nowUtc().minus(Duration.standardDays(32))) - - .getUpdateTimestamp() - .getTimestamp()) - .isEqualTo(host.getRevisions().firstKey()); - } } 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 294ce7a3e..9292ae002 100644 --- a/core/src/test/java/google/registry/model/common/ClassPathManagerTest.java +++ b/core/src/test/java/google/registry/model/common/ClassPathManagerTest.java @@ -31,11 +31,6 @@ import google.registry.model.index.EppResourceIndexBucket; import google.registry.model.index.ForeignKeyIndex.ForeignKeyContactIndex; import google.registry.model.index.ForeignKeyIndex.ForeignKeyDomainIndex; import google.registry.model.index.ForeignKeyIndex.ForeignKeyHostIndex; -import google.registry.model.ofy.CommitLogBucket; -import google.registry.model.ofy.CommitLogCheckpoint; -import google.registry.model.ofy.CommitLogCheckpointRoot; -import google.registry.model.ofy.CommitLogManifest; -import google.registry.model.ofy.CommitLogMutation; import google.registry.model.poll.PollMessage; import google.registry.model.rde.RdeRevision; import google.registry.model.registrar.Registrar; @@ -65,9 +60,6 @@ public class ClassPathManagerTest { assertThat(ClassPathManager.getClass("ForeignKeyContactIndex")) .isEqualTo(ForeignKeyContactIndex.class); assertThat(ClassPathManager.getClass("Modification")).isEqualTo(Modification.class); - assertThat(ClassPathManager.getClass("CommitLogCheckpoint")) - .isEqualTo(CommitLogCheckpoint.class); - assertThat(ClassPathManager.getClass("CommitLogManifest")).isEqualTo(CommitLogManifest.class); assertThat(ClassPathManager.getClass("AllocationToken")).isEqualTo(AllocationToken.class); assertThat(ClassPathManager.getClass("OneTime")).isEqualTo(OneTime.class); assertThat(ClassPathManager.getClass("Cursor")).isEqualTo(Cursor.class); @@ -79,10 +71,7 @@ public class ClassPathManagerTest { assertThat(ClassPathManager.getClass("ContactResource")).isEqualTo(ContactResource.class); assertThat(ClassPathManager.getClass("Cancellation")).isEqualTo(Cancellation.class); assertThat(ClassPathManager.getClass("RegistrarContact")).isEqualTo(RegistrarContact.class); - assertThat(ClassPathManager.getClass("CommitLogBucket")).isEqualTo(CommitLogBucket.class); assertThat(ClassPathManager.getClass("LastSqlTransaction")).isEqualTo(LastSqlTransaction.class); - assertThat(ClassPathManager.getClass("CommitLogCheckpointRoot")) - .isEqualTo(CommitLogCheckpointRoot.class); assertThat(ClassPathManager.getClass("GaeUserIdConverter")).isEqualTo(GaeUserIdConverter.class); assertThat(ClassPathManager.getClass("EppResourceIndexBucket")) .isEqualTo(EppResourceIndexBucket.class); @@ -90,7 +79,6 @@ public class ClassPathManagerTest { assertThat(ClassPathManager.getClass("EntityGroupRoot")).isEqualTo(EntityGroupRoot.class); assertThat(ClassPathManager.getClass("Lock")).isEqualTo(Lock.class); assertThat(ClassPathManager.getClass("DomainBase")).isEqualTo(DomainBase.class); - assertThat(ClassPathManager.getClass("CommitLogMutation")).isEqualTo(CommitLogMutation.class); assertThat(ClassPathManager.getClass("HistoryEntry")).isEqualTo(HistoryEntry.class); assertThat(ClassPathManager.getClass("PollMessage")).isEqualTo(PollMessage.class); assertThat(ClassPathManager.getClass("ForeignKeyHostIndex")) @@ -132,10 +120,6 @@ public class ClassPathManagerTest { assertThat(ClassPathManager.getClassName(ForeignKeyContactIndex.class)) .isEqualTo("ForeignKeyContactIndex"); assertThat(ClassPathManager.getClassName(Modification.class)).isEqualTo("Modification"); - assertThat(ClassPathManager.getClassName(CommitLogCheckpoint.class)) - .isEqualTo("CommitLogCheckpoint"); - assertThat(ClassPathManager.getClassName(CommitLogManifest.class)) - .isEqualTo("CommitLogManifest"); assertThat(ClassPathManager.getClassName(AllocationToken.class)).isEqualTo("AllocationToken"); assertThat(ClassPathManager.getClassName(OneTime.class)).isEqualTo("OneTime"); assertThat(ClassPathManager.getClassName(Cursor.class)).isEqualTo("Cursor"); @@ -147,11 +131,8 @@ public class ClassPathManagerTest { assertThat(ClassPathManager.getClassName(ContactResource.class)).isEqualTo("ContactResource"); assertThat(ClassPathManager.getClassName(Cancellation.class)).isEqualTo("Cancellation"); assertThat(ClassPathManager.getClassName(RegistrarContact.class)).isEqualTo("RegistrarContact"); - assertThat(ClassPathManager.getClassName(CommitLogBucket.class)).isEqualTo("CommitLogBucket"); assertThat(ClassPathManager.getClassName(LastSqlTransaction.class)) .isEqualTo("LastSqlTransaction"); - assertThat(ClassPathManager.getClassName(CommitLogCheckpointRoot.class)) - .isEqualTo("CommitLogCheckpointRoot"); assertThat(ClassPathManager.getClassName(GaeUserIdConverter.class)) .isEqualTo("GaeUserIdConverter"); assertThat(ClassPathManager.getClassName(EppResourceIndexBucket.class)) @@ -160,8 +141,6 @@ public class ClassPathManagerTest { assertThat(ClassPathManager.getClassName(EntityGroupRoot.class)).isEqualTo("EntityGroupRoot"); assertThat(ClassPathManager.getClassName(Lock.class)).isEqualTo("Lock"); assertThat(ClassPathManager.getClassName(DomainBase.class)).isEqualTo("DomainBase"); - assertThat(ClassPathManager.getClassName(CommitLogMutation.class)) - .isEqualTo("CommitLogMutation"); assertThat(ClassPathManager.getClassName(HistoryEntry.class)).isEqualTo("HistoryEntry"); assertThat(ClassPathManager.getClassName(PollMessage.class)).isEqualTo("PollMessage"); assertThat(ClassPathManager.getClassName(ForeignKeyHostIndex.class)) diff --git a/core/src/test/java/google/registry/model/index/EppResourceIndexTest.java b/core/src/test/java/google/registry/model/index/EppResourceIndexTest.java deleted file mode 100644 index 9b75c1a4f..000000000 --- a/core/src/test/java/google/registry/model/index/EppResourceIndexTest.java +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.model.index; - -import static com.google.common.truth.Truth.assertThat; -import static google.registry.config.RegistryConfig.getEppResourceIndexBucketCount; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.testing.DatabaseHelper.createTld; -import static google.registry.testing.DatabaseHelper.persistActiveContact; -import static google.registry.testing.DatabaseHelper.persistResource; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Iterables; -import com.googlecode.objectify.Key; -import google.registry.model.EntityTestCase; -import google.registry.model.contact.ContactResource; -import google.registry.testing.TmOverrideExtension; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Unit tests for {@link EppResourceIndex}. */ -class EppResourceIndexTest extends EntityTestCase { - - @RegisterExtension - @Order(Order.DEFAULT - 1) - TmOverrideExtension tmOverrideExtension = TmOverrideExtension.withOfy(); - - private ContactResource contact; - - @BeforeEach - void setUp() { - createTld("tld"); - // The DatabaseHelper here creates the EppResourceIndex for us. - contact = persistActiveContact("abcd1357"); - } - - @Test - void testPersistence() { - EppResourceIndex loadedIndex = Iterables.getOnlyElement(getEppResourceIndexObjects()); - assertThat(auditedOfy().load().key(loadedIndex.reference).now()).isEqualTo(contact); - } - - @Test - void testIndexing() throws Exception { - verifyDatastoreIndexing(Iterables.getOnlyElement(getEppResourceIndexObjects()), "kind"); - } - - @Test - void testIdempotentOnUpdate() { - contact = persistResource(contact.asBuilder().setEmailAddress("abc@def.fake").build()); - EppResourceIndex loadedIndex = Iterables.getOnlyElement(getEppResourceIndexObjects()); - assertThat(auditedOfy().load().key(loadedIndex.reference).now()).isEqualTo(contact); - } - - /** - * Returns all EppResourceIndex objects across all buckets. - */ - private static ImmutableList getEppResourceIndexObjects() { - ImmutableList.Builder indexEntities = new ImmutableList.Builder<>(); - for (int i = 0; i < getEppResourceIndexBucketCount(); i++) { - indexEntities.addAll( - auditedOfy() - .load() - .type(EppResourceIndex.class) - .ancestor(Key.create(EppResourceIndexBucket.class, i + 1))); - } - return indexEntities.build(); - } -} diff --git a/core/src/test/java/google/registry/model/ofy/CommitLogBucketTest.java b/core/src/test/java/google/registry/model/ofy/CommitLogBucketTest.java deleted file mode 100644 index 9c3026d98..000000000 --- a/core/src/test/java/google/registry/model/ofy/CommitLogBucketTest.java +++ /dev/null @@ -1,117 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.model.ofy; - -import static com.google.common.truth.Truth.assertThat; -import static google.registry.model.ofy.CommitLogBucket.getBucketKey; -import static google.registry.model.ofy.CommitLogBucket.loadAllBuckets; -import static google.registry.model.ofy.CommitLogBucket.loadBucket; -import static google.registry.testing.DatabaseHelper.persistResource; -import static google.registry.util.DateTimeUtils.END_OF_TIME; -import static org.junit.jupiter.api.Assertions.assertThrows; - -import com.google.common.base.Suppliers; -import com.google.common.collect.ImmutableSet; -import com.googlecode.objectify.annotation.Cache; -import google.registry.testing.AppEngineExtension; -import google.registry.testing.InjectExtension; -import google.registry.testing.TmOverrideExtension; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Tests for {@link CommitLogBucket}. */ -public class CommitLogBucketTest { - - @RegisterExtension - @Order(Order.DEFAULT - 1) - TmOverrideExtension tmOverrideExtension = TmOverrideExtension.withOfy(); - - @RegisterExtension - public final AppEngineExtension appEngine = - AppEngineExtension.builder().withDatastoreAndCloudSql().build(); - - @RegisterExtension public final InjectExtension inject = new InjectExtension(); - private CommitLogBucket bucket; - - @BeforeEach - void before() { - // Save the bucket with some non-default properties set so that we can distinguish a correct - // load from one that returns a newly created bucket instance. - bucket = persistResource( - new CommitLogBucket.Builder() - .setLastWrittenTime(END_OF_TIME) - .setBucketNum(1) - .build()); - } - - @Test - void test_getBucketKey_createsBucketKeyInDefaultNamespace() { - // Key.getNamespace() returns the empty string for the default namespace, not null. - assertThat(getBucketKey(1).getRaw().getNamespace()).isEmpty(); - } - - @Test - void test_getBucketKey_bucketNumberTooLow_throws() { - IllegalArgumentException thrown = - assertThrows(IllegalArgumentException.class, () -> getBucketKey(0)); - assertThat(thrown).hasMessageThat().contains("0 not in ["); - } - - @Test - void test_getBucketKey_bucketNumberTooHigh_throws() { - IllegalArgumentException thrown = - assertThrows(IllegalArgumentException.class, () -> getBucketKey(11)); - assertThat(thrown).hasMessageThat().contains("11 not in ["); - } - - @Test - void test_getArbitraryBucketId_withSupplierOverridden() { - inject.setStaticField( - CommitLogBucket.class, "bucketIdSupplier", Suppliers.ofInstance(4)); // xkcd.com/221 - // Try multiple times just in case it's actually still random. If it is, the probability of - // this test passing is googol^-1, so I think we're pretty safe. - for (int i = 0; i < 100; i++) { - assertThat(CommitLogBucket.getArbitraryBucketId()).isEqualTo(4); - } - } - - @Test - void test_loadBucket_loadsTheBucket() { - assertThat(loadBucket(getBucketKey(1))).isEqualTo(bucket); - } - - @Test - void test_loadBucket_forNonexistentBucket_returnsNewBucket() { - assertThat(loadBucket(getBucketKey(3))).isEqualTo( - new CommitLogBucket.Builder().setBucketNum(3).build()); - } - - @Test - void test_loadAllBuckets_loadsExistingBuckets_orNewOnesIfNonexistent() { - ImmutableSet buckets = loadAllBuckets(); - assertThat(buckets).hasSize(3); - assertThat(buckets).contains(bucket); - assertThat(buckets).contains(new CommitLogBucket.Builder().setBucketNum(2).build()); - assertThat(buckets).contains(new CommitLogBucket.Builder().setBucketNum(3).build()); - } - - @Test - void test_noCacheAnnotation() { - // Don't ever put @Cache on CommitLogBucket; it could mess up the checkpointing algorithm. - assertThat(CommitLogBucket.class.isAnnotationPresent(Cache.class)).isFalse(); - } -} diff --git a/core/src/test/java/google/registry/model/ofy/CommitLogCheckpointTest.java b/core/src/test/java/google/registry/model/ofy/CommitLogCheckpointTest.java deleted file mode 100644 index 26fc40f86..000000000 --- a/core/src/test/java/google/registry/model/ofy/CommitLogCheckpointTest.java +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.model.ofy; - -import static com.google.common.truth.Truth.assertThat; -import static google.registry.util.DateTimeUtils.START_OF_TIME; -import static org.joda.time.DateTimeZone.UTC; -import static org.junit.jupiter.api.Assertions.assertThrows; - -import com.google.common.collect.ImmutableMap; -import google.registry.testing.AppEngineExtension; -import org.joda.time.DateTime; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Tests for {@link CommitLogCheckpoint}. */ -public class CommitLogCheckpointTest { - - @RegisterExtension - public final AppEngineExtension appEngine = - AppEngineExtension.builder().withDatastoreAndCloudSql().build(); - - private static final DateTime T1 = START_OF_TIME; - private static final DateTime T2 = START_OF_TIME.plusMillis(1); - private static final DateTime T3 = START_OF_TIME.plusMillis(2); - - @Test - void test_getCheckpointTime() { - DateTime now = DateTime.now(UTC); - CommitLogCheckpoint checkpoint = - CommitLogCheckpoint.create(now, ImmutableMap.of(1, T1, 2, T2, 3, T3)); - assertThat(checkpoint.getCheckpointTime()).isEqualTo(now); - } - - @Test - void test_getBucketTimestamps() { - CommitLogCheckpoint checkpoint = - CommitLogCheckpoint.create(DateTime.now(UTC), ImmutableMap.of(1, T1, 2, T2, 3, T3)); - assertThat(checkpoint.getBucketTimestamps()).containsExactly(1, T1, 2, T2, 3, T3); - } - - @Test - void test_create_notEnoughBucketTimestamps_throws() { - IllegalArgumentException thrown = - assertThrows( - IllegalArgumentException.class, - () -> CommitLogCheckpoint.create(DateTime.now(UTC), ImmutableMap.of(1, T1, 2, T2))); - assertThat(thrown).hasMessageThat().contains("Bucket ids are incorrect"); - } - - @Test - void test_create_tooManyBucketTimestamps_throws() { - IllegalArgumentException thrown = - assertThrows( - IllegalArgumentException.class, - () -> - CommitLogCheckpoint.create( - DateTime.now(UTC), ImmutableMap.of(1, T1, 2, T2, 3, T3, 4, T1))); - assertThat(thrown).hasMessageThat().contains("Bucket ids are incorrect"); - } - - @Test - void test_create_wrongBucketIds_throws() { - IllegalArgumentException thrown = - assertThrows( - IllegalArgumentException.class, - () -> - CommitLogCheckpoint.create( - DateTime.now(UTC), ImmutableMap.of(0, T1, 1, T2, 2, T3))); - assertThat(thrown).hasMessageThat().contains("Bucket ids are incorrect"); - } - - @Test - void test_create_wrongBucketIdOrder_throws() { - IllegalArgumentException thrown = - assertThrows( - IllegalArgumentException.class, - () -> - CommitLogCheckpoint.create( - DateTime.now(UTC), ImmutableMap.of(2, T2, 1, T1, 3, T3))); - assertThat(thrown).hasMessageThat().contains("Bucket ids are incorrect"); - } -} diff --git a/core/src/test/java/google/registry/model/ofy/CommitLogMutationTest.java b/core/src/test/java/google/registry/model/ofy/CommitLogMutationTest.java deleted file mode 100644 index 23b8f475d..000000000 --- a/core/src/test/java/google/registry/model/ofy/CommitLogMutationTest.java +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.model.ofy; - -import static com.google.common.truth.Truth.assertThat; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.testing.DatabaseHelper.createTld; - -import com.google.appengine.api.datastore.Entity; -import com.google.appengine.api.datastore.EntityTranslator; -import com.google.appengine.api.datastore.KeyFactory; -import com.googlecode.objectify.Key; -import google.registry.model.ImmutableObject; -import google.registry.model.tld.Registry; -import google.registry.testing.AppEngineExtension; -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Tests for {@link CommitLogMutation}. */ -public class CommitLogMutationTest { - - @RegisterExtension - public final AppEngineExtension appEngine = - AppEngineExtension.builder().withDatastoreAndCloudSql().build(); - - private static final DateTime NOW = DateTime.now(DateTimeZone.UTC); - - private Key manifestKey; - private ImmutableObject someObject; - - @BeforeEach - void before() { - // Initialize this late to avoid dependency on NamespaceManager prior to AppEngineExtension. - manifestKey = CommitLogManifest.createKey(CommitLogBucket.getBucketKey(1), NOW); - createTld("tld"); - someObject = Registry.get("tld"); - } - - @Test - void test_createKey_createsKeyWithWebsafeKeystring() { - Key mutationKey = - CommitLogMutation.createKey(manifestKey, Key.create(someObject)); - assertThat(mutationKey.getParent()).isEqualTo(manifestKey); - assertThat(mutationKey.getName()) - .isEqualTo(KeyFactory.keyToString(Key.create(someObject).getRaw())); - } - - @Test - void test_create_createsExpectedMutation() { - Entity rawEntity = convertToEntityInTxn(someObject); - // Needs to be in a transaction so that registry-saving-to-entity will work. - CommitLogMutation mutation = - auditedOfy().transact(() -> CommitLogMutation.create(manifestKey, someObject)); - assertThat(Key.create(mutation)) - .isEqualTo(CommitLogMutation.createKey(manifestKey, Key.create(someObject))); - assertThat(mutation.getEntity()).isEqualTo(rawEntity); - assertThat(EntityTranslator.createFromPbBytes(mutation.getEntityProtoBytes())) - .isEqualTo(rawEntity); - } - - @Test - void test_createRaw_createsExpectedMutation() { - Entity rawEntity = convertToEntityInTxn(someObject); - CommitLogMutation mutation = CommitLogMutation.createFromRaw(manifestKey, rawEntity); - assertThat(Key.create(mutation)) - .isEqualTo(CommitLogMutation.createKey(manifestKey, Key.create(someObject))); - assertThat(mutation.getEntity()).isEqualTo(rawEntity); - assertThat(EntityTranslator.createFromPbBytes(mutation.getEntityProtoBytes())) - .isEqualTo(rawEntity); - } - - private static Entity convertToEntityInTxn(final ImmutableObject object) { - return auditedOfy().transact(() -> auditedOfy().save().toEntity(object)); - } -} diff --git a/core/src/test/java/google/registry/model/ofy/EntityWritePrioritiesTest.java b/core/src/test/java/google/registry/model/ofy/EntityWritePrioritiesTest.java deleted file mode 100644 index 578ab0e86..000000000 --- a/core/src/test/java/google/registry/model/ofy/EntityWritePrioritiesTest.java +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2020 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.model.ofy; - -import static com.google.common.truth.Truth.assertThat; - -import com.google.common.collect.ImmutableMap; -import com.googlecode.objectify.Key; -import google.registry.model.ofy.TransactionInfo.Delete; -import google.registry.model.registrar.Registrar; -import google.registry.model.reporting.HistoryEntry; -import google.registry.testing.AppEngineExtension; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -class EntityWritePrioritiesTest { - - @RegisterExtension - AppEngineExtension appEngine = - new AppEngineExtension.Builder().withDatastoreAndCloudSql().build(); - - @Test - void testGetPriority() { - // just verify that the lowest is what we expect for both save and delete and verify that the - // Registrar class is zero. - ImmutableMap, Object> actions = - ImmutableMap.of( - Key.create(HistoryEntry.class, 100), TransactionInfo.Delete.SENTINEL, - Key.create(HistoryEntry.class, 200), "fake history entry", - Key.create(Registrar.class, 300), "fake registrar"); - ImmutableMap expectedValues = - ImmutableMap.of(100L, EntityWritePriorities.DELETE_RANGE - 20, 200L, 20, 300L, 0); - - for (ImmutableMap.Entry, Object> entry : actions.entrySet()) { - assertThat( - EntityWritePriorities.getEntityPriority( - entry.getKey().getKind(), Delete.SENTINEL.equals(entry.getValue()))) - .isEqualTo(expectedValues.get(entry.getKey().getId())); - } - } -} diff --git a/core/src/test/java/google/registry/model/ofy/OfyCommitLogTest.java b/core/src/test/java/google/registry/model/ofy/OfyCommitLogTest.java deleted file mode 100644 index 062153b54..000000000 --- a/core/src/test/java/google/registry/model/ofy/OfyCommitLogTest.java +++ /dev/null @@ -1,480 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.model.ofy; - -import static com.google.appengine.api.datastore.EntityTranslator.convertToPb; -import static com.google.common.truth.Truth.assertThat; -import static google.registry.model.common.EntityGroupRoot.getCrossTldKey; -import static google.registry.model.ofy.CommitLogBucket.getBucketKey; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.persistence.transaction.TransactionManagerFactory.tm; -import static org.junit.jupiter.api.Assertions.assertThrows; - -import com.google.common.collect.ImmutableSet; -import com.googlecode.objectify.Key; -import com.googlecode.objectify.annotation.Entity; -import com.googlecode.objectify.annotation.Id; -import com.googlecode.objectify.annotation.Parent; -import google.registry.model.BackupGroupRoot; -import google.registry.model.ImmutableObject; -import google.registry.model.common.EntityGroupRoot; -import google.registry.testing.AppEngineExtension; -import google.registry.testing.FakeClock; -import google.registry.testing.InjectExtension; -import google.registry.testing.TestObject.TestVirtualObject; -import google.registry.testing.TmOverrideExtension; -import org.joda.time.DateTime; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Unit tests ensuring {@link Ofy} saves transactions to {@link CommitLogManifest}. */ -public class OfyCommitLogTest { - - @RegisterExtension - @Order(Order.DEFAULT - 1) - TmOverrideExtension tmOverrideExtension = TmOverrideExtension.withOfy(); - - @RegisterExtension - public final AppEngineExtension appEngine = - AppEngineExtension.builder() - .withDatastoreAndCloudSql() - .withOfyTestEntities(TestVirtualObject.class, Root.class, Child.class) - .build(); - - @RegisterExtension public final InjectExtension inject = new InjectExtension(); - - private final FakeClock clock = new FakeClock(DateTime.parse("2000-01-01TZ")); - - @BeforeEach - void beforeEach() { - inject.setStaticField(Ofy.class, "clock", clock); - } - - @Test - void testTransact_doesNothing_noCommitLogIsSaved() { - tm().transact(() -> {}); - assertThat(auditedOfy().load().type(CommitLogManifest.class)).isEmpty(); - } - - @Test - void testTransact_savesDataAndCommitLog() { - tm().transact(() -> auditedOfy().save().entity(Root.create(1, getCrossTldKey())).now()); - assertThat(auditedOfy().load().key(Key.create(getCrossTldKey(), Root.class, 1)).now().value) - .isEqualTo("value"); - assertThat(auditedOfy().load().type(CommitLogManifest.class)).hasSize(1); - assertThat(auditedOfy().load().type(CommitLogMutation.class)).hasSize(1); - } - - @Test - void testTransact_saveWithoutBackup_noCommitLogIsSaved() { - tm().transact( - () -> auditedOfy().saveWithoutBackup().entity(Root.create(1, getCrossTldKey())).now()); - assertThat(auditedOfy().load().key(Key.create(getCrossTldKey(), Root.class, 1)).now().value) - .isEqualTo("value"); - assertThat(auditedOfy().load().type(CommitLogManifest.class)).isEmpty(); - assertThat(auditedOfy().load().type(CommitLogMutation.class)).isEmpty(); - } - - @Test - void testTransact_deleteWithoutBackup_noCommitLogIsSaved() { - tm().transact( - () -> auditedOfy().saveWithoutBackup().entity(Root.create(1, getCrossTldKey())).now()); - tm().transact(() -> auditedOfy().deleteWithoutBackup().key(Key.create(Root.class, 1))); - assertThat(auditedOfy().load().key(Key.create(Root.class, 1)).now()).isNull(); - assertThat(auditedOfy().load().type(CommitLogManifest.class)).isEmpty(); - assertThat(auditedOfy().load().type(CommitLogMutation.class)).isEmpty(); - } - - @Test - void testTransact_savesEntity_itsProtobufFormIsStoredInCommitLog() { - tm().transact(() -> auditedOfy().save().entity(Root.create(1, getCrossTldKey())).now()); - final byte[] entityProtoBytes = - auditedOfy().load().type(CommitLogMutation.class).first().now().entityProtoBytes; - // This transaction is needed so that save().toEntity() can access - // auditedOfy().getTransactionTime() - // when it attempts to set the update timestamp. - tm().transact( - () -> - assertThat(entityProtoBytes) - .isEqualTo( - convertToPb(auditedOfy().save().toEntity(Root.create(1, getCrossTldKey()))) - .toByteArray())); - } - - @Test - void testTransact_savesEntity_mutationIsChildOfManifest() { - tm().transact(() -> auditedOfy().save().entity(Root.create(1, getCrossTldKey())).now()); - assertThat( - auditedOfy() - .load() - .type(CommitLogMutation.class) - .ancestor(auditedOfy().load().type(CommitLogManifest.class).first().now())) - .hasSize(1); - } - - @Test - void testTransactNew_savesDataAndCommitLog() { - tm().transactNew(() -> auditedOfy().save().entity(Root.create(1, getCrossTldKey())).now()); - assertThat(auditedOfy().load().key(Key.create(getCrossTldKey(), Root.class, 1)).now().value) - .isEqualTo("value"); - assertThat(auditedOfy().load().type(CommitLogManifest.class)).hasSize(1); - assertThat(auditedOfy().load().type(CommitLogMutation.class)).hasSize(1); - } - - @Test - void testTransact_multipleSaves_logsMultipleMutations() { - tm().transact( - () -> { - auditedOfy().save().entity(Root.create(1, getCrossTldKey())).now(); - auditedOfy().save().entity(Root.create(2, getCrossTldKey())).now(); - }); - assertThat(auditedOfy().load().type(CommitLogManifest.class)).hasSize(1); - assertThat(auditedOfy().load().type(CommitLogMutation.class)).hasSize(2); - } - - @Test - void testTransact_deletion_deletesAndLogsWithoutMutation() { - tm().transact( - () -> auditedOfy().saveWithoutBackup().entity(Root.create(1, getCrossTldKey())).now()); - clock.advanceOneMilli(); - final Key otherTldKey = Key.create(getCrossTldKey(), Root.class, 1); - tm().transact(() -> auditedOfy().delete().key(otherTldKey)); - assertThat(auditedOfy().load().key(otherTldKey).now()).isNull(); - assertThat(auditedOfy().load().type(CommitLogManifest.class)).hasSize(1); - assertThat(auditedOfy().load().type(CommitLogMutation.class)).isEmpty(); - assertThat(auditedOfy().load().type(CommitLogManifest.class).first().now().getDeletions()) - .containsExactly(otherTldKey); - } - - @Test - void testTransactNew_deleteNotBackedUpKind_throws() { - final CommitLogManifest backupsArentAllowedOnMe = - CommitLogManifest.create(getBucketKey(1), clock.nowUtc(), ImmutableSet.of()); - IllegalArgumentException thrown = - assertThrows( - IllegalArgumentException.class, - () -> tm().transactNew(() -> auditedOfy().delete().entity(backupsArentAllowedOnMe))); - assertThat(thrown).hasMessageThat().contains("Can't save/delete a @NotBackedUp"); - } - - @Test - void testTransactNew_saveNotBackedUpKind_throws() { - final CommitLogManifest backupsArentAllowedOnMe = - CommitLogManifest.create(getBucketKey(1), clock.nowUtc(), ImmutableSet.of()); - IllegalArgumentException thrown = - assertThrows( - IllegalArgumentException.class, - () -> tm().transactNew(() -> auditedOfy().save().entity(backupsArentAllowedOnMe))); - assertThat(thrown).hasMessageThat().contains("Can't save/delete a @NotBackedUp"); - } - - @Test - void testTransactNew_deleteVirtualEntityKey_throws() { - final Key virtualEntityKey = TestVirtualObject.createKey("virtual"); - IllegalArgumentException thrown = - assertThrows( - IllegalArgumentException.class, - () -> tm().transactNew(() -> auditedOfy().delete().key(virtualEntityKey))); - assertThat(thrown).hasMessageThat().contains("Can't save/delete a @VirtualEntity"); - } - - @Test - void testTransactNew_saveVirtualEntity_throws() { - final TestVirtualObject virtualEntity = TestVirtualObject.create("virtual"); - IllegalArgumentException thrown = - assertThrows( - IllegalArgumentException.class, - () -> tm().transactNew(() -> auditedOfy().save().entity(virtualEntity))); - assertThat(thrown).hasMessageThat().contains("Can't save/delete a @VirtualEntity"); - } - - @Test - void test_deleteWithoutBackup_withVirtualEntityKey_throws() { - final Key virtualEntityKey = TestVirtualObject.createKey("virtual"); - IllegalArgumentException thrown = - assertThrows( - IllegalArgumentException.class, - () -> auditedOfy().deleteWithoutBackup().key(virtualEntityKey)); - assertThat(thrown).hasMessageThat().contains("Can't save/delete a @VirtualEntity"); - } - - @Test - void test_saveWithoutBackup_withVirtualEntity_throws() { - final TestVirtualObject virtualEntity = TestVirtualObject.create("virtual"); - IllegalArgumentException thrown = - assertThrows( - IllegalArgumentException.class, - () -> auditedOfy().saveWithoutBackup().entity(virtualEntity)); - assertThat(thrown).hasMessageThat().contains("Can't save/delete a @VirtualEntity"); - } - - @Test - void testTransact_twoSavesOnSameKey_throws() { - IllegalArgumentException thrown = - assertThrows( - IllegalArgumentException.class, - () -> - tm().transact( - () -> { - auditedOfy().save().entity(Root.create(1, getCrossTldKey())); - auditedOfy().save().entity(Root.create(1, getCrossTldKey())); - })); - assertThat(thrown).hasMessageThat().contains("Multiple entries with same key"); - } - - @Test - void testTransact_saveAndDeleteSameKey_throws() { - IllegalArgumentException thrown = - assertThrows( - IllegalArgumentException.class, - () -> - tm().transact( - () -> { - auditedOfy().save().entity(Root.create(1, getCrossTldKey())); - auditedOfy().delete().entity(Root.create(1, getCrossTldKey())); - })); - assertThat(thrown).hasMessageThat().contains("Multiple entries with same key"); - } - - @Test - void testSavingRootAndChild_updatesTimestampOnBackupGroupRoot() { - tm().transact(() -> auditedOfy().save().entity(Root.create(1, getCrossTldKey()))); - auditedOfy().clearSessionCache(); - assertThat( - auditedOfy() - .load() - .key(Key.create(getCrossTldKey(), Root.class, 1)) - .now() - .getUpdateTimestamp() - .getTimestamp()) - .isEqualTo(clock.nowUtc()); - clock.advanceOneMilli(); - tm().transact( - () -> { - auditedOfy().save().entity(Root.create(1, getCrossTldKey())); - auditedOfy().save().entity(new Child()); - }); - auditedOfy().clearSessionCache(); - assertThat( - auditedOfy() - .load() - .key(Key.create(getCrossTldKey(), Root.class, 1)) - .now() - .getUpdateTimestamp() - .getTimestamp()) - .isEqualTo(clock.nowUtc()); - } - - @Test - void testSavingOnlyChild_updatesTimestampOnBackupGroupRoot() { - tm().transact(() -> auditedOfy().save().entity(Root.create(1, getCrossTldKey()))); - auditedOfy().clearSessionCache(); - assertThat( - auditedOfy() - .load() - .key(Key.create(getCrossTldKey(), Root.class, 1)) - .now() - .getUpdateTimestamp() - .getTimestamp()) - .isEqualTo(clock.nowUtc()); - clock.advanceOneMilli(); - tm().transact(() -> auditedOfy().save().entity(new Child())); - auditedOfy().clearSessionCache(); - assertThat( - auditedOfy() - .load() - .key(Key.create(getCrossTldKey(), Root.class, 1)) - .now() - .getUpdateTimestamp() - .getTimestamp()) - .isEqualTo(clock.nowUtc()); - } - - @Test - void testDeletingChild_updatesTimestampOnBackupGroupRoot() { - tm().transact(() -> auditedOfy().save().entity(Root.create(1, getCrossTldKey()))); - auditedOfy().clearSessionCache(); - assertThat( - auditedOfy() - .load() - .key(Key.create(getCrossTldKey(), Root.class, 1)) - .now() - .getUpdateTimestamp() - .getTimestamp()) - .isEqualTo(clock.nowUtc()); - clock.advanceOneMilli(); - // The fact that the child was never persisted is irrelevant. - tm().transact(() -> auditedOfy().delete().entity(new Child())); - auditedOfy().clearSessionCache(); - assertThat( - auditedOfy() - .load() - .key(Key.create(getCrossTldKey(), Root.class, 1)) - .now() - .getUpdateTimestamp() - .getTimestamp()) - .isEqualTo(clock.nowUtc()); - } - - @Test - void testReadingRoot_doesntUpdateTimestamp() { - tm().transact(() -> auditedOfy().save().entity(Root.create(1, getCrossTldKey()))); - auditedOfy().clearSessionCache(); - assertThat( - auditedOfy() - .load() - .key(Key.create(getCrossTldKey(), Root.class, 1)) - .now() - .getUpdateTimestamp() - .getTimestamp()) - .isEqualTo(clock.nowUtc()); - clock.advanceOneMilli(); - tm().transact( - () -> { - // Don't remove this line, as without saving *something* the commit log code will - // never be invoked and the test will trivially pass. - auditedOfy().save().entity(Root.create(2, getCrossTldKey())); - auditedOfy().load().entity(Root.create(1, getCrossTldKey())); - }); - auditedOfy().clearSessionCache(); - assertThat( - auditedOfy() - .load() - .key(Key.create(getCrossTldKey(), Root.class, 1)) - .now() - .getUpdateTimestamp() - .getTimestamp()) - .isEqualTo(clock.nowUtc().minusMillis(1)); - } - - @Test - void testReadingChild_doesntUpdateTimestampOnBackupGroupRoot() { - tm().transact(() -> auditedOfy().save().entity(Root.create(1, getCrossTldKey()))); - auditedOfy().clearSessionCache(); - assertThat( - auditedOfy() - .load() - .key(Key.create(getCrossTldKey(), Root.class, 1)) - .now() - .getUpdateTimestamp() - .getTimestamp()) - .isEqualTo(clock.nowUtc()); - clock.advanceOneMilli(); - tm().transact( - () -> { - // Don't remove this line, as without saving *something* the commit log code will - // never be invoked and the test will trivially pass - auditedOfy().save().entity(Root.create(2, getCrossTldKey())); - auditedOfy().load().entity(new Child()); // All Child objects are under Root(1). - }); - auditedOfy().clearSessionCache(); - assertThat( - auditedOfy() - .load() - .key(Key.create(getCrossTldKey(), Root.class, 1)) - .now() - .getUpdateTimestamp() - .getTimestamp()) - .isEqualTo(clock.nowUtc().minusMillis(1)); - } - - @Test - void testSavingAcrossBackupGroupRoots_updatesCorrectTimestamps() { - // Create three roots. - tm().transact( - () -> { - auditedOfy().save().entity(Root.create(1, getCrossTldKey())); - auditedOfy().save().entity(Root.create(2, getCrossTldKey())); - auditedOfy().save().entity(Root.create(3, getCrossTldKey())); - }); - auditedOfy().clearSessionCache(); - for (int i = 1; i <= 3; i++) { - assertThat( - auditedOfy() - .load() - .key(Key.create(getCrossTldKey(), Root.class, i)) - .now() - .getUpdateTimestamp() - .getTimestamp()) - .isEqualTo(clock.nowUtc()); - } - clock.advanceOneMilli(); - // Mutate one root, and a child of a second, ignoring the third. - tm().transact( - () -> { - auditedOfy().save().entity(new Child()); // All Child objects are under Root(1). - auditedOfy().save().entity(Root.create(2, getCrossTldKey())); - }); - auditedOfy().clearSessionCache(); - // Child was touched. - assertThat( - auditedOfy() - .load() - .key(Key.create(getCrossTldKey(), Root.class, 1)) - .now() - .getUpdateTimestamp() - .getTimestamp()) - .isEqualTo(clock.nowUtc()); - // Directly touched. - assertThat( - auditedOfy() - .load() - .key(Key.create(getCrossTldKey(), Root.class, 2)) - .now() - .getUpdateTimestamp() - .getTimestamp()) - .isEqualTo(clock.nowUtc()); - // Wasn't touched. - assertThat( - auditedOfy() - .load() - .key(Key.create(getCrossTldKey(), Root.class, 3)) - .now() - .getUpdateTimestamp() - .getTimestamp()) - .isEqualTo(clock.nowUtc().minusMillis(1)); - } - - @Entity - static class Root extends BackupGroupRoot { - - @Parent - Key parent; - - @Id - long id; - - String value; - - static Root create(long id, Key parent) { - Root result = new Root(); - result.parent = parent; - result.id = id; - result.value = "value"; - return result; - } - } - - @Entity - static class Child extends ImmutableObject { - @Parent - Key parent = Key.create(Root.create(1, getCrossTldKey())); - - @Id - long id = 1; - } -} diff --git a/core/src/test/java/google/registry/model/ofy/OfyTest.java b/core/src/test/java/google/registry/model/ofy/OfyTest.java index 5d3456961..f842866c2 100644 --- a/core/src/test/java/google/registry/model/ofy/OfyTest.java +++ b/core/src/test/java/google/registry/model/ofy/OfyTest.java @@ -90,89 +90,6 @@ public class OfyTest { // This can't be initialized earlier because namespaces need the AppEngineExtension to work. } - private void doBackupGroupRootTimestampInversionTest(Runnable runnable) { - DateTime groupTimestamp = - auditedOfy().load().key(someObject.getParent()).now().getUpdateTimestamp().getTimestamp(); - // Set the clock in Ofy to the same time as the backup group root's save time. - Ofy ofy = new Ofy(new FakeClock(groupTimestamp)); - TimestampInversionException thrown = - assertThrows(TimestampInversionException.class, () -> ofy.transact(runnable)); - assertThat(thrown) - .hasMessageThat() - .contains( - String.format( - "Timestamp inversion between transaction time (%s) and entities rooted under:\n" - + "{Key(ContactResource(\"2-ROID\"))=%s}", - groupTimestamp, groupTimestamp)); - } - - @Test - void testBackupGroupRootTimestampsMustIncreaseOnSave() { - doBackupGroupRootTimestampInversionTest( - () -> auditedOfy().save().entity(someObject.asHistoryEntry())); - } - - @Test - void testBackupGroupRootTimestampsMustIncreaseOnDelete() { - doBackupGroupRootTimestampInversionTest(() -> auditedOfy().delete().entity(someObject)); - } - - @Test - void testSavingKeyTwice() { - IllegalArgumentException thrown = - assertThrows( - IllegalArgumentException.class, - () -> - tm().transact( - () -> { - auditedOfy().save().entity(someObject.asHistoryEntry()); - auditedOfy().save().entity(someObject.asHistoryEntry()); - })); - assertThat(thrown).hasMessageThat().contains("Multiple entries with same key"); - } - - @Test - void testDeletingKeyTwice() { - IllegalArgumentException thrown = - assertThrows( - IllegalArgumentException.class, - () -> - tm().transact( - () -> { - auditedOfy().delete().entity(someObject); - auditedOfy().delete().entity(someObject); - })); - assertThat(thrown).hasMessageThat().contains("Multiple entries with same key"); - } - - @Test - void testSaveDeleteKey() { - IllegalArgumentException thrown = - assertThrows( - IllegalArgumentException.class, - () -> - tm().transact( - () -> { - auditedOfy().save().entity(someObject.asHistoryEntry()); - auditedOfy().delete().entity(someObject); - })); - assertThat(thrown).hasMessageThat().contains("Multiple entries with same key"); - } - - @Test - void testDeleteSaveKey() { - IllegalArgumentException thrown = - assertThrows( - IllegalArgumentException.class, - () -> - tm().transact( - () -> { - auditedOfy().delete().entity(someObject); - auditedOfy().save().entity(someObject.asHistoryEntry()); - })); - assertThat(thrown).hasMessageThat().contains("Multiple entries with same key"); - } - @Test void testSavingKeyTwiceInOneCall() { assertThrows( diff --git a/core/src/test/java/google/registry/model/translators/CommitLogRevisionsTranslatorFactoryTest.java b/core/src/test/java/google/registry/model/translators/CommitLogRevisionsTranslatorFactoryTest.java deleted file mode 100644 index 1dafe3bea..000000000 --- a/core/src/test/java/google/registry/model/translators/CommitLogRevisionsTranslatorFactoryTest.java +++ /dev/null @@ -1,183 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.model.translators; - -import static com.google.common.truth.Truth.assertThat; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.persistence.transaction.TransactionManagerFactory.tm; -import static org.joda.time.Duration.standardDays; -import static org.joda.time.Duration.standardHours; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSortedMap; -import com.googlecode.objectify.Key; -import com.googlecode.objectify.annotation.Entity; -import google.registry.model.common.CrossTldSingleton; -import google.registry.model.ofy.CommitLogManifest; -import google.registry.model.ofy.Ofy; -import google.registry.testing.AppEngineExtension; -import google.registry.testing.FakeClock; -import google.registry.testing.InjectExtension; -import google.registry.testing.TmOverrideExtension; -import java.util.List; -import org.joda.time.DateTime; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Unit tests for {@link CommitLogRevisionsTranslatorFactory}. */ -public class CommitLogRevisionsTranslatorFactoryTest { - - private static final DateTime START_TIME = DateTime.parse("2000-01-01TZ"); - - @Entity(name = "ClrtfTestEntity") - public static class TestObject extends CrossTldSingleton { - ImmutableSortedMap> revisions = ImmutableSortedMap.of(); - } - - @RegisterExtension - @Order(Order.DEFAULT - 1) - TmOverrideExtension tmOverrideExtension = TmOverrideExtension.withOfy(); - - @RegisterExtension - public final AppEngineExtension appEngine = - AppEngineExtension.builder() - .withDatastoreAndCloudSql() - .withOfyTestEntities(TestObject.class) - .build(); - - @RegisterExtension public final InjectExtension inject = new InjectExtension(); - - private final FakeClock clock = new FakeClock(START_TIME); - - @BeforeEach - void beforeEach() { - inject.setStaticField(Ofy.class, "clock", clock); - } - - private void save(final TestObject object) { - tm().transact(() -> auditedOfy().save().entity(object)); - } - - private TestObject reload() { - auditedOfy().clearSessionCache(); - return auditedOfy().load().entity(new TestObject()).now(); - } - - @Test - void testSave_doesNotMutateOriginalResource() { - TestObject object = new TestObject(); - save(object); - assertThat(object.revisions).isEmpty(); - assertThat(reload().revisions).isNotEmpty(); - } - - @Test - void testSave_translatorAddsKeyToCommitLogToField() { - save(new TestObject()); - TestObject object = reload(); - assertThat(object.revisions).hasSize(1); - assertThat(object.revisions).containsKey(START_TIME); - CommitLogManifest commitLogManifest = - auditedOfy().load().key(object.revisions.get(START_TIME)).now(); - assertThat(commitLogManifest.getCommitTime()).isEqualTo(START_TIME); - } - - @Test - void testSave_twoVersionsOnOneDay_keyToLastCommitLogsGetsStored() { - save(new TestObject()); - clock.advanceBy(standardHours(1)); - save(reload()); - TestObject object = reload(); - assertThat(object.revisions).hasSize(1); - assertThat(object.revisions).containsKey(START_TIME.plusHours(1)); - } - - @Test - void testSave_twoVersionsOnTwoDays_keyToBothCommitLogsGetsStored() { - save(new TestObject()); - clock.advanceBy(standardDays(1)); - save(reload()); - TestObject object = reload(); - assertThat(object.revisions).hasSize(2); - assertThat(object.revisions).containsKey(START_TIME); - assertThat(object.revisions).containsKey(START_TIME.plusDays(1)); - } - - @Test - void testSave_moreThanThirtyDays_truncatedAtThirtyPlusOne() { - save(new TestObject()); - for (int i = 0; i < 35; i++) { - clock.advanceBy(standardDays(1)); - save(reload()); - } - TestObject object = reload(); - assertThat(object.revisions).hasSize(31); - assertThat(object.revisions.firstKey()).isEqualTo(clock.nowUtc().minusDays(30)); - } - - @Test - void testSave_moreThanThirtySparse_keepsOneEntryPrecedingThirtyDays() { - save(new TestObject()); - assertThat(reload().revisions).hasSize(1); - assertThat(reload().revisions.firstKey()).isEqualTo(clock.nowUtc().minusDays(0)); - clock.advanceBy(standardDays(29)); - save(reload()); - assertThat(reload().revisions).hasSize(2); - assertThat(reload().revisions.firstKey()).isEqualTo(clock.nowUtc().minusDays(29)); - clock.advanceBy(standardDays(29)); - save(reload()); - assertThat(reload().revisions).hasSize(3); - assertThat(reload().revisions.firstKey()).isEqualTo(clock.nowUtc().minusDays(58)); - clock.advanceBy(standardDays(29)); - save(reload()); - assertThat(reload().revisions).hasSize(3); - assertThat(reload().revisions.firstKey()).isEqualTo(clock.nowUtc().minusDays(58)); - } - - @Test - @SuppressWarnings("unchecked") - void testRawEntityLayout() { - save(new TestObject()); - clock.advanceBy(standardDays(1)); - com.google.appengine.api.datastore.Entity entity = - tm().transactNewReadOnly(() -> auditedOfy().save().toEntity(reload())); - assertThat(entity.getProperties().keySet()).containsExactly("revisions.key", "revisions.value"); - assertThat(entity.getProperties()) - .containsEntry( - "revisions.key", - ImmutableList.of(START_TIME.toDate(), START_TIME.plusDays(1).toDate())); - assertThat(entity.getProperty("revisions.value")).isInstanceOf(List.class); - assertThat(((List) entity.getProperty("revisions.value")).get(0)) - .isInstanceOf(com.google.appengine.api.datastore.Key.class); - } - - @Test - void testLoad_neverSaved_returnsNull() { - assertThat(auditedOfy().load().entity(new TestObject()).now()).isNull(); - } - - @Test - void testLoad_missingRevisionRawProperties_createsEmptyObject() { - com.google.appengine.api.datastore.Entity entity = - tm().transactNewReadOnly(() -> auditedOfy().save().toEntity(new TestObject())); - entity.removeProperty("revisions.key"); - entity.removeProperty("revisions.value"); - TestObject object = auditedOfy().load().fromEntity(entity); - assertThat(object.revisions).isNotNull(); - assertThat(object.revisions).isEmpty(); - } -} diff --git a/core/src/test/java/google/registry/model/translators/VKeyTranslatorFactoryTest.java b/core/src/test/java/google/registry/model/translators/VKeyTranslatorFactoryTest.java index f954d01db..e5a1a77c9 100644 --- a/core/src/test/java/google/registry/model/translators/VKeyTranslatorFactoryTest.java +++ b/core/src/test/java/google/registry/model/translators/VKeyTranslatorFactoryTest.java @@ -17,14 +17,11 @@ package google.registry.model.translators; import static com.google.common.truth.Truth.assertThat; import static google.registry.testing.DatabaseHelper.newDomainBase; import static google.registry.testing.DatabaseHelper.persistActiveContact; -import static org.junit.jupiter.api.Assertions.assertThrows; import com.googlecode.objectify.Key; import google.registry.model.billing.BillingEvent; import google.registry.model.common.ClassPathManager; import google.registry.model.domain.DomainBase; -import google.registry.model.ofy.CommitLogCheckpoint; -import google.registry.model.ofy.CommitLogCheckpointRoot; import google.registry.model.reporting.HistoryEntry; import google.registry.persistence.VKey; import google.registry.testing.AppEngineExtension; @@ -62,20 +59,6 @@ public class VKeyTranslatorFactoryTest { assertThat(vkey.getSqlKey()).isEqualTo("ROID-1"); } - @Test - void testKeyWithParent() { - Key parent = Key.create(CommitLogCheckpointRoot.class, "parent"); - Key key = Key.create(parent, CommitLogCheckpoint.class, "foo"); - IllegalArgumentException e = - assertThrows(IllegalArgumentException.class, () -> VKeyTranslatorFactory.createVKey(key)); - assertThat(e) - .hasMessageThat() - .isEqualTo( - "Cannot auto-convert key Key(CommitLogCheckpointRoot(\"parent\")/" - + "CommitLogCheckpoint(\"foo\")) of kind CommitLogCheckpoint because it has a " - + "parent. Add a createVKey(Key) method for it."); - } - @Test void testEntityWithAncestor() { Key domainKey = Key.create(DomainBase.class, "ROID-1"); diff --git a/core/src/test/java/google/registry/rde/RdeFixtures.java b/core/src/test/java/google/registry/rde/RdeFixtures.java index ecbaf206d..7d874e025 100644 --- a/core/src/test/java/google/registry/rde/RdeFixtures.java +++ b/core/src/test/java/google/registry/rde/RdeFixtures.java @@ -18,7 +18,7 @@ import static com.google.common.io.BaseEncoding.base16; import static google.registry.testing.DatabaseHelper.generateNewContactHostRoid; import static google.registry.testing.DatabaseHelper.generateNewDomainRoid; import static google.registry.testing.DatabaseHelper.persistResource; -import static google.registry.testing.DatabaseHelper.persistResourceWithCommitLog; +import static google.registry.testing.DatabaseHelper.persistResourceWithBackup; import static google.registry.testing.DatabaseHelper.persistSimpleResource; import static google.registry.util.DateTimeUtils.END_OF_TIME; import static org.joda.money.CurrencyUnit.USD; @@ -76,7 +76,7 @@ final class RdeFixtures { .build()); clock.advanceOneMilli(); BillingEvent.OneTime billingEvent = - persistResourceWithCommitLog( + persistResourceWithBackup( new BillingEvent.OneTime.Builder() .setReason(Reason.CREATE) .setTargetId("example." + tld) @@ -215,13 +215,13 @@ final class RdeFixtures { .build()) .build(); clock.advanceOneMilli(); - return persistResourceWithCommitLog(domain); + return persistResourceWithBackup(domain); } static ContactResource makeContactResource( FakeClock clock, String id, String name, String email) { clock.advanceOneMilli(); - return persistResourceWithCommitLog( + return persistResourceWithBackup( new ContactResource.Builder() .setContactId(id) .setRepoId(generateNewContactHostRoid()) @@ -252,7 +252,7 @@ final class RdeFixtures { static HostResource makeHostResource(FakeClock clock, String fqhn, String ip) { clock.advanceOneMilli(); - return persistResourceWithCommitLog( + return persistResourceWithBackup( new HostResource.Builder() .setRepoId(generateNewContactHostRoid()) .setCreationRegistrarId("LawyerCat") diff --git a/core/src/test/java/google/registry/rde/RdeStagingActionDatastoreTest.java b/core/src/test/java/google/registry/rde/RdeStagingActionDatastoreTest.java deleted file mode 100644 index f99fdc87e..000000000 --- a/core/src/test/java/google/registry/rde/RdeStagingActionDatastoreTest.java +++ /dev/null @@ -1,885 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.rde; - -import static com.google.common.truth.Truth.assertThat; -import static google.registry.model.common.Cursor.CursorType.BRDA; -import static google.registry.model.common.Cursor.CursorType.RDE_STAGING; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.persistence.transaction.TransactionManagerFactory.tm; -import static google.registry.rde.RdeFixtures.makeContactResource; -import static google.registry.rde.RdeFixtures.makeDomainBase; -import static google.registry.rde.RdeFixtures.makeHostResource; -import static google.registry.testing.DatabaseHelper.createTld; -import static google.registry.testing.DatabaseHelper.persistResource; -import static google.registry.testing.DatabaseHelper.persistResourceWithCommitLog; -import static google.registry.testing.TaskQueueHelper.assertAtLeastOneTaskIsEnqueued; -import static google.registry.testing.TaskQueueHelper.assertNoTasksEnqueued; -import static google.registry.testing.TestDataHelper.loadFile; -import static google.registry.tldconfig.idn.IdnTableEnum.EXTENDED_LATIN; -import static java.nio.charset.StandardCharsets.UTF_8; -import static java.util.Arrays.asList; -import static org.junit.jupiter.api.Assertions.assertThrows; - -import com.google.cloud.storage.BlobId; -import com.google.cloud.storage.contrib.nio.testing.LocalStorageHelper; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; -import com.google.common.net.InetAddresses; -import google.registry.gcs.GcsUtils; -import google.registry.keyring.api.Keyring; -import google.registry.keyring.api.PgpHelper; -import google.registry.model.common.Cursor; -import google.registry.model.common.Cursor.CursorType; -import google.registry.model.host.HostResource; -import google.registry.model.ofy.Ofy; -import google.registry.model.tld.Registry; -import google.registry.request.HttpException.BadRequestException; -import google.registry.request.RequestParameters; -import google.registry.testing.CloudTasksHelper; -import google.registry.testing.CloudTasksHelper.TaskMatcher; -import google.registry.testing.FakeClock; -import google.registry.testing.FakeKeyringModule; -import google.registry.testing.FakeLockHandler; -import google.registry.testing.FakeResponse; -import google.registry.testing.InjectExtension; -import google.registry.testing.TmOverrideExtension; -import google.registry.testing.mapreduce.MapreduceTestCase; -import google.registry.tldconfig.idn.IdnTableEnum; -import google.registry.xjc.XjcXmlTransformer; -import google.registry.xjc.rde.XjcRdeContentType; -import google.registry.xjc.rde.XjcRdeDeposit; -import google.registry.xjc.rde.XjcRdeDepositTypeType; -import google.registry.xjc.rdedomain.XjcRdeDomain; -import google.registry.xjc.rdeheader.XjcRdeHeader; -import google.registry.xjc.rdeheader.XjcRdeHeaderCount; -import google.registry.xjc.rdehost.XjcRdeHost; -import google.registry.xjc.rdeidn.XjcRdeIdn; -import google.registry.xjc.rderegistrar.XjcRdeRegistrar; -import google.registry.xml.XmlException; -import google.registry.xml.XmlTestUtils; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import javax.xml.bind.JAXBElement; -import org.bouncycastle.openpgp.PGPException; -import org.bouncycastle.openpgp.PGPPrivateKey; -import org.bouncycastle.openpgp.PGPPublicKey; -import org.joda.time.DateTime; -import org.joda.time.DateTimeConstants; -import org.joda.time.Duration; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Unit tests for {@link RdeStagingAction} in Datastore. */ -public class RdeStagingActionDatastoreTest extends MapreduceTestCase { - - @RegisterExtension - @Order(Order.DEFAULT - 1) - TmOverrideExtension tmOverrideExtension = TmOverrideExtension.withOfy(); - - private static final BlobId XML_FILE = - BlobId.of("rde-bucket", "lol_2000-01-01_full_S1_R0.xml.ghostryde"); - private static final BlobId LENGTH_FILE = - BlobId.of("rde-bucket", "lol_2000-01-01_full_S1_R0.xml.length"); - - @RegisterExtension public final InjectExtension inject = new InjectExtension(); - - /** - * Without autoIncrement mode, the fake clock won't advance between Mapper and Reducer - * transactions when action is invoked, resulting in rolled back reducer transaction (due to - * TimestampInversionException if both transactions are mapped to the same CommitLog bucket) and - * multiple RdeUplaod/BrdaCopy tasks being enqueued (due to transaction retries, since Cloud Tasks - * enqueuing is not transactional with Datastore transactions). - */ - private final FakeClock clock = new FakeClock().setAutoIncrementByOneMilli(); - - private final FakeResponse response = new FakeResponse(); - private final GcsUtils gcsUtils = new GcsUtils(LocalStorageHelper.getOptions()); - private final List alreadyExtracted = new ArrayList<>(); - private final CloudTasksHelper cloudTasksHelper = new CloudTasksHelper(); - - private static PGPPublicKey encryptKey; - private static PGPPrivateKey decryptKey; - - @BeforeAll - static void beforeAll() { - try (Keyring keyring = new FakeKeyringModule().get()) { - encryptKey = keyring.getRdeStagingEncryptionKey(); - decryptKey = keyring.getRdeStagingDecryptionKey(); - } - } - - @BeforeEach - void beforeEach() { - inject.setStaticField(Ofy.class, "clock", clock); - action = new RdeStagingAction(); - action.clock = clock; - action.mrRunner = makeDefaultRunner(); - action.lenient = false; - action.reducerFactory = new RdeStagingReducer.Factory(); - action.reducerFactory.cloudTasksUtils = cloudTasksHelper.getTestCloudTasksUtils(); - action.reducerFactory.lockHandler = new FakeLockHandler(true); - action.reducerFactory.bucket = "rde-bucket"; - action.reducerFactory.lockTimeout = Duration.standardHours(1); - action.reducerFactory.stagingKeyBytes = PgpHelper.convertPublicKeyToBytes(encryptKey); - action.pendingDepositChecker = new PendingDepositChecker(); - action.pendingDepositChecker.brdaDayOfWeek = DateTimeConstants.TUESDAY; - action.pendingDepositChecker.brdaInterval = Duration.standardDays(7); - action.pendingDepositChecker.clock = clock; - action.pendingDepositChecker.rdeInterval = Duration.standardDays(1); - action.gcsUtils = gcsUtils; - action.response = response; - action.transactionCooldown = Duration.ZERO; - action.directory = Optional.empty(); - action.modeStrings = ImmutableSet.of(); - action.tlds = ImmutableSet.of(); - action.watermarks = ImmutableSet.of(); - action.revision = Optional.empty(); - } - - @Test - void testRun_modeInNonManualMode_throwsException() { - createTldWithEscrowEnabled("lol"); - clock.setTo(DateTime.parse("2000-01-01TZ")); - action.modeStrings = ImmutableSet.of("full"); - assertThrows(BadRequestException.class, action::run); - } - - @Test - void testRun_tldInNonManualMode_throwsException() { - createTldWithEscrowEnabled("lol"); - clock.setTo(DateTime.parse("2000-01-01TZ")); - action.tlds = ImmutableSet.of("tld"); - assertThrows(BadRequestException.class, action::run); - } - - @Test - void testRun_watermarkInNonManualMode_throwsException() { - createTldWithEscrowEnabled("lol"); - clock.setTo(DateTime.parse("2000-01-01TZ")); - action.watermarks = ImmutableSet.of(clock.nowUtc()); - assertThrows(BadRequestException.class, action::run); - } - - @Test - void testRun_revisionInNonManualMode_throwsException() { - createTldWithEscrowEnabled("lol"); - clock.setTo(DateTime.parse("2000-01-01TZ")); - action.revision = Optional.of(42); - assertThrows(BadRequestException.class, action::run); - } - - @Test - void testRun_noTlds_returns204() { - action.run(); - assertThat(response.getStatus()).isEqualTo(204); - assertNoTasksEnqueued("mapreduce"); - } - - @Test - void testRun_tldWithoutEscrowEnabled_returns204() { - createTld("lol"); - persistResource(Registry.get("lol").asBuilder().setEscrowEnabled(false).build()); - clock.setTo(DateTime.parse("2000-01-01TZ")); - action.run(); - assertThat(response.getStatus()).isEqualTo(204); - assertNoTasksEnqueued("mapreduce"); - } - - @Test - void testRun_tldWithEscrowEnabled_runsMapReduce() { - createTldWithEscrowEnabled("lol"); - clock.setTo(DateTime.parse("2000-01-01TZ")); - action.run(); - assertThat(response.getStatus()).isEqualTo(200); - assertThat(response.getPayload()).contains("/_ah/pipeline/status.html?root="); - assertAtLeastOneTaskIsEnqueued("mapreduce"); - } - - @Test - void testRun_withinTransactionCooldown_getsExcludedAndReturns204() { - createTldWithEscrowEnabled("lol"); - clock.setTo(DateTime.parse("2000-01-01T00:04:59Z")); - action.transactionCooldown = Duration.standardMinutes(5); - action.run(); - assertThat(response.getStatus()).isEqualTo(204); - assertNoTasksEnqueued("mapreduce"); - } - - @Test - void testRun_afterTransactionCooldown_runsMapReduce() { - createTldWithEscrowEnabled("lol"); - clock.setTo(DateTime.parse("2000-01-01T00:05:00Z")); - action.transactionCooldown = Duration.standardMinutes(5); - action.run(); - assertAtLeastOneTaskIsEnqueued("mapreduce"); - } - - @Test - void testManualRun_emptyMode_throwsException() { - createTldWithEscrowEnabled("lol"); - clock.setTo(DateTime.parse("2000-01-01TZ")); - action.manual = true; - action.directory = Optional.of("test/"); - action.modeStrings = ImmutableSet.of(); - action.tlds = ImmutableSet.of("lol"); - action.watermarks = ImmutableSet.of(clock.nowUtc()); - assertThrows(BadRequestException.class, action::run); - } - - @Test - void testManualRun_invalidMode_throwsException() { - createTldWithEscrowEnabled("lol"); - clock.setTo(DateTime.parse("2000-01-01TZ")); - action.manual = true; - action.directory = Optional.of("test/"); - action.modeStrings = ImmutableSet.of("full", "thing"); - action.tlds = ImmutableSet.of("lol"); - action.watermarks = ImmutableSet.of(clock.nowUtc()); - assertThrows(BadRequestException.class, action::run); - } - - @Test - void testManualRun_emptyTld_throwsException() { - createTldWithEscrowEnabled("lol"); - clock.setTo(DateTime.parse("2000-01-01TZ")); - action.manual = true; - action.directory = Optional.of("test/"); - action.modeStrings = ImmutableSet.of("full"); - action.tlds = ImmutableSet.of(); - action.watermarks = ImmutableSet.of(clock.nowUtc()); - assertThrows(BadRequestException.class, action::run); - } - - @Test - void testManualRun_emptyWatermark_throwsException() { - createTldWithEscrowEnabled("lol"); - clock.setTo(DateTime.parse("2000-01-01TZ")); - action.manual = true; - action.directory = Optional.of("test/"); - action.modeStrings = ImmutableSet.of("full"); - action.tlds = ImmutableSet.of("lol"); - action.watermarks = ImmutableSet.of(); - assertThrows(BadRequestException.class, action::run); - } - - @Test - void testManualRun_nonDayStartWatermark_throwsException() { - createTldWithEscrowEnabled("lol"); - clock.setTo(DateTime.parse("2000-01-01TZ")); - action.manual = true; - action.directory = Optional.of("test/"); - action.modeStrings = ImmutableSet.of("full"); - action.tlds = ImmutableSet.of("lol"); - action.watermarks = ImmutableSet.of(DateTime.parse("2001-01-01T01:36:45Z")); - assertThrows(BadRequestException.class, action::run); - } - - @Test - void testManualRun_invalidRevision_throwsException() { - createTldWithEscrowEnabled("lol"); - clock.setTo(DateTime.parse("2000-01-01TZ")); - action.manual = true; - action.directory = Optional.of("test/"); - action.modeStrings = ImmutableSet.of("full"); - action.tlds = ImmutableSet.of("lol"); - action.watermarks = ImmutableSet.of(DateTime.parse("2001-01-01T00:00:00Z")); - action.revision = Optional.of(-1); - assertThrows(BadRequestException.class, action::run); - } - - @Test - void testManualRun_validParameters_runsMapReduce() { - createTldWithEscrowEnabled("lol"); - clock.setTo(DateTime.parse("2000-01-01TZ")); - action.manual = true; - action.directory = Optional.of("test/"); - action.modeStrings = ImmutableSet.of("full"); - action.tlds = ImmutableSet.of("lol"); - action.watermarks = ImmutableSet.of(DateTime.parse("2001-01-01TZ")); - action.run(); - assertThat(response.getStatus()).isEqualTo(200); - assertThat(response.getPayload()).contains("_ah/pipeline/status.html?root="); - assertAtLeastOneTaskIsEnqueued("mapreduce"); - } - - @Test - void testMapReduce_bunchOfResources_headerHasCorrectCounts() throws Exception { - clock.setTo(DateTime.parse("1999-12-31TZ")); - createTldWithEscrowEnabled("lol"); - makeDomainBase(clock, "lol"); - - clock.setTo(DateTime.parse("2000-01-01TZ")); - action.run(); - executeTasksUntilEmpty("mapreduce", clock); - - XjcRdeDeposit deposit = - unmarshal( - XjcRdeDeposit.class, Ghostryde.decode(gcsUtils.readBytesFrom(XML_FILE), decryptKey)); - XjcRdeHeader header = extractAndRemoveContentWithType(XjcRdeHeader.class, deposit); - - assertThat(header.getTld()).isEqualTo("lol"); - assertThat(mapifyCounts(header)) - .containsExactly( - RdeResourceType.CONTACT.getUri(), - 3L, - RdeResourceType.DOMAIN.getUri(), - 1L, - RdeResourceType.HOST.getUri(), - 2L, - RdeResourceType.REGISTRAR.getUri(), - 2L, - RdeResourceType.IDN.getUri(), - (long) IdnTableEnum.values().length); - } - - @Test - void testMapReduce_validHostResources_getPutInDeposit() throws Exception { - clock.setTo(DateTime.parse("1999-12-31TZ")); - createTldWithEscrowEnabled("lol"); - makeHostResource(clock, "ns1.cat.lol", "feed::a:bee"); - makeHostResource(clock, "ns2.cat.lol", "3.1.33.7"); - - clock.setTo(DateTime.parse("2000-01-01TZ")); - action.run(); - executeTasksUntilEmpty("mapreduce", clock); - - XjcRdeDeposit deposit = - unmarshal( - XjcRdeDeposit.class, Ghostryde.decode(gcsUtils.readBytesFrom(XML_FILE), decryptKey)); - assertThat(deposit.getType()).isEqualTo(XjcRdeDepositTypeType.FULL); - assertThat(deposit.getId()).isEqualTo(RdeUtil.timestampToId(DateTime.parse("2000-01-01TZ"))); - assertThat(deposit.getWatermark()).isEqualTo(DateTime.parse("2000-01-01TZ")); - assertThat(deposit.getResend()).isEqualTo(0); - - XjcRdeHost host1 = extractAndRemoveContentWithType(XjcRdeHost.class, deposit); - XjcRdeHost host2 = extractAndRemoveContentWithType(XjcRdeHost.class, deposit); - XjcRdeHeader header = extractAndRemoveContentWithType(XjcRdeHeader.class, deposit); - - assertThat(asList(host1.getName(), host2.getName())) - .containsExactly("ns1.cat.lol", "ns2.cat.lol"); - assertThat(asList(host1.getAddrs().get(0).getValue(), host2.getAddrs().get(0).getValue())) - .containsExactly("feed::a:bee", "3.1.33.7"); - - assertThat(header.getTld()).isEqualTo("lol"); - assertThat(mapifyCounts(header)) - .containsExactly( - RdeResourceType.CONTACT.getUri(), - 0L, - RdeResourceType.DOMAIN.getUri(), - 0L, - RdeResourceType.HOST.getUri(), - 2L, - RdeResourceType.REGISTRAR.getUri(), - 2L, - RdeResourceType.IDN.getUri(), - (long) IdnTableEnum.values().length); - } - - @Test - void testMapReduce_defaultTestFixtureRegistrars_getPutInDeposit() throws Exception { - clock.setTo(DateTime.parse("1999-12-31TZ")); - createTldWithEscrowEnabled("lol"); - makeHostResource(clock, "ns1.cat.lol", "feed::a:bee"); - - clock.setTo(DateTime.parse("2000-01-01TZ")); - action.run(); - executeTasksUntilEmpty("mapreduce", clock); - - XjcRdeDeposit deposit = - unmarshal( - XjcRdeDeposit.class, Ghostryde.decode(gcsUtils.readBytesFrom(XML_FILE), decryptKey)); - XjcRdeRegistrar registrar1 = extractAndRemoveContentWithType(XjcRdeRegistrar.class, deposit); - XjcRdeRegistrar registrar2 = extractAndRemoveContentWithType(XjcRdeRegistrar.class, deposit); - XjcRdeHeader header = extractAndRemoveContentWithType(XjcRdeHeader.class, deposit); - - assertThat(asList(registrar1.getName(), registrar2.getName())) - .containsExactly("New Registrar", "The Registrar"); - assertThat(mapifyCounts(header)).containsEntry(RdeResourceType.REGISTRAR.getUri(), 2L); - } - - @Test - void testMapReduce_sameDayRdeDeposit_advancesCursorToTomorrow() throws Exception { - clock.setTo(DateTime.parse("1999-12-31TZ")); - createTldWithEscrowEnabled("lol"); - makeDomainBase(clock, "lol"); - setCursor(Registry.get("lol"), RDE_STAGING, DateTime.parse("2000-01-01TZ")); - setCursor(Registry.get("lol"), BRDA, DateTime.parse("2000-01-04TZ")); - clock.setTo(DateTime.parse("2000-01-01TZ")); // Saturday - action.run(); - executeTasksUntilEmpty("mapreduce", clock); - assertThat( - auditedOfy() - .load() - .key(Cursor.createKey(RDE_STAGING, Registry.get("lol"))) - .now() - .getCursorTime()) - .isEqualTo(DateTime.parse("2000-01-02TZ")); - assertThat( - auditedOfy() - .load() - .key(Cursor.createKey(BRDA, Registry.get("lol"))) - .now() - .getCursorTime()) - .isEqualTo(DateTime.parse("2000-01-04TZ")); - } - - @Test - void testMapReduce_onBrdaDay_advancesBothCursors() throws Exception { - clock.setTo(DateTime.parse("1999-12-31TZ")); - createTldWithEscrowEnabled("lol"); - makeDomainBase(clock, "lol"); - setCursor(Registry.get("lol"), RDE_STAGING, DateTime.parse("2000-01-04TZ")); - setCursor(Registry.get("lol"), BRDA, DateTime.parse("2000-01-04TZ")); - clock.setTo(DateTime.parse("2000-01-04TZ")); // Tuesday - action.run(); - executeTasksUntilEmpty("mapreduce", clock); - assertThat( - auditedOfy() - .load() - .key(Cursor.createKey(RDE_STAGING, Registry.get("lol"))) - .now() - .getCursorTime()) - .isEqualTo(DateTime.parse("2000-01-05TZ")); - assertThat( - auditedOfy() - .load() - .key(Cursor.createKey(BRDA, Registry.get("lol"))) - .now() - .getCursorTime()) - .isEqualTo(DateTime.parse("2000-01-11TZ")); - } - - @Test - void testMapReduce_onBrdaDay_enqueuesBothTasks() throws Exception { - clock.setTo(DateTime.parse("1999-12-31TZ")); - createTldWithEscrowEnabled("lol"); - makeDomainBase(clock, "lol"); - setCursor(Registry.get("lol"), RDE_STAGING, DateTime.parse("2000-01-04TZ")); - setCursor(Registry.get("lol"), BRDA, DateTime.parse("2000-01-04TZ")); - clock.setTo(DateTime.parse("2000-01-04TZ")); // Tuesday - action.run(); - executeTasksUntilEmpty("mapreduce", clock); - // TODO(b/217773051): duplicate tasks are possible though unlikely. Consider if below calls are - // appropriate since they don't allow duplicates. - cloudTasksHelper.assertTasksEnqueued( - "rde-upload", - new TaskMatcher().url(RdeUploadAction.PATH).param(RequestParameters.PARAM_TLD, "lol")); - cloudTasksHelper.assertTasksEnqueued( - "brda", - new TaskMatcher() - .url(BrdaCopyAction.PATH) - .param(RequestParameters.PARAM_TLD, "lol") - .param(RdeModule.PARAM_WATERMARK, "2000-01-04T00:00:00.000Z")); - } - - @Test - void testMapReduce_noEppResourcesAndWayInPast_depositsRegistrarsOnly() throws Exception { - clock.setTo(DateTime.parse("1999-12-31TZ")); - createTldWithEscrowEnabled("fop"); - setCursor(Registry.get("fop"), RDE_STAGING, DateTime.parse("1971-01-01TZ")); - setCursor(Registry.get("fop"), BRDA, DateTime.parse("1971-01-05TZ")); - - clock.setTo(DateTime.parse("2000-01-01TZ")); - action.run(); - executeTasksUntilEmpty("mapreduce", clock); - - for (BlobId filename : - asList( - BlobId.of("rde-bucket", "fop_1971-01-01_full_S1_R0.xml.ghostryde"), - BlobId.of("rde-bucket", "fop_1971-01-05_thin_S1_R0.xml.ghostryde"))) { - XjcRdeDeposit deposit = - unmarshal( - XjcRdeDeposit.class, Ghostryde.decode(gcsUtils.readBytesFrom(filename), decryptKey)); - XjcRdeRegistrar registrar1 = extractAndRemoveContentWithType(XjcRdeRegistrar.class, deposit); - XjcRdeRegistrar registrar2 = extractAndRemoveContentWithType(XjcRdeRegistrar.class, deposit); - XjcRdeHeader header = extractAndRemoveContentWithType(XjcRdeHeader.class, deposit); - - assertThat(asList(registrar1.getName(), registrar2.getName())) - .containsExactly("New Registrar", "The Registrar"); - assertThat(mapifyCounts(header)).containsEntry(RdeResourceType.REGISTRAR.getUri(), 2L); - } - - assertThat( - auditedOfy() - .load() - .key(Cursor.createKey(RDE_STAGING, Registry.get("fop"))) - .now() - .getCursorTime()) - .isEqualTo(DateTime.parse("1971-01-02TZ")); - - assertThat( - auditedOfy() - .load() - .key(Cursor.createKey(BRDA, Registry.get("fop"))) - .now() - .getCursorTime()) - .isEqualTo(DateTime.parse("1971-01-12TZ")); - } - - @Test - void testMapReduce_idnTables_goInDeposit() throws Exception { - clock.setTo(DateTime.parse("1999-12-31TZ")); - createTldWithEscrowEnabled("fop"); - makeDomainBase(clock, "fop"); - - clock.setTo(DateTime.parse("2000-01-01TZ")); - action.run(); - executeTasksUntilEmpty("mapreduce", clock); - - BlobId filename = BlobId.of("rde-bucket", "fop_2000-01-01_full_S1_R0.xml.ghostryde"); - XjcRdeDeposit deposit = - unmarshal( - XjcRdeDeposit.class, Ghostryde.decode(gcsUtils.readBytesFrom(filename), decryptKey)); - XjcRdeDomain domain = extractAndRemoveContentWithType(XjcRdeDomain.class, deposit); - XjcRdeIdn firstIdn = extractAndRemoveContentWithType(XjcRdeIdn.class, deposit); - XjcRdeHeader header = extractAndRemoveContentWithType(XjcRdeHeader.class, deposit); - - assertThat(domain.getIdnTableId()).isEqualTo("extended_latin"); - assertThat(firstIdn.getId()).isEqualTo("extended_latin"); - assertThat(firstIdn.getUrl()).isEqualTo(EXTENDED_LATIN.getTable().getUrl().toString()); - assertThat(firstIdn.getUrlPolicy()).isEqualTo(EXTENDED_LATIN.getTable().getPolicy().toString()); - assertThat(mapifyCounts(header)) - .containsEntry(RdeResourceType.IDN.getUri(), (long) IdnTableEnum.values().length); - } - - @Test - void testMapReduce_withDomain_producesExpectedXml() throws Exception { - clock.setTo(DateTime.parse("1999-12-31TZ")); - createTldWithEscrowEnabled("lol"); - makeDomainBase(clock, "lol"); - - clock.setTo(DateTime.parse("2000-01-01TZ")); - action.run(); - executeTasksUntilEmpty("mapreduce", clock); - - XmlTestUtils.assertXmlEquals( - loadFile(getClass(), "testMapReduce_withDomain_producesExpectedXml.xml"), - readXml("lol_2000-01-01_full_S1_R0.xml.ghostryde"), - "deposit.contents.registrar.crDate", - "deposit.contents.registrar.upDate"); - } - - @Test - void testMapReduce_withDomain_producesCorrectLengthFile() throws Exception { - clock.setTo(DateTime.parse("1999-12-31TZ")); - createTldWithEscrowEnabled("lol"); - makeDomainBase(clock, "lol"); - - clock.setTo(DateTime.parse("2000-01-01TZ")); - action.run(); - executeTasksUntilEmpty("mapreduce", clock); - - byte[] deposit = Ghostryde.decode(gcsUtils.readBytesFrom(XML_FILE), decryptKey); - assertThat(Integer.parseInt(new String(gcsUtils.readBytesFrom(LENGTH_FILE), UTF_8))) - .isEqualTo(deposit.length); - } - - @Test - void testMapReduce_withDomain_producesReportXml() throws Exception { - clock.setTo(DateTime.parse("1999-12-31TZ")); - createTldWithEscrowEnabled("lol"); - makeDomainBase(clock, "lol"); - - clock.setTo(DateTime.parse("2000-01-01TZ")); - action.run(); - executeTasksUntilEmpty("mapreduce", clock); - - XmlTestUtils.assertXmlEquals( - loadFile(getClass(), "testMapReduce_withDomain_producesReportXml.xml"), - readXml("lol_2000-01-01_full_S1_R0-report.xml.ghostryde"), - "deposit.contents.registrar.crDate", - "deposit.contents.registrar.upDate"); - } - - @Test - void testMapReduce_twoDomainsDifferentTlds_isolatesDomains() throws Exception { - clock.setTo(DateTime.parse("1999-12-31TZ")); - createTldWithEscrowEnabled("boggle"); - makeDomainBase(clock, "boggle"); - createTldWithEscrowEnabled("lol"); - makeDomainBase(clock, "lol"); - - clock.setTo(DateTime.parse("2000-01-01TZ")); - clock.setAutoIncrementByOneMilli(); - action.run(); - clock.disableAutoIncrement(); - executeTasksUntilEmpty("mapreduce", clock); - - String boggleDeposit = readXml("boggle_2000-01-01_full_S1_R0.xml.ghostryde"); - assertThat(boggleDeposit).contains("love.boggle"); - assertThat(boggleDeposit).doesNotContain("love.lol"); - - String lolDeposit = readXml("lol_2000-01-01_full_S1_R0.xml.ghostryde"); - assertThat(lolDeposit).contains("love.lol"); - assertThat(lolDeposit).doesNotContain("love.boggle"); - } - - @Test - void testMapReduce_twoHostsDifferentTlds_includedInBothTldDeposits() throws Exception { - clock.setTo(DateTime.parse("1999-12-31TZ")); - createTldWithEscrowEnabled("fop"); - makeHostResource(clock, "ns1.dein.fop", "a:fed::cafe"); - createTldWithEscrowEnabled("lol"); - makeHostResource(clock, "ns1.kuss.lol", "face::feed"); - - clock.setTo(DateTime.parse("2000-01-01TZ")); - clock.setAutoIncrementByOneMilli(); - action.run(); - clock.disableAutoIncrement(); - executeTasksUntilEmpty("mapreduce", clock); - - String fopDeposit = readXml("fop_2000-01-01_full_S1_R0.xml.ghostryde"); - assertThat(fopDeposit).contains("ns1.dein.fop"); - assertThat(fopDeposit).contains("ns1.kuss.lol"); - - String lolDeposit = readXml("lol_2000-01-01_full_S1_R0.xml.ghostryde"); - assertThat(lolDeposit).contains("ns1.dein.fop"); - assertThat(lolDeposit).contains("ns1.kuss.lol"); - } - - @Test - void testMapReduce_rewindCursor_resendsDepositAtHigherRevision() throws Exception { - clock.setTo(DateTime.parse("1999-12-31TZ")); - createTldWithEscrowEnabled("fop"); - makeHostResource(clock, "ns1.dein.fop", "a:fed::cafe"); - - clock.setTo(DateTime.parse("2000-01-01TZ")); - action.run(); - executeTasksUntilEmpty("mapreduce", clock); - - XjcRdeDeposit deposit = unmarshal( - XjcRdeDeposit.class, - readXml("fop_2000-01-01_full_S1_R0.xml.ghostryde").getBytes(UTF_8)); - assertThat(deposit.getResend()).isEqualTo(0); - - setCursor(Registry.get("fop"), RDE_STAGING, DateTime.parse("2000-01-01TZ")); - action.response = new FakeResponse(); - action.run(); - executeTasksUntilEmpty("mapreduce", clock); - deposit = unmarshal( - XjcRdeDeposit.class, readXml("fop_2000-01-01_full_S1_R1.xml.ghostryde").getBytes(UTF_8)); - assertThat(deposit.getResend()).isEqualTo(1); - } - - @Test - void testMapReduce_brdaDeposit_doesntIncludeHostsOrContacts() throws Exception { - clock.setTo(DateTime.parse("1999-12-31TZ")); - createTldWithEscrowEnabled("xn--q9jyb4c"); - makeHostResource(clock, "ns1.bofh.みんな", "dead:fed::cafe"); - makeContactResource(clock, "123-IRL", "raven", "edgar@allen.みんな"); - setCursor(Registry.get("xn--q9jyb4c"), RDE_STAGING, DateTime.parse("2000-01-04TZ")); - setCursor(Registry.get("xn--q9jyb4c"), BRDA, DateTime.parse("2000-01-04TZ")); - - clock.setTo(DateTime.parse("2000-01-04TZ")); // Tuesday - action.run(); - executeTasksUntilEmpty("mapreduce", clock); - - String rdeDeposit = readXml("xn--q9jyb4c_2000-01-04_full_S1_R0.xml.ghostryde"); - assertThat(rdeDeposit).contains("ns1.bofh.xn--q9jyb4c"); - assertThat(rdeDeposit).contains("edgar@allen.みんな"); - - String brdaDeposit = readXml("xn--q9jyb4c_2000-01-04_thin_S1_R0.xml.ghostryde"); - assertThat(brdaDeposit).doesNotContain("ns1.bofh.xn--q9jyb4c"); - assertThat(brdaDeposit).doesNotContain("edgar@allen.みんな"); - } - - @Test - void testMapReduce_catchUpCursor_doesPointInTime() throws Exception { - // Do nothing on the first day. - clock.setTo(DateTime.parse("1984-12-17T12:00Z")); - createTldWithEscrowEnabled("lol"); - setCursor(Registry.get("lol"), RDE_STAGING, DateTime.parse("1984-12-18TZ")); - - // Create the host resource on the second day. - clock.setTo(DateTime.parse("1984-12-18T12:00Z")); - HostResource ns1 = makeHostResource(clock, "ns1.justine.lol", "feed::a:bee"); - - // Modify it on the third day. - clock.setTo(DateTime.parse("1984-12-19T12:00Z")); - persistResourceWithCommitLog( - ns1.asBuilder() - .setInetAddresses(ImmutableSet.of(InetAddresses.forString("dead:beef::cafe"))) - .build()); - - // It's now the future. Let's catch up that cursor. - clock.setTo(DateTime.parse("1990-01-01TZ")); - - // First mapreduce shouldn't emit host because it didn't exist. - action.run(); - executeTasksUntilEmpty("mapreduce", clock); - String firstDeposit = readXml("lol_1984-12-18_full_S1_R0.xml.ghostryde"); - assertThat(firstDeposit).doesNotContain("ns1.justine.lol"); - assertThat( - auditedOfy() - .load() - .key(Cursor.createKey(RDE_STAGING, Registry.get("lol"))) - .now() - .getCursorTime()) - .isEqualTo(DateTime.parse("1984-12-19TZ")); - - // Second mapreduce should emit the old version of host. - action.response = new FakeResponse(); - action.run(); - executeTasksUntilEmpty("mapreduce", clock); - String secondDeposit = readXml("lol_1984-12-19_full_S1_R0.xml.ghostryde"); - assertThat(secondDeposit).contains("ns1.justine.lol"); - assertThat(secondDeposit).contains("feed::a:bee"); - assertThat(secondDeposit).doesNotContain("dead:beef::cafe"); - - assertThat( - auditedOfy() - .load() - .key(Cursor.createKey(RDE_STAGING, Registry.get("lol"))) - .now() - .getCursorTime()) - .isEqualTo(DateTime.parse("1984-12-20TZ")); - - // Third mapreduce emits current version of host. - action.response = new FakeResponse(); - action.run(); - executeTasksUntilEmpty("mapreduce", clock); - String thirdDeposit = readXml("lol_1984-12-20_full_S1_R0.xml.ghostryde"); - assertThat(thirdDeposit).contains("ns1.justine.lol"); - assertThat(thirdDeposit).doesNotContain("feed::a:bee"); - assertThat(thirdDeposit).contains("dead:beef::cafe"); - assertThat( - auditedOfy() - .load() - .key(Cursor.createKey(RDE_STAGING, Registry.get("lol"))) - .now() - .getCursorTime()) - .isEqualTo(DateTime.parse("1984-12-21TZ")); - } - - private void doManualModeMapReduceTest(int revision, ImmutableSet tlds) throws Exception { - clock.setTo(DateTime.parse("1999-12-31TZ")); - for (String tld : tlds) { - createTldWithEscrowEnabled(tld); - makeDomainBase(clock, tld); - setCursor(Registry.get(tld), RDE_STAGING, DateTime.parse("1999-01-01TZ")); - setCursor(Registry.get(tld), BRDA, DateTime.parse("2001-01-01TZ")); - } - - action.manual = true; - action.directory = Optional.of("test/"); - action.modeStrings = ImmutableSet.of("full", "thin"); - action.tlds = tlds; - action.watermarks = - ImmutableSet.of(DateTime.parse("2000-01-01TZ"), DateTime.parse("2000-01-02TZ")); - action.revision = Optional.of(revision); - - action.run(); - executeTasksUntilEmpty("mapreduce", clock); - - ImmutableList filenames = gcsUtils.listFolderObjects("rde-bucket", "manual/test/"); - for (String tld : tlds) { - assertThat(filenames) - .containsAtLeast( - tld + "_2000-01-01_full_S1_R" + revision + "-report.xml.ghostryde", - tld + "_2000-01-01_full_S1_R" + revision + ".xml.ghostryde", - tld + "_2000-01-01_full_S1_R" + revision + ".xml.length", - tld + "_2000-01-01_thin_S1_R" + revision + ".xml.ghostryde", - tld + "_2000-01-01_thin_S1_R" + revision + ".xml.length", - tld + "_2000-01-02_full_S1_R" + revision + "-report.xml.ghostryde", - tld + "_2000-01-02_full_S1_R" + revision + ".xml.ghostryde", - tld + "_2000-01-02_full_S1_R" + revision + ".xml.length", - tld + "_2000-01-02_thin_S1_R" + revision + ".xml.ghostryde", - tld + "_2000-01-02_thin_S1_R" + revision + ".xml.length"); - - assertThat( - auditedOfy() - .load() - .key(Cursor.createKey(RDE_STAGING, Registry.get(tld))) - .now() - .getCursorTime()) - .isEqualTo(DateTime.parse("1999-01-01TZ")); - assertThat( - auditedOfy() - .load() - .key(Cursor.createKey(BRDA, Registry.get(tld))) - .now() - .getCursorTime()) - .isEqualTo(DateTime.parse("2001-01-01TZ")); - } - } - - @Test - void testMapReduce_manualMode_generatesCorrectDepositsWithoutAdvancingCursors() throws Exception { - doManualModeMapReduceTest(0, ImmutableSet.of("lol")); - XmlTestUtils.assertXmlEquals( - loadFile(getClass(), "testMapReduce_withDomain_producesExpectedXml.xml"), - readXml("manual/test/lol_2000-01-01_full_S1_R0.xml.ghostryde"), - "deposit.contents.registrar.crDate", - "deposit.contents.registrar.upDate"); - XmlTestUtils.assertXmlEquals( - loadFile(getClass(), "testMapReduce_withDomain_producesReportXml.xml"), - readXml("manual/test/lol_2000-01-01_full_S1_R0-report.xml.ghostryde"), - "deposit.contents.registrar.crDate", - "deposit.contents.registrar.upDate"); - } - - @Test - void testMapReduce_manualMode_nonZeroRevisionAndMultipleTlds() throws Exception { - doManualModeMapReduceTest(42, ImmutableSet.of("lol", "slug")); - } - - private String readXml(String objectName) throws IOException, PGPException { - BlobId file = BlobId.of("rde-bucket", objectName); - return new String(Ghostryde.decode(gcsUtils.readBytesFrom(file), decryptKey), UTF_8); - } - - private - T extractAndRemoveContentWithType(Class type, XjcRdeDeposit deposit) { - for (JAXBElement content : deposit.getContents().getContents()) { - XjcRdeContentType piece = content.getValue(); - if (type.isInstance(piece) && !alreadyExtracted.contains(piece)) { - alreadyExtracted.add(piece); - return type.cast(piece); - } - } - throw new AssertionError("Expected deposit to contain another " + type.getSimpleName()); - } - - private static void createTldWithEscrowEnabled(final String tld) { - createTld(tld); - persistResource(Registry.get(tld).asBuilder().setEscrowEnabled(true).build()); - } - - private static ImmutableMap mapifyCounts(XjcRdeHeader header) { - ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); - for (XjcRdeHeaderCount count : header.getCounts()) { - builder.put(count.getUri(), count.getValue()); - } - return builder.build(); - } - - private void setCursor( - final Registry registry, final CursorType cursorType, final DateTime value) { - clock.advanceOneMilli(); - tm().transact(() -> tm().put(Cursor.create(cursorType, value, registry))); - } - - public static T unmarshal(Class clazz, byte[] xml) throws XmlException { - return XjcXmlTransformer.unmarshal(clazz, new ByteArrayInputStream(xml)); - } -} diff --git a/core/src/test/java/google/registry/rde/RdeStagingActionCloudSqlTest.java b/core/src/test/java/google/registry/rde/RdeStagingActionTest.java similarity index 99% rename from core/src/test/java/google/registry/rde/RdeStagingActionCloudSqlTest.java rename to core/src/test/java/google/registry/rde/RdeStagingActionTest.java index 2dffd5b74..6f2666ef3 100644 --- a/core/src/test/java/google/registry/rde/RdeStagingActionCloudSqlTest.java +++ b/core/src/test/java/google/registry/rde/RdeStagingActionTest.java @@ -45,7 +45,7 @@ import org.junit.jupiter.api.extension.RegisterExtension; /** Unit tests for {@link RdeStagingAction} in Cloud SQL. */ @DualDatabaseTest -public class RdeStagingActionCloudSqlTest extends BeamActionTestBase { +public class RdeStagingActionTest extends BeamActionTestBase { private final FakeClock clock = new FakeClock(); private final GcsUtils gcsUtils = new GcsUtils(LocalStorageHelper.getOptions()); diff --git a/core/src/test/java/google/registry/rde/RdeStagingMapperTest.java b/core/src/test/java/google/registry/rde/RdeStagingMapperTest.java deleted file mode 100644 index 685635b28..000000000 --- a/core/src/test/java/google/registry/rde/RdeStagingMapperTest.java +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright 2020 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.rde; - -import static com.google.common.base.Preconditions.checkState; -import static com.google.common.truth.Truth8.assertThat; -import static google.registry.persistence.transaction.TransactionManagerFactory.tm; -import static google.registry.testing.DatabaseHelper.persistNewRegistrar; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.verify; - -import com.google.appengine.tools.mapreduce.MapperContext; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSetMultimap; -import google.registry.model.registrar.Registrar; -import google.registry.model.registrar.Registrar.State; -import google.registry.testing.AppEngineExtension; -import google.registry.testing.TmOverrideExtension; -import google.registry.xml.ValidationMode; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.junit.jupiter.api.extension.RegisterExtension; -import org.mockito.ArgumentCaptor; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.mockito.junit.jupiter.MockitoExtension; - -/** Unit tests for {@link RdeStagingMapper}. */ -@ExtendWith(MockitoExtension.class) -class RdeStagingMapperTest { - - private static final Pattern REGISTRAR_NAME_PATTERN = - Pattern.compile("(.*)"); - - @Mock PendingDeposit pendingDeposit; - - @Mock MapperContext context; - - private ArgumentCaptor depositFragmentCaptor = - ArgumentCaptor.forClass(DepositFragment.class); - - @RegisterExtension - @Order(Order.DEFAULT - 1) - TmOverrideExtension tmOverrideExtension = TmOverrideExtension.withOfy(); - - @RegisterExtension - AppEngineExtension appEngineExtension = - AppEngineExtension.builder().withDatastoreAndCloudSql().build(); - - private RdeStagingMapper rdeStagingMapper; - - @BeforeEach - void beforeEach() { - // Two real registrars have been created by AppEngineExtension, named "New Registrar" and "The - // Registrar". Create one included registrar (external_monitoring) and two excluded ones. - Registrar monitoringRegistrar = - persistNewRegistrar("monitoring", "monitoring", Registrar.Type.MONITORING, null); - Registrar testRegistrar = persistNewRegistrar("test", "test", Registrar.Type.TEST, null); - Registrar externalMonitoringRegistrar = - persistNewRegistrar( - "externalmonitor", "external_monitoring", Registrar.Type.EXTERNAL_MONITORING, 9997L); - - // Set Registrar states which are required for reporting. - tm().transact( - () -> - tm().putAll( - ImmutableList.of( - externalMonitoringRegistrar.asBuilder().setState(State.ACTIVE).build(), - testRegistrar.asBuilder().setState(State.ACTIVE).build(), - monitoringRegistrar.asBuilder().setState(State.ACTIVE).build()))); - - rdeStagingMapper = - new RdeStagingMapper(ValidationMode.STRICT, ImmutableSetMultimap.of("1", pendingDeposit)); - rdeStagingMapper.setContext(context); - } - - @Test - void registrars_ignoreMonitoringAndTestTypes() { - rdeStagingMapper.map(null); - verify(context, Mockito.times(3)) - .emit(any(PendingDeposit.class), depositFragmentCaptor.capture()); - assertThat( - depositFragmentCaptor.getAllValues().stream() - .map(RdeStagingMapperTest::findRegistrarName)) - .containsExactly("New Registrar", "The Registrar", "external_monitoring"); - } - - private static String findRegistrarName(DepositFragment fragment) { - Matcher matcher = REGISTRAR_NAME_PATTERN.matcher(fragment.xml()); - checkState(matcher.find(), "Missing registarName in xml."); - return matcher.group(1); - } -} diff --git a/core/src/test/java/google/registry/rde/RdeStagingReducerTest.java b/core/src/test/java/google/registry/rde/RdeStagingReducerTest.java deleted file mode 100644 index dcc9cacd8..000000000 --- a/core/src/test/java/google/registry/rde/RdeStagingReducerTest.java +++ /dev/null @@ -1,254 +0,0 @@ -// Copyright 2020 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.rde; - -import static com.google.common.truth.Truth.assertThat; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.model.rde.RdeMode.FULL; -import static google.registry.model.rde.RdeMode.THIN; -import static google.registry.persistence.transaction.TransactionManagerFactory.tm; -import static google.registry.testing.DatabaseHelper.createTld; -import static google.registry.util.ResourceUtils.readResourceUtf8; -import static java.nio.charset.StandardCharsets.UTF_8; -import static org.junit.jupiter.api.Assertions.assertThrows; - -import com.google.appengine.tools.mapreduce.ReducerInput; -import com.google.cloud.storage.BlobId; -import com.google.cloud.storage.StorageException; -import com.google.cloud.storage.contrib.nio.testing.LocalStorageHelper; -import com.google.common.collect.ImmutableList; -import google.registry.beam.rde.RdePipelineTest; -import google.registry.gcs.GcsUtils; -import google.registry.keyring.api.PgpHelper; -import google.registry.model.common.Cursor; -import google.registry.model.common.Cursor.CursorType; -import google.registry.model.rde.RdeMode; -import google.registry.model.rde.RdeRevision; -import google.registry.model.tld.Registry; -import google.registry.request.RequestParameters; -import google.registry.testing.AppEngineExtension; -import google.registry.testing.CloudTasksHelper; -import google.registry.testing.CloudTasksHelper.TaskMatcher; -import google.registry.testing.FakeKeyringModule; -import google.registry.testing.FakeLockHandler; -import google.registry.testing.TmOverrideExtension; -import google.registry.xml.ValidationMode; -import java.io.IOException; -import java.util.Iterator; -import org.bouncycastle.openpgp.PGPException; -import org.bouncycastle.openpgp.PGPPrivateKey; -import org.bouncycastle.openpgp.PGPPublicKey; -import org.joda.time.DateTime; -import org.joda.time.Duration; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Unit tests for {@link RdeStagingReducer}. */ -class RdeStagingReducerTest { - - @RegisterExtension - @Order(Order.DEFAULT - 1) - TmOverrideExtension tmOverrideExtension = TmOverrideExtension.withOfy(); - - @RegisterExtension - AppEngineExtension appEngineExtension = - AppEngineExtension.builder().withDatastoreAndCloudSql().withTaskQueue().build(); - - private static final String GCS_BUCKET = "test-rde-bucket"; - private static final GcsUtils gcsUtils = new GcsUtils(LocalStorageHelper.getOptions()); - private static final PGPPrivateKey decryptionKey = - new FakeKeyringModule().get().getRdeStagingDecryptionKey(); - private static final PGPPublicKey encryptionKey = - new FakeKeyringModule().get().getRdeStagingEncryptionKey(); - private static final DateTime now = DateTime.parse("2000-01-01TZ"); - private final CloudTasksHelper cloudTasksHelper = new CloudTasksHelper(); - - private Fragments brdaFragments = - new Fragments( - ImmutableList.of( - DepositFragment.create(RdeResourceType.DOMAIN, "\n", ""), - DepositFragment.create( - RdeResourceType.REGISTRAR, "\n", ""))); - - private Fragments rdeFragments = - new Fragments( - ImmutableList.of( - DepositFragment.create(RdeResourceType.DOMAIN, "\n", ""), - DepositFragment.create(RdeResourceType.REGISTRAR, "\n", ""), - DepositFragment.create(RdeResourceType.CONTACT, "\n", ""), - DepositFragment.create(RdeResourceType.HOST, "\n", ""))); - - private PendingDeposit key; - - private RdeStagingReducer reducer = - new RdeStagingReducer( - cloudTasksHelper.getTestCloudTasksUtils(), - new FakeLockHandler(true), - GCS_BUCKET, - Duration.ZERO, - PgpHelper.convertPublicKeyToBytes(encryptionKey), - ValidationMode.STRICT, - gcsUtils); - - @BeforeEach - void beforeEach() { - createTld("soy"); - tm().transact( - () -> { - tm().put(Cursor.create(CursorType.BRDA, now, Registry.get("soy"))); - tm().put(Cursor.create(CursorType.RDE_STAGING, now, Registry.get("soy"))); - RdeRevision.saveRevision("soy", now, THIN, 0); - RdeRevision.saveRevision("soy", now, FULL, 0); - }); - } - - @Test - void testSuccess_BRDA() throws Exception { - key = PendingDeposit.create("soy", now, THIN, CursorType.BRDA, Duration.standardDays(1)); - reducer.reduce(key, brdaFragments); - String outputFile = decryptGhostrydeGcsFile("soy_2000-01-01_thin_S1_R1.xml.ghostryde"); - assertThat(outputFile) - .isEqualTo( - readResourceUtf8(RdePipelineTest.class, "reducer_brda.xml") - .replace("%RESEND%", " resend=\"1\"")); - compareLength(outputFile, "soy_2000-01-01_thin_S1_R1.xml.length"); - // BRDA doesn't write a report file. - assertThrows( - StorageException.class, - () -> - gcsUtils.readBytesFrom( - BlobId.of(GCS_BUCKET, "soy_2000-01-01_thin_S1_R1-report.xml.ghostryde"))); - assertThat(loadCursorTime(CursorType.BRDA)) - .isEquivalentAccordingToCompareTo(now.plus(Duration.standardDays(1))); - assertThat(loadRevision(THIN)).isEqualTo(1); - cloudTasksHelper.assertTasksEnqueued( - "brda", - new TaskMatcher() - .url(BrdaCopyAction.PATH) - .param(RequestParameters.PARAM_TLD, "soy") - .param(RdeModule.PARAM_WATERMARK, now.toString())); - } - - @Test - void testSuccess_BRDA_manual() throws Exception { - key = PendingDeposit.createInManualOperation("soy", now, THIN, "", 0); - reducer.reduce(key, brdaFragments); - String outputFile = decryptGhostrydeGcsFile("manual/soy_2000-01-01_thin_S1_R0.xml.ghostryde"); - assertThat(outputFile) - .isEqualTo( - readResourceUtf8(RdePipelineTest.class, "reducer_brda.xml").replace("%RESEND%", "")); - compareLength(outputFile, "manual/soy_2000-01-01_thin_S1_R0.xml.length"); - // BRDA doesn't write a report file. - assertThrows( - StorageException.class, - () -> - gcsUtils.readBytesFrom( - BlobId.of(GCS_BUCKET, "manual/soy_2000-01-01_thin_S1_R0-report.xml.ghostryde"))); - // No extra operations in manual mode. - assertThat(loadCursorTime(CursorType.BRDA)).isEquivalentAccordingToCompareTo(now); - assertThat(loadRevision(THIN)).isEqualTo(0); - cloudTasksHelper.assertNoTasksEnqueued("brda"); - } - - @Test - void testSuccess_RDE() throws Exception { - key = PendingDeposit.create("soy", now, FULL, CursorType.RDE_STAGING, Duration.standardDays(1)); - reducer.reduce(key, rdeFragments); - String outputFile = decryptGhostrydeGcsFile("soy_2000-01-01_full_S1_R1.xml.ghostryde"); - assertThat(outputFile) - .isEqualTo( - readResourceUtf8(RdePipelineTest.class, "reducer_rde.xml") - .replace("%RESEND%", " resend=\"1\"")); - compareLength(outputFile, "soy_2000-01-01_full_S1_R1.xml.length"); - assertThat(decryptGhostrydeGcsFile("soy_2000-01-01_full_S1_R1-report.xml.ghostryde")) - .isEqualTo( - readResourceUtf8(RdePipelineTest.class, "reducer_rde_report.xml") - .replace("%RESEND%", "1")); - assertThat(loadCursorTime(CursorType.RDE_STAGING)) - .isEquivalentAccordingToCompareTo(now.plus(Duration.standardDays(1))); - assertThat(loadRevision(FULL)).isEqualTo(1); - cloudTasksHelper.assertTasksEnqueued( - "rde-upload", - new TaskMatcher().url(RdeUploadAction.PATH).param(RequestParameters.PARAM_TLD, "soy")); - } - - @Test - void testSuccess_RDE_manual() throws Exception { - key = PendingDeposit.createInManualOperation("soy", now, FULL, "", 0); - reducer.reduce(key, rdeFragments); - String outputFile = decryptGhostrydeGcsFile("manual/soy_2000-01-01_full_S1_R0.xml.ghostryde"); - assertThat(outputFile) - .isEqualTo( - readResourceUtf8(RdePipelineTest.class, "reducer_rde.xml").replace("%RESEND%", "")); - compareLength(outputFile, "manual/soy_2000-01-01_full_S1_R0.xml.length"); - assertThat(decryptGhostrydeGcsFile("manual/soy_2000-01-01_full_S1_R0-report.xml.ghostryde")) - .isEqualTo( - readResourceUtf8(RdePipelineTest.class, "reducer_rde_report.xml") - .replace("%RESEND%", "0")); - // No extra operations in manual mode. - assertThat(loadCursorTime(CursorType.RDE_STAGING)).isEquivalentAccordingToCompareTo(now); - assertThat(loadRevision(FULL)).isEqualTo(0); - cloudTasksHelper.assertNoTasksEnqueued("rde-upload"); - } - - private static void compareLength(String outputFile, String lengthFilename) throws IOException { - assertThat(String.valueOf(outputFile.getBytes(UTF_8).length)) - .isEqualTo( - new String(gcsUtils.readBytesFrom(BlobId.of(GCS_BUCKET, lengthFilename)), UTF_8)); - } - - private static DateTime loadCursorTime(CursorType type) { - return auditedOfy() - .load() - .key(Cursor.createKey(type, Registry.get("soy"))) - .now() - .getCursorTime(); - } - - private static int loadRevision(RdeMode mode) { - return auditedOfy() - .load() - .type(RdeRevision.class) - .id("soy_2000-01-01_" + mode.getFilenameComponent()) - .now() - .getRevision(); - } - - private static String decryptGhostrydeGcsFile(String filename) throws IOException, PGPException { - return new String( - Ghostryde.decode(gcsUtils.readBytesFrom(BlobId.of(GCS_BUCKET, filename)), decryptionKey), - UTF_8); - } - - private static class Fragments extends ReducerInput { - private final Iterator iterator; - - Fragments(Iterable iterable) { - this.iterator = iterable.iterator(); - } - - @Override - public boolean hasNext() { - return iterator.hasNext(); - } - - @Override - public DepositFragment next() { - return iterator.next(); - } - } -} diff --git a/core/src/test/java/google/registry/rde/RdeTestSuite.java b/core/src/test/java/google/registry/rde/RdeTestSuite.java index eaad3eb6a..f0d0d7282 100644 --- a/core/src/test/java/google/registry/rde/RdeTestSuite.java +++ b/core/src/test/java/google/registry/rde/RdeTestSuite.java @@ -27,8 +27,7 @@ import org.junit.runner.RunWith; GhostrydeGpgIntegrationTest.class, GhostrydeTest.class, HostResourceToXjcConverterTest.class, - RdeStagingActionDatastoreTest.class, - RdeStagingActionCloudSqlTest.class, + RdeStagingActionTest.class, RdeUploadActionTest.class, RdeReportActionTest.class, RegistrarToXjcConverterTest.class, diff --git a/core/src/test/java/google/registry/testing/DatabaseHelper.java b/core/src/test/java/google/registry/testing/DatabaseHelper.java index c4fa20414..77ef9263d 100644 --- a/core/src/test/java/google/registry/testing/DatabaseHelper.java +++ b/core/src/test/java/google/registry/testing/DatabaseHelper.java @@ -976,14 +976,14 @@ public class DatabaseHelper { * {@link ForeignKeyIndex}. * *

Note: Your resource will not be enrolled in a commit log. If you want backups, use - * {@link #persistResourceWithCommitLog(Object)}. + * {@link #persistResourceWithBackup(Object)}. */ public static R persistResource(final R resource) { return persistResource(resource, false); } /** Same as {@link #persistResource(Object)} with backups enabled. */ - public static R persistResourceWithCommitLog(final R resource) { + public static R persistResourceWithBackup(final R resource) { return persistResource(resource, true); } diff --git a/core/src/test/java/google/registry/testing/mapreduce/MapreduceTestCase.java b/core/src/test/java/google/registry/testing/mapreduce/MapreduceTestCase.java deleted file mode 100644 index 32a3546de..000000000 --- a/core/src/test/java/google/registry/testing/mapreduce/MapreduceTestCase.java +++ /dev/null @@ -1,250 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.testing.mapreduce; - -import static google.registry.config.RegistryConfig.getEppResourceIndexBucketCount; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import com.google.appengine.api.blobstore.dev.LocalBlobstoreService; -import com.google.appengine.api.modules.ModulesService; -import com.google.appengine.api.taskqueue.dev.LocalTaskQueue; -import com.google.appengine.api.taskqueue.dev.QueueStateInfo; -import com.google.appengine.api.taskqueue.dev.QueueStateInfo.HeaderWrapper; -import com.google.appengine.tools.development.ApiProxyLocal; -import com.google.appengine.tools.development.testing.LocalTaskQueueTestConfig; -import com.google.appengine.tools.mapreduce.MapReduceServlet; -import com.google.appengine.tools.pipeline.impl.servlets.PipelineServlet; -import com.google.appengine.tools.pipeline.impl.servlets.TaskHandler; -import com.google.apphosting.api.ApiProxy; -import com.google.common.base.CharMatcher; -import com.google.common.base.Splitter; -import com.google.common.flogger.FluentLogger; -import google.registry.mapreduce.MapreduceRunner; -import google.registry.testing.AppEngineExtension; -import google.registry.testing.FakeClock; -import google.registry.util.AppEngineServiceUtils; -import google.registry.util.AppEngineServiceUtilsImpl; -import java.io.ByteArrayInputStream; -import java.io.ObjectInputStream; -import java.io.UnsupportedEncodingException; -import java.net.URLDecoder; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import javax.annotation.Nullable; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.extension.ExtendWith; -import org.junit.jupiter.api.extension.RegisterExtension; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.mockito.junit.jupiter.MockitoExtension; -import org.mockito.junit.jupiter.MockitoSettings; -import org.mockito.quality.Strictness; - -/** - * Base test class for mapreduces. - * - *

Adapted from EndToEndTestCase with some modifications that allow it to work with Nomulus, most - * notably inside knowledge of our routing paths and our Datastore/Task Queue configurations. - * - *

See - * https://github.com/GoogleCloudPlatform/appengine-mapreduce/blob/master/java/src/test/java/com/google/appengine/tools/mapreduce/EndToEndTestCase.java - * - * @param The type of the Action class that implements the mapreduce. - */ -@ExtendWith(MockitoExtension.class) -@MockitoSettings(strictness = Strictness.LENIENT) -public abstract class MapreduceTestCase { - - private static final FluentLogger logger = FluentLogger.forEnclosingClass(); - - protected T action; - - private final MapReduceServlet mrServlet = new MapReduceServlet(); - private final PipelineServlet pipelineServlet = new PipelineServlet(); - private LocalTaskQueue taskQueue; - - @RegisterExtension - public final AppEngineExtension appEngine = - AppEngineExtension.builder() - .withDatastoreAndCloudSql() - .withLocalModules() - .withTaskQueue() - .build(); - - private AppEngineServiceUtils appEngineServiceUtils; - - @Mock ModulesService modulesService; - - @BeforeEach - public void beforeEachMapreduceTestCase() { - taskQueue = LocalTaskQueueTestConfig.getLocalTaskQueue(); - ApiProxyLocal proxy = (ApiProxyLocal) ApiProxy.getDelegate(); - // Creating files is not allowed in some test execution environments, so don't. - proxy.setProperty(LocalBlobstoreService.NO_STORAGE_PROPERTY, "true"); - appEngineServiceUtils = new AppEngineServiceUtilsImpl(modulesService); - Mockito.when(modulesService.getVersionHostname("backend", null)) - .thenReturn("version.backend.projectid.appspot.com"); - } - - protected MapreduceRunner makeDefaultRunner() { - return new MapreduceRunner( - Optional.of(getEppResourceIndexBucketCount()), Optional.of(1), appEngineServiceUtils); - } - - protected List getTasks(String queueName) { - return taskQueue.getQueueStateInfo().get(queueName).getTaskInfo(); - } - - private void executeTask(String queueName, QueueStateInfo.TaskStateInfo taskStateInfo) - throws Exception { - logger.atFine().log( - "Executing task %s with URL %s", taskStateInfo.getTaskName(), taskStateInfo.getUrl()); - // Hack to allow for deferred tasks. Exploits knowing how they work. - if (taskStateInfo.getUrl().endsWith("__deferred__")) { - ObjectInputStream oin = - new ObjectInputStream(new ByteArrayInputStream(taskStateInfo.getBodyAsBytes())); - Runnable object = (Runnable) oin.readObject(); - object.run(); - return; - } - HttpServletRequest request = mock(HttpServletRequest.class); - HttpServletResponse response = mock(HttpServletResponse.class); - - // Strip off routing paths that are handled in web.xml in non-test scenarios. - String pathInfo = taskStateInfo.getUrl(); - if (pathInfo.startsWith("/_dr/mapreduce/")) { - pathInfo = pathInfo.replace("/_dr/mapreduce", ""); - } else if (pathInfo.startsWith("/mapreduce/")) { - pathInfo = pathInfo.replace("/mapreduce", ""); - } else if (pathInfo.startsWith("/")) { - pathInfo = pathInfo.replace("/_ah/", ""); - pathInfo = pathInfo.substring(pathInfo.indexOf('/')); - } else { - pathInfo = "/" + pathInfo; - } - when(request.getPathInfo()).thenReturn(pathInfo); - when(request.getHeader("X-AppEngine-QueueName")).thenReturn(queueName); - when(request.getHeader("X-AppEngine-TaskName")).thenReturn(taskStateInfo.getTaskName()); - // Pipeline looks at this header but uses the value only for diagnostic messages - when(request.getIntHeader(TaskHandler.TASK_RETRY_COUNT_HEADER)).thenReturn(-1); - for (HeaderWrapper header : taskStateInfo.getHeaders()) { - int value = parseAsQuotedInt(header.getValue()); - Mockito.when(request.getIntHeader(header.getKey())).thenReturn(value); - logger.atFine().log("header: %s=%s", header.getKey(), header.getValue()); - Mockito.when(request.getHeader(header.getKey())).thenReturn(header.getValue()); - } - - Map parameters = decodeParameters(taskStateInfo.getBody()); - for (String name : parameters.keySet()) { - when(request.getParameter(name)).thenReturn(parameters.get(name)); - } - when(request.getParameterNames()).thenReturn(Collections.enumeration(parameters.keySet())); - - if (taskStateInfo.getMethod().equals("POST")) { - if (taskStateInfo.getUrl().startsWith(PipelineServlet.BASE_URL)) { - pipelineServlet.doPost(request, response); - } else { - mrServlet.doPost(request, response); - } - } else { - throw new UnsupportedOperationException(); - } - } - - private int parseAsQuotedInt(String str) { - try { - return Integer.parseInt(CharMatcher.is('"').trimFrom(str)); - } catch (NumberFormatException e) { - return -1; - } - } - - /** - * Executes tasks in the mapreduce queue until all are finished. - * - *

If you are mocking a clock in your tests, use the - * {@link #executeTasksUntilEmpty(String, FakeClock)} version instead. - */ - protected void executeTasksUntilEmpty(String queueName) throws Exception { - executeTasksUntilEmpty(queueName, null); - } - - /** - * Executes mapreduce tasks, increment the clock between each task. - * - *

Incrementing the clock between tasks is important if tasks have transactions inside the - * mapper or reducer, which don't have access to the fake clock. - */ - protected void executeTasksUntilEmpty(String queueName, @Nullable FakeClock clock) - throws Exception { - executeTasks(queueName, clock, Optional.empty()); - } - - /** - * Executes mapreduce tasks, increment the clock between each task. - * - *

Incrementing the clock between tasks is important if tasks have transactions inside the - * mapper or reducer, which don't have access to the fake clock. - * - *

The maxTasks parameter determines how many tasks (at most) will be run. If maxTasks is - * absent(), all tasks are run until the queue is empty. If maxTasks is zero, no tasks are run. - */ - private void executeTasks(String queueName, @Nullable FakeClock clock, Optional maxTasks) - throws Exception { - for (int numTasksDeleted = 0; - !maxTasks.isPresent() || (numTasksDeleted < maxTasks.get()); - numTasksDeleted++) { - auditedOfy().clearSessionCache(); - // We have to re-acquire task list every time, because local implementation returns a copy. - List taskInfo = - taskQueue.getQueueStateInfo().get(queueName).getTaskInfo(); - if (taskInfo.isEmpty()) { - break; - } - QueueStateInfo.TaskStateInfo taskStateInfo = taskInfo.get(0); - taskQueue.deleteTask(queueName, taskStateInfo.getTaskName()); - executeTask(queueName, taskStateInfo); - if (clock != null) { - clock.advanceOneMilli(); - } - } - } - - // Sadly there's no way to parse query string with JDK. This is a good enough approximation. - private static Map decodeParameters(String requestBody) - throws UnsupportedEncodingException { - Map result = new HashMap<>(); - - Iterable params = Splitter.on('&').split(requestBody); - for (String param : params) { - List pair = Splitter.on('=').splitToList(param); - String name = pair.get(0); - String value = URLDecoder.decode(pair.get(1), "UTF-8"); - if (result.containsKey(name)) { - throw new IllegalArgumentException("Duplicate parameter: " + requestBody); - } - result.put(name, value); - } - - return result; - } -} diff --git a/core/src/test/java/google/registry/tools/CompareDbBackupsTest.java b/core/src/test/java/google/registry/tools/CompareDbBackupsTest.java deleted file mode 100644 index 5a8f0840e..000000000 --- a/core/src/test/java/google/registry/tools/CompareDbBackupsTest.java +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static com.google.common.truth.Truth.assertThat; -import static java.nio.charset.StandardCharsets.UTF_8; - -import com.google.common.io.Resources; -import google.registry.model.annotations.DeleteAfterMigration; -import google.registry.testing.DatastoreEntityExtension; -import google.registry.tools.EntityWrapper.Property; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.PrintStream; -import java.net.URL; -import java.nio.file.Files; -import java.nio.file.Path; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; -import org.junit.jupiter.api.io.TempDir; - -@DeleteAfterMigration -public class CompareDbBackupsTest { - - private static final int BASE_ID = 1001; - - // Capture standard output. - private final ByteArrayOutputStream stdout = new ByteArrayOutputStream(); - private PrintStream orgStdout; - - @TempDir Path tmpDir; - - @RegisterExtension - public DatastoreEntityExtension datastoreEntityExtension = new DatastoreEntityExtension(); - - @BeforeEach - void beforeEach() { - orgStdout = System.out; - System.setOut(new PrintStream(stdout)); - } - - @AfterEach - void afterEach() { - System.setOut(orgStdout); - } - - @Test - void testLoadBackup() { - URL backupRootFolder = Resources.getResource("google/registry/tools/datastore-export"); - CompareDbBackups.main(new String[] {backupRootFolder.getPath(), backupRootFolder.getPath()}); - String output = new String(stdout.toByteArray(), UTF_8); - assertThat(output).contains("Both sets have the same 41 entities"); - } - - @Test - void testCompareBackups() throws Exception { - // Create two directories corresponding to data dumps. - Path dump1 = Files.createDirectory(tmpDir.resolve("dump1")); - Path dump2 = Files.createDirectory(tmpDir.resolve("dump2")); - - LevelDbFileBuilder builder = new LevelDbFileBuilder(new File(dump1.toFile(), "output-data1")); - builder.addEntity( - EntityWrapper.from( - BASE_ID, - Property.create("eeny", 100L), - Property.create("meeny", 200L), - Property.create("miney", 300L)) - .getEntity()); - builder.addEntity( - EntityWrapper.from( - BASE_ID + 1, - Property.create("moxey", 100L), - Property.create("minney", 200L), - Property.create("motz", 300L)) - .getEntity()); - builder.build(); - - builder = new LevelDbFileBuilder(new File(dump2.toFile(), "output-data2")); - builder.addEntity( - EntityWrapper.from( - BASE_ID + 1, - Property.create("moxey", 100L), - Property.create("minney", 200L), - Property.create("motz", 300L)) - .getEntity()); - builder.addEntity( - EntityWrapper.from( - BASE_ID + 2, - Property.create("blutzy", 100L), - Property.create("fishey", 200L), - Property.create("strutz", 300L)) - .getEntity()); - builder.build(); - - CompareDbBackups.main(new String[] {dump1.toString(), dump2.toString()}); - String output = new String(stdout.toByteArray(), UTF_8); - assertThat(output) - .containsMatch("(?s)1 records were removed.*eeny.*1 records were added.*blutzy"); - } -} diff --git a/core/src/test/java/google/registry/tools/GetResourceByKeyCommandTest.java b/core/src/test/java/google/registry/tools/GetResourceByKeyCommandTest.java deleted file mode 100644 index 0782960a0..000000000 --- a/core/src/test/java/google/registry/tools/GetResourceByKeyCommandTest.java +++ /dev/null @@ -1,235 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static com.google.common.truth.Truth.assertThat; -import static google.registry.testing.DatabaseHelper.createTld; -import static google.registry.testing.DatabaseHelper.persistActiveContact; -import static google.registry.testing.DatabaseHelper.persistActiveDomain; -import static google.registry.testing.DatabaseHelper.persistActiveHost; -import static google.registry.testing.DatabaseHelper.persistDeletedContact; -import static google.registry.testing.DatabaseHelper.persistDeletedDomain; -import static google.registry.testing.DatabaseHelper.persistDeletedHost; -import static org.joda.time.DateTimeZone.UTC; -import static org.junit.jupiter.api.Assertions.assertThrows; - -import com.beust.jcommander.ParameterException; -import google.registry.testing.TmOverrideExtension; -import org.joda.time.DateTime; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Unit tests for {@link GetResourceByKeyCommand}. */ -class GetResourceByKeyCommandTest extends CommandTestCase { - - @RegisterExtension - @Order(Order.DEFAULT - 1) - TmOverrideExtension tmOverrideExtension = TmOverrideExtension.withOfy(); - - private DateTime now = DateTime.now(UTC); - - @BeforeEach - void beforeEach() { - createTld("tld"); - } - - @Test - void testSuccess_domain() throws Exception { - persistActiveDomain("example.tld"); - runCommand("agR0ZXN0chULEgpEb21haW5CYXNlIgUyLVRMRAw"); - assertInStdout("fullyQualifiedDomainName=example.tld"); - assertInStdout("contact=Key(ContactResource(\"3-ROID\"))"); - } - - @Test - void testSuccess_domain_expand() throws Exception { - persistActiveDomain("example.tld"); - runCommand("agR0ZXN0chULEgpEb21haW5CYXNlIgUyLVRMRAw", "--expand"); - assertInStdout("fullyQualifiedDomainName=example.tld"); - assertInStdout("contactId=contact1234"); - assertNotInStdout("LiveRef"); - } - - @Test - void testSuccess_domain_multipleArguments() throws Exception { - persistActiveDomain("example.tld"); - persistActiveDomain("example2.tld"); - runCommand( - "agR0ZXN0chULEgpEb21haW5CYXNlIgUyLVRMRAw", "agR0ZXN0chULEgpEb21haW5CYXNlIgU0LVRMRAw"); - assertInStdout("fullyQualifiedDomainName=example.tld"); - assertInStdout("fullyQualifiedDomainName=example2.tld"); - } - - @Test - void testFailure_domain_oneDoesNotExist() { - persistActiveDomain("example.tld"); - NullPointerException thrown = - assertThrows( - NullPointerException.class, - () -> - runCommand( - "agR0ZXN0chULEgpEb21haW5CYXNlIgUyLVRMRAw", - "agR0ZXN0chULEgpEb21haW5CYXNlIgU0LVRMRAw")); - assertThat(thrown) - .hasMessageThat() - .contains("Could not load resource for key: VKey(sql:4-TLD,ofy:4-TLD)"); - } - - @Test - void testSuccess_deletedDomain() throws Exception { - persistDeletedDomain("example.tld", now.minusDays(1)); - runCommand("agR0ZXN0chULEgpEb21haW5CYXNlIgUyLVRMRAw"); - assertInStdout("fullyQualifiedDomainName=example.tld"); - assertInStdout("deletionTime=" + now.minusDays(1)); - } - - @Test - void testSuccess_contact() throws Exception { - persistActiveContact("sh8013"); - runCommand("agR0ZXN0chsLEg9Db250YWN0UmVzb3VyY2UiBjItUk9JRAw"); - assertInStdout("contactId=sh8013"); - } - - @Test - void testSuccess_contact_expand() throws Exception { - persistActiveContact("sh8013"); - runCommand("agR0ZXN0chsLEg9Db250YWN0UmVzb3VyY2UiBjItUk9JRAw", "--expand"); - assertInStdout("contactId=sh8013"); - assertNotInStdout("LiveRef"); - } - - @Test - void testSuccess_contact_multipleArguments() throws Exception { - persistActiveContact("sh8013"); - persistActiveContact("jd1234"); - runCommand( - "agR0ZXN0chsLEg9Db250YWN0UmVzb3VyY2UiBjItUk9JRAw", - "agR0ZXN0chsLEg9Db250YWN0UmVzb3VyY2UiBjMtUk9JRAw"); - assertInStdout("contactId=sh8013"); - assertInStdout("contactId=jd1234"); - } - - @Test - void testFailure_contact_oneDoesNotExist() { - persistActiveContact("sh8013"); - NullPointerException thrown = - assertThrows( - NullPointerException.class, - () -> - runCommand( - "agR0ZXN0chsLEg9Db250YWN0UmVzb3VyY2UiBjItUk9JRAw", - "agR0ZXN0chsLEg9Db250YWN0UmVzb3VyY2UiBjMtUk9JRAw")); - assertThat(thrown) - .hasMessageThat() - .contains("Could not load resource for key: VKey(sql:3-ROID,ofy:3-ROID)"); - } - - @Test - void testSuccess_deletedContact() throws Exception { - persistDeletedContact("sh8013", now.minusDays(1)); - runCommand("agR0ZXN0chsLEg9Db250YWN0UmVzb3VyY2UiBjItUk9JRAw"); - assertInStdout("contactId=sh8013"); - assertInStdout("deletionTime=" + now.minusDays(1)); - } - - @Test - void testSuccess_host() throws Exception { - persistActiveHost("ns1.example.tld"); - runCommand("agR0ZXN0chgLEgxIb3N0UmVzb3VyY2UiBjItUk9JRAw"); - assertInStdout("fullyQualifiedHostName=ns1.example.tld"); - } - - @Test - void testSuccess_host_expand() throws Exception { - persistActiveHost("ns1.example.tld"); - runCommand("agR0ZXN0chgLEgxIb3N0UmVzb3VyY2UiBjItUk9JRAw", "--expand"); - assertInStdout("fullyQualifiedHostName=ns1.example.tld"); - assertNotInStdout("LiveRef"); - } - - @Test - void testSuccess_host_multipleArguments() throws Exception { - persistActiveHost("ns1.example.tld"); - persistActiveHost("ns2.example.tld"); - runCommand( - "agR0ZXN0chgLEgxIb3N0UmVzb3VyY2UiBjItUk9JRAw", - "agR0ZXN0chgLEgxIb3N0UmVzb3VyY2UiBjMtUk9JRAw"); - assertInStdout("fullyQualifiedHostName=ns1.example.tld"); - assertInStdout("fullyQualifiedHostName=ns2.example.tld"); - } - - @Test - void testFailure_host_oneDoesNotExist() { - persistActiveHost("ns1.example.tld"); - NullPointerException thrown = - assertThrows( - NullPointerException.class, - () -> - runCommand( - "agR0ZXN0chgLEgxIb3N0UmVzb3VyY2UiBjItUk9JRAw", - "agR0ZXN0chgLEgxIb3N0UmVzb3VyY2UiBjMtUk9JRAw")); - assertThat(thrown) - .hasMessageThat() - .contains("Could not load resource for key: VKey(sql:3-ROID,ofy:3-ROID)"); - } - - @Test - void testSuccess_deletedHost() throws Exception { - persistDeletedHost("ns1.example.tld", now.minusDays(1)); - runCommand("agR0ZXN0chgLEgxIb3N0UmVzb3VyY2UiBjItUk9JRAw"); - assertInStdout("fullyQualifiedHostName=ns1.example.tld"); - assertInStdout("deletionTime=" + now.minusDays(1)); - } - - @Test - void testSuccess_mixedTypes() throws Exception { - persistActiveDomain("example.tld"); - persistActiveContact("sh8013"); - persistActiveHost("ns1.example.tld"); - runCommand( - "agR0ZXN0chULEgpEb21haW5CYXNlIgUyLVRMRAw", - "agR0ZXN0chsLEg9Db250YWN0UmVzb3VyY2UiBjQtUk9JRAw", - "agR0ZXN0chgLEgxIb3N0UmVzb3VyY2UiBjUtUk9JRAw"); - assertInStdout("fullyQualifiedDomainName=example.tld"); - assertInStdout("contactId=sh8013"); - assertInStdout("fullyQualifiedHostName=ns1.example.tld"); - } - - @Test - void testFailure_keyDoesNotExist() { - NullPointerException thrown = - assertThrows( - NullPointerException.class, - () -> runCommand("agR0ZXN0chULEgpEb21haW5CYXNlIgUyLVRMRAw")); - assertThat(thrown) - .hasMessageThat() - .contains("Could not load resource for key: VKey(sql:2-TLD,ofy:2-TLD)"); - } - - @Test - void testFailure_nonsenseKey() { - IllegalArgumentException thrown = - assertThrows( - IllegalArgumentException.class, () -> runCommand("agR0ZXN0chULEgpEb21haW5CYXN")); - assertThat(thrown).hasMessageThat().contains("Could not parse Reference"); - } - - @Test - void testFailure_noParameters() { - assertThrows(ParameterException.class, this::runCommand); - } -} diff --git a/core/src/test/java/google/registry/tools/LevelDbFileBuilder.java b/core/src/test/java/google/registry/tools/LevelDbFileBuilder.java deleted file mode 100644 index 07c994991..000000000 --- a/core/src/test/java/google/registry/tools/LevelDbFileBuilder.java +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static google.registry.tools.LevelDbLogReader.BLOCK_SIZE; -import static google.registry.tools.LevelDbLogReader.HEADER_SIZE; - -import com.google.appengine.api.datastore.Entity; -import com.google.appengine.api.datastore.EntityTranslator; -import com.google.storage.onestore.v3.OnestoreEntity.EntityProto; -import google.registry.model.annotations.DeleteAfterMigration; -import google.registry.tools.LevelDbLogReader.ChunkType; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; - -/** Utility class for building a leveldb logfile. */ -@DeleteAfterMigration -public final class LevelDbFileBuilder { - - private final FileOutputStream out; - private byte[] currentBlock = new byte[BLOCK_SIZE]; - - // Write position in the current block. - private int currentPos = 0; - - public LevelDbFileBuilder(File file) throws FileNotFoundException { - out = new FileOutputStream(file); - } - - /** Adds an {@link Entity Datastore Entity object} to the leveldb log file. */ - public LevelDbFileBuilder addEntity(Entity entity) throws IOException { - EntityProto proto = EntityTranslator.convertToPb(entity); - byte[] protoBytes = proto.toByteArray(); - if (protoBytes.length > BLOCK_SIZE - (currentPos + HEADER_SIZE)) { - out.write(currentBlock); - currentBlock = new byte[BLOCK_SIZE]; - currentPos = 0; - } - - currentPos = LevelDbUtil.addRecord(currentBlock, currentPos, ChunkType.FULL, protoBytes); - return this; - } - - /** Writes all remaining data and closes the block. */ - public void build() throws IOException { - out.write(currentBlock); - out.close(); - } -} diff --git a/core/src/test/java/google/registry/tools/LevelDbFileBuilderTest.java b/core/src/test/java/google/registry/tools/LevelDbFileBuilderTest.java deleted file mode 100644 index b66261f43..000000000 --- a/core/src/test/java/google/registry/tools/LevelDbFileBuilderTest.java +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static com.google.common.truth.Truth.assertThat; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.persistence.transaction.TransactionManagerFactory.tm; - -import com.google.appengine.api.datastore.Entity; -import com.google.appengine.api.datastore.EntityTranslator; -import com.google.common.collect.ImmutableList; -import com.google.storage.onestore.v3.OnestoreEntity.EntityProto; -import google.registry.model.contact.ContactResource; -import google.registry.testing.AppEngineExtension; -import google.registry.testing.DatabaseHelper; -import google.registry.testing.TmOverrideExtension; -import google.registry.tools.EntityWrapper.Property; -import java.io.File; -import java.io.IOException; -import java.nio.file.Path; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; -import org.junit.jupiter.api.io.TempDir; - -/** Unit tests for {@link LevelDbFileBuilder}. */ -public class LevelDbFileBuilderTest { - - private static final int BASE_ID = 1001; - - @TempDir Path tmpDir; - - @RegisterExtension - @Order(Order.DEFAULT - 1) - TmOverrideExtension tmOverrideExtension = TmOverrideExtension.withOfy(); - - @RegisterExtension - public final AppEngineExtension appEngine = - AppEngineExtension.builder().withDatastoreAndCloudSql().build(); - - @Test - void testSingleRecordWrites() throws IOException { - File logFile = tmpDir.resolve("testfile").toFile(); - LevelDbFileBuilder builder = new LevelDbFileBuilder(logFile); - EntityWrapper entity = - EntityWrapper.from( - BASE_ID, Property.create("first", 100L), Property.create("second", 200L)); - builder.addEntity(entity.getEntity()); - builder.build(); - - ImmutableList records = ImmutableList.copyOf(LevelDbLogReader.from(logFile.getPath())); - assertThat(records).hasSize(1); - - // Reconstitute an entity, make sure that what we've got is the same as what we started with. - Entity materializedEntity = rawRecordToEntity(records.get(0)); - assertThat(new EntityWrapper(materializedEntity)).isEqualTo(entity); - } - - @Test - void testMultipleRecordWrites() throws IOException { - File logFile = tmpDir.resolve("testfile").toFile(); - LevelDbFileBuilder builder = new LevelDbFileBuilder(logFile); - - // Generate enough records to cross a block boundary. These records end up being around 80 - // bytes, so 1000 works. - ImmutableList.Builder originalEntitiesBuilder = new ImmutableList.Builder<>(); - for (int i = 0; i < 1000; ++i) { - EntityWrapper entity = - EntityWrapper.from( - BASE_ID + i, Property.create("first", 100L), Property.create("second", 200L)); - builder.addEntity(entity.getEntity()); - originalEntitiesBuilder.add(entity); - } - builder.build(); - ImmutableList originalEntities = originalEntitiesBuilder.build(); - - ImmutableList records = ImmutableList.copyOf(LevelDbLogReader.from(logFile.getPath())); - assertThat(records).hasSize(1000); - int index = 0; - for (byte[] record : records) { - Entity materializedEntity = rawRecordToEntity(record); - assertThat(new EntityWrapper(materializedEntity)).isEqualTo(originalEntities.get(index)); - ++index; - } - } - - @Test - void testOfyEntityWrite() throws Exception { - File logFile = tmpDir.resolve("testfile").toFile(); - LevelDbFileBuilder builder = new LevelDbFileBuilder(logFile); - - ContactResource contact = DatabaseHelper.newContactResource("contact"); - builder.addEntity(tm().transact(() -> auditedOfy().save().toEntity(contact))); - builder.build(); - - ImmutableList records = ImmutableList.copyOf(LevelDbLogReader.from(logFile.getPath())); - assertThat(records).hasSize(1); - ContactResource ofyEntity = rawRecordToOfyEntity(records.get(0), ContactResource.class); - assertThat(ofyEntity.getContactId()).isEqualTo(contact.getContactId()); - } - - private static Entity rawRecordToEntity(byte[] record) { - EntityProto proto = new EntityProto(); - proto.parseFrom(record); - return EntityTranslator.createFromPb(proto); - } - - private static T rawRecordToOfyEntity(byte[] record, Class expectedType) { - return expectedType.cast(auditedOfy().load().fromEntity(rawRecordToEntity(record))); - } -} diff --git a/core/src/test/java/google/registry/tools/RecordAccumulatorTest.java b/core/src/test/java/google/registry/tools/RecordAccumulatorTest.java deleted file mode 100644 index 31388d253..000000000 --- a/core/src/test/java/google/registry/tools/RecordAccumulatorTest.java +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static com.google.common.truth.Truth.assertThat; - -import com.google.common.collect.ImmutableSet; -import google.registry.testing.AppEngineExtension; -import google.registry.tools.EntityWrapper.Property; -import java.io.File; -import java.io.IOException; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; -import org.junit.jupiter.api.io.TempDir; - -/** Unit tests for {@link RecordAccumulator}. */ -public class RecordAccumulatorTest { - - private static final int BASE_ID = 1001; - - @TempDir public File tmpDir; - - @RegisterExtension - public final AppEngineExtension appEngine = - AppEngineExtension.builder().withDatastoreAndCloudSql().build(); - - @Test - void testReadDirectory() throws IOException { - LevelDbFileBuilder builder = new LevelDbFileBuilder(new File(tmpDir, "data1")); - - // Note that we need to specify property values as "Long" for property comparisons to work - // correctly because that's how they are deserialized from protos. - EntityWrapper e1 = - EntityWrapper.from( - BASE_ID, - Property.create("eeny", 100L), - Property.create("meeny", 200L), - Property.create("miney", 300L)); - builder.addEntity(e1.getEntity()); - EntityWrapper e2 = - EntityWrapper.from( - BASE_ID + 1, - Property.create("eeny", 100L), - Property.create("meeny", 200L), - Property.create("miney", 300L)); - builder.addEntity(e2.getEntity()); - builder.build(); - - builder = new LevelDbFileBuilder(new File(tmpDir, "data2")); - - // Duplicate of the record in the other file. - builder.addEntity( - EntityWrapper.from( - BASE_ID, - Property.create("eeny", 100L), - Property.create("meeny", 200L), - Property.create("miney", 300L)) - .getEntity()); - - EntityWrapper e3 = - EntityWrapper.from( - BASE_ID + 2, - Property.create("moxy", 100L), - Property.create("fruvis", 200L), - Property.create("cortex", 300L)); - builder.addEntity(e3.getEntity()); - builder.build(); - - ImmutableSet entities = - RecordAccumulator.readDirectory(tmpDir, any -> true).getEntityWrapperSet(); - assertThat(entities).containsExactly(e1, e2, e3); - } -} diff --git a/core/src/test/java/google/registry/tools/RemoveRegistryOneKeyCommandTest.java b/core/src/test/java/google/registry/tools/RemoveRegistryOneKeyCommandTest.java deleted file mode 100644 index 005769007..000000000 --- a/core/src/test/java/google/registry/tools/RemoveRegistryOneKeyCommandTest.java +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright 2020 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static com.google.common.truth.Truth.assertThat; -import static google.registry.model.ImmutableObjectSubject.immutableObjectCorrespondence; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.testing.DatabaseHelper.createTld; -import static google.registry.testing.DatabaseHelper.newDomainBase; -import static google.registry.testing.DatabaseHelper.persistResource; - -import com.google.common.collect.ImmutableList; -import com.google.common.truth.Correspondence; -import com.googlecode.objectify.Key; -import google.registry.model.ImmutableObject; -import google.registry.model.billing.BillingEvent; -import google.registry.model.common.EntityGroupRoot; -import google.registry.model.domain.DomainBase; -import google.registry.model.poll.PollMessage; -import google.registry.model.reporting.HistoryEntry; -import google.registry.persistence.VKey; -import google.registry.testing.TmOverrideExtension; -import org.joda.time.DateTime; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Unit test for {@link RemoveRegistryOneKeyCommand}. */ -public class RemoveRegistryOneKeyCommandTest extends CommandTestCase { - - @RegisterExtension - @Order(Order.DEFAULT - 1) - TmOverrideExtension tmOverrideExtension = TmOverrideExtension.withOfy(); - - DomainBase domain; - HistoryEntry historyEntry; - - @BeforeEach - void beforeEach() { - createTld("foobar"); - domain = - newDomainBase("foo.foobar") - .asBuilder() - .setDeletionTime(DateTime.parse("2016-01-01T00:00:00Z")) - .setAutorenewBillingEvent(createRegistryOneVKey(BillingEvent.Recurring.class, 100L)) - .setAutorenewPollMessage(createRegistryOneVKey(PollMessage.Autorenew.class, 200L)) - .setDeletePollMessage(createRegistryOneVKey(PollMessage.OneTime.class, 300L)) - .build(); - } - - @Test - void removeRegistryOneKeyInDomainBase_succeeds() throws Exception { - DomainBase origin = persistResource(domain); - - runCommand( - "--force", - "--key_paths_file", - writeToNamedTmpFile("keypath.txt", getKeyPathLiteral(domain))); - - DomainBase persisted = auditedOfy().load().key(domain.createVKey().getOfyKey()).now(); - assertThat(ImmutableList.of(persisted)) - .comparingElementsUsing(getDomainBaseCorrespondence()) - .containsExactly(origin); - assertThat(persisted.getAutorenewBillingEvent()).isNull(); - assertThat(persisted.getAutorenewPollMessage()).isNull(); - assertThat(persisted.getDeletePollMessage()).isNull(); - } - - @Test - void removeRegistryOneKeyInDomainBase_notModifyRegistryTwoKey() throws Exception { - DomainBase origin = - persistResource( - domain - .asBuilder() - .setAutorenewBillingEvent( - createRegistryTwoVKey(BillingEvent.Recurring.class, domain, 300L)) - .build()); - - runCommand( - "--force", - "--key_paths_file", - writeToNamedTmpFile("keypath.txt", getKeyPathLiteral(domain))); - - DomainBase persisted = auditedOfy().load().key(domain.createVKey().getOfyKey()).now(); - assertThat(ImmutableList.of(persisted)) - .comparingElementsUsing(getDomainBaseCorrespondence()) - .containsExactly(origin); - assertThat(persisted.getAutorenewBillingEvent()) - .isEqualTo(createRegistryTwoVKey(BillingEvent.Recurring.class, domain, 300L)); - assertThat(persisted.getAutorenewPollMessage()).isNull(); - assertThat(persisted.getDeletePollMessage()).isNull(); - } - - private static String getKeyPathLiteral(Object entity) { - Key key = Key.create(entity); - return String.format("\"DomainBase\", \"%s\"", key.getName()); - } - - private static VKey createRegistryOneVKey(Class clazz, long id) { - Key parent = Key.create(EntityGroupRoot.class, "per-tld"); - return VKey.create(clazz, id, Key.create(parent, clazz, id)); - } - - private static VKey createRegistryTwoVKey(Class clazz, DomainBase domain, long id) { - Key parent = Key.create(domain.createVKey().getOfyKey(), HistoryEntry.class, 1000L); - return VKey.create(clazz, id, Key.create(parent, clazz, id)); - } - - private static Correspondence getDomainBaseCorrespondence() { - return immutableObjectCorrespondence( - "revisions", - "updateTimestamp", - "autorenewBillingEvent", - "autorenewPollMessage", - "deletePollMessage"); - } -} diff --git a/core/src/test/java/google/registry/tools/ResaveEntitiesCommandTest.java b/core/src/test/java/google/registry/tools/ResaveEntitiesCommandTest.java deleted file mode 100644 index 6e86bb659..000000000 --- a/core/src/test/java/google/registry/tools/ResaveEntitiesCommandTest.java +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static com.google.common.collect.Iterables.transform; -import static com.google.common.truth.Truth.assertThat; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.testing.DatabaseHelper.persistActiveContact; - -import com.google.appengine.api.datastore.KeyFactory; -import com.googlecode.objectify.Key; -import google.registry.model.ImmutableObject; -import google.registry.model.contact.ContactResource; -import google.registry.model.ofy.CommitLogManifest; -import google.registry.model.ofy.CommitLogMutation; -import google.registry.testing.TmOverrideExtension; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Unit tests for {@link ResaveEntitiesCommand}. */ -class ResaveEntitiesCommandTest extends CommandTestCase { - - @RegisterExtension - @Order(Order.DEFAULT - 1) - TmOverrideExtension tmOverrideExtension = TmOverrideExtension.withOfy(); - - @Test - void testSuccess_createsCommitLogs() throws Exception { - ContactResource contact1 = persistActiveContact("contact1"); - ContactResource contact2 = persistActiveContact("contact2"); - deleteEntitiesOfTypes(CommitLogManifest.class, CommitLogMutation.class); - assertThat(auditedOfy().load().type(CommitLogManifest.class).keys()).isEmpty(); - assertThat(auditedOfy().load().type(CommitLogMutation.class).keys()).isEmpty(); - runCommandForced( - KeyFactory.keyToString(Key.create(contact1).getRaw()), - KeyFactory.keyToString(Key.create(contact2).getRaw())); - - assertThat(auditedOfy().load().type(CommitLogManifest.class).keys()).hasSize(1); - Iterable savedEntities = - transform( - auditedOfy().load().type(CommitLogMutation.class).list(), - mutation -> auditedOfy().load().fromEntity(mutation.getEntity())); - // Reload the contacts before asserting, since their update times will have changed. - auditedOfy().clearSessionCache(); - assertThat(savedEntities) - .containsExactlyElementsIn(auditedOfy().load().entities(contact1, contact2).values()); - } - - @Test - void testSuccess_createsCommitLogs_withNewWebsafeKey() throws Exception { - ContactResource contact1 = persistActiveContact("contact1"); - ContactResource contact2 = persistActiveContact("contact2"); - deleteEntitiesOfTypes(CommitLogManifest.class, CommitLogMutation.class); - assertThat(auditedOfy().load().type(CommitLogManifest.class).keys()).isEmpty(); - assertThat(auditedOfy().load().type(CommitLogMutation.class).keys()).isEmpty(); - runCommandForced(contact1.createVKey().stringify(), contact2.createVKey().stringify()); - - assertThat(auditedOfy().load().type(CommitLogManifest.class).keys()).hasSize(1); - Iterable savedEntities = - transform( - auditedOfy().load().type(CommitLogMutation.class).list(), - mutation -> auditedOfy().load().fromEntity(mutation.getEntity())); - // Reload the contacts before asserting, since their update times will have changed. - auditedOfy().clearSessionCache(); - assertThat(savedEntities) - .containsExactlyElementsIn(auditedOfy().load().entities(contact1, contact2).values()); - } - - @SafeVarargs - private static void deleteEntitiesOfTypes(Class... types) { - for (Class type : types) { - auditedOfy().deleteWithoutBackup().keys(auditedOfy().load().type(type).keys()).now(); - } - } -} diff --git a/core/src/test/java/google/registry/tools/ResaveEnvironmentEntitiesCommandTest.java b/core/src/test/java/google/registry/tools/ResaveEnvironmentEntitiesCommandTest.java deleted file mode 100644 index a76e5e607..000000000 --- a/core/src/test/java/google/registry/tools/ResaveEnvironmentEntitiesCommandTest.java +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static com.google.common.collect.Iterables.getOnlyElement; -import static com.google.common.collect.Iterables.transform; -import static com.google.common.truth.Truth.assertThat; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.testing.DatabaseHelper.createTld; -import static google.registry.testing.DatabaseHelper.loadRegistrar; - -import com.google.common.collect.ImmutableSortedSet; -import google.registry.model.ImmutableObject; -import google.registry.model.ofy.CommitLogManifest; -import google.registry.model.ofy.CommitLogMutation; -import google.registry.model.registrar.Registrar; -import google.registry.model.registrar.RegistrarContact; -import google.registry.model.tld.Registry; -import google.registry.testing.TmOverrideExtension; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Unit tests for {@link ResaveEnvironmentEntitiesCommand}. */ -class ResaveEnvironmentEntitiesCommandTest - extends CommandTestCase { - - @RegisterExtension - @Order(Order.DEFAULT - 1) - TmOverrideExtension tmOverrideExtension = TmOverrideExtension.withOfy(); - - @Test - void testSuccess_noop() throws Exception { - // Get rid of all the entities that this command runs on so that it does nothing. - deleteEntitiesOfTypes( - Registry.class, - Registrar.class, - RegistrarContact.class, - CommitLogManifest.class, - CommitLogMutation.class); - runCommand(); - assertThat(auditedOfy().load().type(CommitLogManifest.class).keys()).isEmpty(); - assertThat(auditedOfy().load().type(CommitLogMutation.class).keys()).isEmpty(); - } - - @Test - void testSuccess_createsCommitLogs() throws Exception { - createTld("tld"); - deleteEntitiesOfTypes(CommitLogManifest.class, CommitLogMutation.class); - assertThat(auditedOfy().load().type(CommitLogManifest.class).keys()).isEmpty(); - assertThat(auditedOfy().load().type(CommitLogMutation.class).keys()).isEmpty(); - runCommand(); - - // There are 5 entities that have been re-saved at this point (in 3 transactions, one for each - // type), so expect 3 manifests and 5 mutations. - assertThat(auditedOfy().load().type(CommitLogManifest.class).keys()).hasSize(3); - Iterable savedEntities = - transform( - auditedOfy().load().type(CommitLogMutation.class).list(), - mutation -> auditedOfy().load().fromEntity(mutation.getEntity())); - ImmutableSortedSet theRegistrarContacts = - loadRegistrar("TheRegistrar").getContacts(); - assertThat(savedEntities) - .containsExactly( - // The Registrars and RegistrarContacts are created by AppEngineExtension. - loadRegistrar("TheRegistrar"), - loadRegistrar("NewRegistrar"), - Registry.get("tld"), - theRegistrarContacts.first(), - theRegistrarContacts.last(), - getOnlyElement(loadRegistrar("NewRegistrar").getContacts())); - } - - @SafeVarargs - private static void deleteEntitiesOfTypes(Class... types) { - for (Class type : types) { - auditedOfy().deleteWithoutBackup().keys(auditedOfy().load().type(type).keys()).now(); - } - } -} diff --git a/core/src/test/java/google/registry/tools/ResaveEppResourcesCommandTest.java b/core/src/test/java/google/registry/tools/ResaveEppResourcesCommandTest.java deleted file mode 100644 index 0cc47d5f9..000000000 --- a/core/src/test/java/google/registry/tools/ResaveEppResourcesCommandTest.java +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools; - -import static com.google.common.truth.Truth.assertThat; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.testing.DatabaseHelper.persistActiveContact; - -import google.registry.model.ImmutableObject; -import google.registry.model.contact.ContactResource; -import google.registry.model.ofy.CommitLogManifest; -import google.registry.model.ofy.CommitLogMutation; -import google.registry.testing.TmOverrideExtension; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Unit tests for {@link ResaveEppResourceCommand}. */ -class ResaveEppResourcesCommandTest extends CommandTestCase { - - @RegisterExtension - @Order(Order.DEFAULT - 1) - TmOverrideExtension tmOverrideExtension = TmOverrideExtension.withOfy(); - - @Test - void testSuccess_createsCommitLogs() throws Exception { - ContactResource contact = persistActiveContact("contact"); - deleteEntitiesOfTypes(CommitLogManifest.class, CommitLogMutation.class); - assertThat(auditedOfy().load().type(CommitLogManifest.class).keys()).isEmpty(); - assertThat(auditedOfy().load().type(CommitLogMutation.class).keys()).isEmpty(); - runCommandForced("--type=CONTACT", "--id=contact"); - - assertThat(auditedOfy().load().type(CommitLogManifest.class).keys()).hasSize(1); - assertThat(auditedOfy().load().type(CommitLogMutation.class).keys()).hasSize(1); - CommitLogMutation mutation = auditedOfy().load().type(CommitLogMutation.class).first().now(); - // Reload the contact before asserting, since its update time will have changed. - auditedOfy().clearSessionCache(); - assertThat(auditedOfy().load().fromEntity(mutation.getEntity())) - .isEqualTo(auditedOfy().load().entity(contact).now()); - } - - @SafeVarargs - private static void deleteEntitiesOfTypes(Class... types) { - for (Class type : types) { - auditedOfy().deleteWithoutBackup().keys(auditedOfy().load().type(type).keys()).now(); - } - } -} diff --git a/core/src/test/java/google/registry/tools/server/GenerateZoneFilesActionTest.java b/core/src/test/java/google/registry/tools/server/GenerateZoneFilesActionTest.java index 5d706a29c..deeec8521 100644 --- a/core/src/test/java/google/registry/tools/server/GenerateZoneFilesActionTest.java +++ b/core/src/test/java/google/registry/tools/server/GenerateZoneFilesActionTest.java @@ -124,7 +124,7 @@ class GenerateZoneFilesActionTest { GenerateZoneFilesAction action = new GenerateZoneFilesAction(); action.bucket = "zonefiles-bucket"; action.gcsUtils = gcsUtils; - action.datastoreRetention = standardDays(29); + action.databaseRetention = standardDays(29); action.dnsDefaultATtl = Duration.standardSeconds(11); action.dnsDefaultNsTtl = Duration.standardSeconds(222); action.dnsDefaultDsTtl = Duration.standardSeconds(3333); diff --git a/core/src/test/java/google/registry/tools/server/KillAllCommitLogsActionTest.java b/core/src/test/java/google/registry/tools/server/KillAllCommitLogsActionTest.java deleted file mode 100644 index f15fadc27..000000000 --- a/core/src/test/java/google/registry/tools/server/KillAllCommitLogsActionTest.java +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools.server; - -import static com.google.common.base.Predicates.instanceOf; -import static com.google.common.base.Predicates.not; -import static com.google.common.collect.ImmutableList.toImmutableList; -import static com.google.common.collect.Iterables.filter; -import static com.google.common.truth.Truth.assertThat; -import static com.google.common.truth.Truth.assertWithMessage; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.testing.DatabaseHelper.createTld; -import static google.registry.testing.DatabaseHelper.newContactResource; -import static google.registry.testing.DatabaseHelper.persistResource; -import static google.registry.testing.DatabaseHelper.persistResourceWithCommitLog; -import static google.registry.util.DateTimeUtils.START_OF_TIME; -import static java.util.Arrays.asList; - -import com.google.appengine.api.datastore.Entity; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Streams; -import google.registry.model.ImmutableObject; -import google.registry.model.ofy.CommitLogBucket; -import google.registry.model.ofy.CommitLogCheckpoint; -import google.registry.model.ofy.CommitLogCheckpointRoot; -import google.registry.model.ofy.CommitLogManifest; -import google.registry.model.ofy.CommitLogMutation; -import google.registry.testing.FakeResponse; -import google.registry.testing.TmOverrideExtension; -import google.registry.testing.mapreduce.MapreduceTestCase; -import org.joda.time.DateTime; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Tests for {@link KillAllCommitLogsAction}. */ -class KillAllCommitLogsActionTest extends MapreduceTestCase { - - @RegisterExtension - @Order(Order.DEFAULT - 1) - TmOverrideExtension tmOverrideExtension = TmOverrideExtension.withOfy(); - - private static final ImmutableList> AFFECTED_TYPES = - ImmutableList.of( - CommitLogBucket.class, - CommitLogCheckpoint.class, - CommitLogCheckpointRoot.class, - CommitLogMutation.class, - CommitLogManifest.class); - - private void runMapreduce() throws Exception { - action = new KillAllCommitLogsAction(); - action.mrRunner = makeDefaultRunner(); - action.response = new FakeResponse(); - action.run(); - executeTasksUntilEmpty("mapreduce"); - } - - @Test - void testKill() throws Exception { - int nextContactId = 5432; - for (String tld : asList("tld1", "tld2")) { - createTld(tld); - persistResourceWithCommitLog( - newContactResource(String.format("abc%d", nextContactId++))); - } - persistResource(CommitLogCheckpointRoot.create(START_OF_TIME.plusDays(1))); - DateTime bucketTime = START_OF_TIME.plusDays(2); - persistResource( - CommitLogCheckpoint.create( - START_OF_TIME.plusDays(1), - ImmutableMap.of(1, bucketTime, 2, bucketTime, 3, bucketTime))); - for (Class clazz : AFFECTED_TYPES) { - assertWithMessage("entities of type " + clazz) - .that(auditedOfy().load().type(clazz)) - .isNotEmpty(); - } - ImmutableList otherStuff = - Streams.stream(auditedOfy().load()) - .filter(obj -> !AFFECTED_TYPES.contains(obj.getClass())) - .collect(toImmutableList()); - assertThat(otherStuff).isNotEmpty(); - runMapreduce(); - for (Class clazz : AFFECTED_TYPES) { - assertWithMessage("entities of type " + clazz) - .that(auditedOfy().load().type(clazz)) - .isEmpty(); - } - // Filter out raw Entity objects created by the mapreduce. - assertThat(filter(auditedOfy().load(), not(instanceOf(Entity.class)))) - .containsExactlyElementsIn(otherStuff); - } -} diff --git a/core/src/test/java/google/registry/tools/server/KillAllEppResourcesActionTest.java b/core/src/test/java/google/registry/tools/server/KillAllEppResourcesActionTest.java deleted file mode 100644 index 4827d9f22..000000000 --- a/core/src/test/java/google/registry/tools/server/KillAllEppResourcesActionTest.java +++ /dev/null @@ -1,178 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools.server; - -import static com.google.appengine.repackaged.com.google.common.collect.Sets.difference; -import static com.google.common.base.Predicates.in; -import static com.google.common.base.Predicates.instanceOf; -import static com.google.common.base.Predicates.not; -import static com.google.common.collect.ImmutableSet.toImmutableSet; -import static com.google.common.collect.Multimaps.filterKeys; -import static com.google.common.truth.Truth.assertThat; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.testing.DatabaseHelper.createTld; -import static google.registry.testing.DatabaseHelper.persistActiveContact; -import static google.registry.testing.DatabaseHelper.persistActiveDomain; -import static google.registry.testing.DatabaseHelper.persistActiveHost; -import static google.registry.util.DateTimeUtils.START_OF_TIME; -import static java.util.Arrays.asList; - -import com.google.appengine.api.datastore.Entity; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableMultimap; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterables; -import com.googlecode.objectify.Key; -import google.registry.model.EppResource; -import google.registry.model.ImmutableObject; -import google.registry.model.billing.BillingEvent; -import google.registry.model.billing.BillingEvent.Reason; -import google.registry.model.contact.ContactResource; -import google.registry.model.domain.DomainBase; -import google.registry.model.domain.DomainHistory; -import google.registry.model.host.HostResource; -import google.registry.model.index.EppResourceIndex; -import google.registry.model.index.ForeignKeyIndex.ForeignKeyContactIndex; -import google.registry.model.index.ForeignKeyIndex.ForeignKeyDomainIndex; -import google.registry.model.index.ForeignKeyIndex.ForeignKeyHostIndex; -import google.registry.model.poll.PollMessage; -import google.registry.model.reporting.HistoryEntry; -import google.registry.testing.DatabaseHelper; -import google.registry.testing.FakeResponse; -import google.registry.testing.TmOverrideExtension; -import google.registry.testing.mapreduce.MapreduceTestCase; -import java.util.stream.Stream; -import org.joda.money.CurrencyUnit; -import org.joda.money.Money; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Tests for {@link KillAllEppResourcesAction}. */ -class KillAllEppResourcesActionTest extends MapreduceTestCase { - - @RegisterExtension - @Order(Order.DEFAULT - 1) - TmOverrideExtension tmOverrideExtension = TmOverrideExtension.withOfy(); - - private static final ImmutableSet AFFECTED_KINDS = - Stream.of( - EppResourceIndex.class, - ForeignKeyContactIndex.class, - ForeignKeyDomainIndex.class, - ForeignKeyHostIndex.class, - DomainBase.class, - ContactResource.class, - HostResource.class, - HistoryEntry.class, - PollMessage.class, - BillingEvent.OneTime.class, - BillingEvent.Recurring.class) - .map(Key::getKind) - .collect(toImmutableSet()); - - private void runMapreduce() throws Exception { - action = new KillAllEppResourcesAction(); - action.mrRunner = makeDefaultRunner(); - action.response = new FakeResponse(); - action.run(); - executeTasksUntilEmpty("mapreduce"); - } - - private static final ImmutableMap, HistoryEntry.Type> - HISTORY_ENTRY_CREATE_TYPES = - ImmutableMap.of( - DomainBase.class, - HistoryEntry.Type.DOMAIN_CREATE, - ContactResource.class, - HistoryEntry.Type.CONTACT_CREATE, - HostResource.class, - HistoryEntry.Type.HOST_CREATE); - - @Test - void testKill() throws Exception { - createTld("tld1"); - createTld("tld2"); - for (EppResource resource : - asList( - persistActiveDomain("foo.tld1"), - persistActiveDomain("foo.tld2"), - persistActiveContact("foo"), - persistActiveContact("foo"), - persistActiveHost("ns.foo.tld1"), - persistActiveHost("ns.foo.tld2"))) { - HistoryEntry history = - HistoryEntry.createBuilderForResource(resource) - .setRegistrarId(resource.getCreationRegistrarId()) - .setModificationTime(resource.getCreationTime()) - .setType(HISTORY_ENTRY_CREATE_TYPES.get(resource.getClass())) - .build(); - ImmutableList.Builder descendantBuilder = - new ImmutableList.Builder() - .add( - history, - new PollMessage.OneTime.Builder() - .setParent(history) - .setRegistrarId("") - .setEventTime(START_OF_TIME) - .build(), - new PollMessage.Autorenew.Builder() - .setParent(history) - .setRegistrarId("") - .setEventTime(START_OF_TIME) - .build()); - if (history instanceof DomainHistory) { - descendantBuilder.add( - new BillingEvent.OneTime.Builder() - .setParent((DomainHistory) history) - .setBillingTime(START_OF_TIME) - .setEventTime(START_OF_TIME) - .setRegistrarId("") - .setTargetId("") - .setReason(Reason.CREATE) - .setPeriodYears(1) - .setCost(Money.of(CurrencyUnit.USD, 1)) - .build(), - new BillingEvent.Recurring.Builder() - .setParent((DomainHistory) history) - .setEventTime(START_OF_TIME) - .setRegistrarId("") - .setTargetId("") - .setReason(Reason.RENEW) - .build()); - } - descendantBuilder.build().forEach(DatabaseHelper::persistResource); - } - ImmutableMultimap beforeContents = getDatastoreContents(); - assertThat(beforeContents.keySet()).containsAtLeastElementsIn(AFFECTED_KINDS); - assertThat(difference(beforeContents.keySet(), AFFECTED_KINDS)).isNotEmpty(); - runMapreduce(); - auditedOfy().clearSessionCache(); - ImmutableMultimap afterContents = getDatastoreContents(); - assertThat(afterContents.keySet()).containsNoneIn(AFFECTED_KINDS); - assertThat(afterContents) - .containsExactlyEntriesIn(filterKeys(beforeContents, not(in(AFFECTED_KINDS)))); - } - - private ImmutableMultimap getDatastoreContents() { - ImmutableMultimap.Builder contentsBuilder = new ImmutableMultimap.Builder<>(); - // Filter out raw Entity objects created by the mapreduce. - for (Object obj : Iterables.filter(auditedOfy().load(), not(instanceOf(Entity.class)))) { - contentsBuilder.put(Key.getKind(obj.getClass()), obj); - } - return contentsBuilder.build(); - } -} diff --git a/core/src/test/java/google/registry/tools/server/RefreshDnsForAllDomainsActionTest.java b/core/src/test/java/google/registry/tools/server/RefreshDnsForAllDomainsActionTest.java index 7bc0f9a09..8d7118813 100644 --- a/core/src/test/java/google/registry/tools/server/RefreshDnsForAllDomainsActionTest.java +++ b/core/src/test/java/google/registry/tools/server/RefreshDnsForAllDomainsActionTest.java @@ -18,48 +18,54 @@ import static com.google.common.truth.Truth.assertThat; import static google.registry.testing.DatabaseHelper.createTld; import static google.registry.testing.DatabaseHelper.persistActiveDomain; import static google.registry.testing.DatabaseHelper.persistDeletedDomain; -import static google.registry.testing.TaskQueueHelper.assertDnsTasksEnqueued; import static org.joda.time.Duration.standardMinutes; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; -import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; import com.google.common.collect.ImmutableSet; import google.registry.dns.DnsQueue; import google.registry.model.ofy.Ofy; +import google.registry.testing.AppEngineExtension; import google.registry.testing.DualDatabaseTest; import google.registry.testing.FakeClock; import google.registry.testing.FakeResponse; import google.registry.testing.InjectExtension; import google.registry.testing.TestOfyAndSql; import google.registry.testing.TestSqlOnly; -import google.registry.testing.mapreduce.MapreduceTestCase; -import google.registry.tools.server.RefreshDnsForAllDomainsAction.RefreshDnsForAllDomainsActionMapper; import java.util.Random; import org.apache.http.HttpStatus; import org.joda.time.DateTime; import org.joda.time.Duration; -import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.extension.RegisterExtension; import org.mockito.ArgumentCaptor; +import org.mockito.InOrder; /** Unit tests for {@link RefreshDnsForAllDomainsAction}. */ @DualDatabaseTest -public class RefreshDnsForAllDomainsActionTest - extends MapreduceTestCase { +public class RefreshDnsForAllDomainsActionTest { private final FakeClock clock = new FakeClock(DateTime.parse("2020-02-02T02:02:02Z")); private final DnsQueue dnsQueue = mock(DnsQueue.class); - private DnsQueue origDnsQueue; + private RefreshDnsForAllDomainsAction action; private FakeResponse response = new FakeResponse(); + @RegisterExtension + public final AppEngineExtension appEngine = + AppEngineExtension.builder() + .withDatastoreAndCloudSql() + .withLocalModules() + .withTaskQueue() + .build(); + @Order(Order.DEFAULT - 1) @RegisterExtension public final InjectExtension inject = @@ -67,13 +73,10 @@ public class RefreshDnsForAllDomainsActionTest @BeforeEach void beforeEach() { - origDnsQueue = RefreshDnsForAllDomainsActionMapper.setDnsQueueForTest(dnsQueue); - action = new RefreshDnsForAllDomainsAction(); action.smearMinutes = 1; action.random = new Random(); action.random.setSeed(123L); - action.mrRunner = makeDefaultRunner(); action.response = new FakeResponse(); action.clock = clock; action.dnsQueue = dnsQueue; @@ -82,30 +85,21 @@ public class RefreshDnsForAllDomainsActionTest createTld("bar"); } - @AfterEach - void afterEach() { - assertThat(RefreshDnsForAllDomainsActionMapper.setDnsQueueForTest(origDnsQueue)) - .isEqualTo(dnsQueue); - } - - private void runAction() throws Exception { - action.run(); - executeTasksUntilEmpty("mapreduce"); - } - @TestSqlOnly void test_runAction_errorEnqueuingToDnsQueue() throws Exception { persistActiveDomain("foo.bar"); persistActiveDomain("baz.bar"); persistActiveDomain("low.bar"); action.tlds = ImmutableSet.of("bar"); - DnsQueue faultyQueue = spy(origDnsQueue); doThrow(new RuntimeException("Error enqueuing task.")) - .when(faultyQueue) + .when(dnsQueue) .addDomainRefreshTask(eq("baz.bar"), any(Duration.class)); - action.dnsQueue = faultyQueue; - runAction(); - assertDnsTasksEnqueued("foo.bar", "low.bar"); + action.run(); + InOrder inOrder = inOrder(dnsQueue); + inOrder.verify(dnsQueue).addDomainRefreshTask("low.bar", Duration.ZERO); + inOrder.verify(dnsQueue).addDomainRefreshTask("baz.bar", Duration.ZERO); + inOrder.verify(dnsQueue).addDomainRefreshTask("foo.bar", Duration.ZERO); + verifyNoMoreInteractions(dnsQueue); assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_INTERNAL_SERVER_ERROR); } @@ -114,7 +108,7 @@ public class RefreshDnsForAllDomainsActionTest persistActiveDomain("foo.bar"); persistActiveDomain("low.bar"); action.tlds = ImmutableSet.of("bar"); - runAction(); + action.run(); verify(dnsQueue).addDomainRefreshTask("foo.bar", Duration.ZERO); verify(dnsQueue).addDomainRefreshTask("low.bar", Duration.ZERO); } @@ -125,7 +119,7 @@ public class RefreshDnsForAllDomainsActionTest persistActiveDomain("low.bar"); action.tlds = ImmutableSet.of("bar"); action.smearMinutes = 1000; - runAction(); + action.run(); ArgumentCaptor captor = ArgumentCaptor.forClass(Duration.class); verify(dnsQueue).addDomainRefreshTask(eq("foo.bar"), captor.capture()); verify(dnsQueue).addDomainRefreshTask(eq("low.bar"), captor.capture()); @@ -137,7 +131,7 @@ public class RefreshDnsForAllDomainsActionTest persistActiveDomain("foo.bar"); persistDeletedDomain("deleted.bar", clock.nowUtc().minusYears(1)); action.tlds = ImmutableSet.of("bar"); - runAction(); + action.run(); verify(dnsQueue).addDomainRefreshTask("foo.bar", Duration.ZERO); verify(dnsQueue, never()).addDomainRefreshTask("deleted.bar", Duration.ZERO); } @@ -149,7 +143,7 @@ public class RefreshDnsForAllDomainsActionTest persistActiveDomain("low.bar"); persistActiveDomain("ignore.baz"); action.tlds = ImmutableSet.of("bar"); - runAction(); + action.run(); verify(dnsQueue).addDomainRefreshTask("foo.bar", Duration.ZERO); verify(dnsQueue).addDomainRefreshTask("low.bar", Duration.ZERO); verify(dnsQueue, never()).addDomainRefreshTask("ignore.baz", Duration.ZERO); diff --git a/core/src/test/java/google/registry/tools/server/ResaveAllHistoryEntriesActionTest.java b/core/src/test/java/google/registry/tools/server/ResaveAllHistoryEntriesActionTest.java deleted file mode 100644 index 92b35995d..000000000 --- a/core/src/test/java/google/registry/tools/server/ResaveAllHistoryEntriesActionTest.java +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright 2017 The Nomulus Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package google.registry.tools.server; - -import static com.google.common.truth.Truth.assertThat; -import static google.registry.model.ofy.ObjectifyService.auditedOfy; -import static google.registry.testing.DatabaseHelper.createTld; -import static google.registry.testing.DatabaseHelper.persistActiveContact; -import static google.registry.testing.DatabaseHelper.persistActiveDomain; - -import com.google.appengine.api.datastore.DatastoreService; -import com.google.appengine.api.datastore.DatastoreServiceFactory; -import com.google.appengine.api.datastore.Entity; -import google.registry.model.contact.ContactHistory; -import google.registry.model.contact.ContactResource; -import google.registry.model.domain.DomainBase; -import google.registry.model.domain.DomainHistory; -import google.registry.model.reporting.HistoryEntry; -import google.registry.testing.FakeResponse; -import google.registry.testing.TmOverrideExtension; -import google.registry.testing.mapreduce.MapreduceTestCase; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; - -/** Unit tests for {@link ResaveAllHistoryEntriesAction}. */ -class ResaveAllHistoryEntriesActionTest extends MapreduceTestCase { - - @RegisterExtension - @Order(Order.DEFAULT - 1) - TmOverrideExtension tmOverrideExtension = TmOverrideExtension.withOfy(); - - private static final DatastoreService datastoreService = - DatastoreServiceFactory.getDatastoreService(); - - @BeforeEach - void beforeEach() { - action = new ResaveAllHistoryEntriesAction(); - action.mrRunner = makeDefaultRunner(); - action.response = new FakeResponse(); - } - - private void runMapreduce() throws Exception { - action.run(); - executeTasksUntilEmpty("mapreduce"); - } - - @Test - void test_mapreduceSuccessfullyResavesEntity() throws Exception { - createTld("tld"); - DomainBase domain = persistActiveDomain("test.tld"); - ContactResource contact = persistActiveContact("humanBeing"); - Entity domainEntry = - auditedOfy() - .save() - .toEntity( - new DomainHistory.Builder() - .setDomain(domain) - .setType(HistoryEntry.Type.DOMAIN_CREATE) - .setModificationTime(domain.getCreationTime()) - .setRegistrarId(domain.getCreationRegistrarId()) - .build() - .asHistoryEntry()); - Entity contactEntry = - auditedOfy() - .save() - .toEntity( - new ContactHistory.Builder() - .setContact(contact) - .setType(HistoryEntry.Type.CONTACT_CREATE) - .setRegistrarId(contact.getCreationRegistrarId()) - .setModificationTime(contact.getCreationTime()) - .build() - .asHistoryEntry()); - - // Set raw properties outside the Objectify schema, which will be deleted upon re-save. - domainEntry.setProperty("clientId", "validId"); - contactEntry.setProperty("otherClientId", "anotherId"); - domainEntry.setProperty("propertyToBeDeleted", "123blah"); - contactEntry.setProperty("alsoShouldBeDeleted", "456nah"); - datastoreService.put(domainEntry); - datastoreService.put(contactEntry); - auditedOfy().clearSessionCache(); - runMapreduce(); - - Entity updatedDomainEntry = datastoreService.get(domainEntry.getKey()); - Entity updatedContactEntry = datastoreService.get(contactEntry.getKey()); - assertThat(updatedDomainEntry.getProperty("clientId")).isEqualTo("validId"); - assertThat(updatedDomainEntry.getProperty("propertyToBeDeleted")).isNull(); - assertThat(updatedContactEntry.getProperty("otherClientId")).isEqualTo("anotherId"); - assertThat(updatedContactEntry.getProperty("alsoShouldBeDeleted")).isNull(); - } -} diff --git a/core/src/test/resources/google/registry/model/schema.txt b/core/src/test/resources/google/registry/model/schema.txt index 47543aa5a..08d99fac7 100644 --- a/core/src/test/resources/google/registry/model/schema.txt +++ b/core/src/test/resources/google/registry/model/schema.txt @@ -108,7 +108,6 @@ class google.registry.model.contact.ContactAuthInfo { } class google.registry.model.contact.ContactBase { @Id java.lang.String repoId; - com.google.common.collect.ImmutableSortedMap> revisions; google.registry.model.CreateAutoTimestamp creationTime; google.registry.model.UpdateAutoTimestamp updateTimestamp; google.registry.model.contact.ContactAuthInfo authInfo; @@ -151,7 +150,6 @@ class google.registry.model.contact.ContactPhoneNumber { } class google.registry.model.contact.ContactResource { @Id java.lang.String repoId; - com.google.common.collect.ImmutableSortedMap> revisions; google.registry.model.CreateAutoTimestamp creationTime; google.registry.model.UpdateAutoTimestamp updateTimestamp; google.registry.model.contact.ContactAuthInfo authInfo; @@ -209,7 +207,6 @@ class google.registry.model.domain.DomainAuthInfo { } class google.registry.model.domain.DomainBase { @Id java.lang.String repoId; - com.google.common.collect.ImmutableSortedMap> revisions; google.registry.model.CreateAutoTimestamp creationTime; google.registry.model.UpdateAutoTimestamp updateTimestamp; google.registry.model.domain.DomainAuthInfo authInfo; @@ -239,7 +236,6 @@ class google.registry.model.domain.DomainBase { } class google.registry.model.domain.DomainContent { @Id java.lang.String repoId; - com.google.common.collect.ImmutableSortedMap> revisions; google.registry.model.CreateAutoTimestamp creationTime; google.registry.model.UpdateAutoTimestamp updateTimestamp; google.registry.model.domain.DomainAuthInfo authInfo; @@ -405,7 +401,6 @@ class google.registry.model.eppcommon.Trid { } class google.registry.model.host.HostBase { @Id java.lang.String repoId; - com.google.common.collect.ImmutableSortedMap> revisions; google.registry.model.CreateAutoTimestamp creationTime; google.registry.model.UpdateAutoTimestamp updateTimestamp; google.registry.persistence.VKey superordinateDomain; @@ -438,7 +433,6 @@ class google.registry.model.host.HostHistory { } class google.registry.model.host.HostResource { @Id java.lang.String repoId; - com.google.common.collect.ImmutableSortedMap> revisions; google.registry.model.CreateAutoTimestamp creationTime; google.registry.model.UpdateAutoTimestamp updateTimestamp; google.registry.persistence.VKey superordinateDomain; @@ -481,29 +475,6 @@ class google.registry.model.index.ForeignKeyIndex$ForeignKeyHostIndex { google.registry.persistence.VKey topReference; org.joda.time.DateTime deletionTime; } -class google.registry.model.ofy.CommitLogBucket { - @Id long bucketNum; - org.joda.time.DateTime lastWrittenTime; -} -class google.registry.model.ofy.CommitLogCheckpoint { - @Id long checkpointTime; - @Parent com.googlecode.objectify.Key parent; - java.util.List bucketTimestamps; -} -class google.registry.model.ofy.CommitLogCheckpointRoot { - @Id long id; - org.joda.time.DateTime lastWrittenTime; -} -class google.registry.model.ofy.CommitLogManifest { - @Id long commitTime; - @Parent com.googlecode.objectify.Key parent; - java.util.Set> deletions; -} -class google.registry.model.ofy.CommitLogMutation { - @Id java.lang.String entityKey; - @Parent com.googlecode.objectify.Key parent; - byte[] entityProtoBytes; -} class google.registry.model.poll.PendingActionNotificationResponse$ContactPendingActionNotificationResponse { google.registry.model.eppcommon.Trid trid; google.registry.model.poll.PendingActionNotificationResponse$NameOrId nameOrId; diff --git a/core/src/test/resources/google/registry/module/backend/backend_routing.txt b/core/src/test/resources/google/registry/module/backend/backend_routing.txt index 7f2ebf4ed..50acbb302 100644 --- a/core/src/test/resources/google/registry/module/backend/backend_routing.txt +++ b/core/src/test/resources/google/registry/module/backend/backend_routing.txt @@ -1,6 +1,4 @@ PATH CLASS METHODS OK AUTH_METHODS MIN USER_POLICY -/_dr/cron/commitLogCheckpoint CommitLogCheckpointAction GET y INTERNAL,API APP ADMIN -/_dr/cron/commitLogFanout CommitLogFanoutAction GET y INTERNAL,API APP ADMIN /_dr/cron/fanout TldFanoutAction GET y INTERNAL,API APP ADMIN /_dr/cron/readDnsQueue ReadDnsQueueAction GET y INTERNAL,API APP ADMIN /_dr/dnsRefresh RefreshDnsAction GET y INTERNAL,API APP ADMIN @@ -10,10 +8,8 @@ PATH CLASS /_dr/task/copyDetailReports CopyDetailReportsAction POST n INTERNAL,API APP ADMIN /_dr/task/deleteExpiredDomains DeleteExpiredDomainsAction GET n INTERNAL,API APP ADMIN /_dr/task/deleteLoadTestData DeleteLoadTestDataAction POST n INTERNAL,API APP ADMIN -/_dr/task/deleteOldCommitLogs DeleteOldCommitLogsAction GET n INTERNAL,API APP ADMIN /_dr/task/deleteProberData DeleteProberDataAction POST n INTERNAL,API APP ADMIN /_dr/task/expandRecurringBillingEvents ExpandRecurringBillingEventsAction GET n INTERNAL,API APP ADMIN -/_dr/task/exportCommitLogDiff ExportCommitLogDiffAction POST y INTERNAL,API APP ADMIN /_dr/task/exportDomainLists ExportDomainListsAction POST n INTERNAL,API APP ADMIN /_dr/task/exportPremiumTerms ExportPremiumTermsAction POST n INTERNAL,API APP ADMIN /_dr/task/exportReservedTerms ExportReservedTermsAction POST n INTERNAL,API APP ADMIN @@ -31,7 +27,6 @@ PATH CLASS /_dr/task/rdeStaging RdeStagingAction GET,POST n INTERNAL,API APP ADMIN /_dr/task/rdeUpload RdeUploadAction POST n INTERNAL,API APP ADMIN /_dr/task/relockDomain RelockDomainAction POST y INTERNAL,API APP ADMIN -/_dr/task/resaveAllEppResources ResaveAllEppResourcesAction GET n INTERNAL,API APP ADMIN /_dr/task/resaveAllEppResourcesPipeline ResaveAllEppResourcesPipelineAction GET n INTERNAL,API APP ADMIN /_dr/task/resaveEntity ResaveEntityAction POST n INTERNAL,API APP ADMIN /_dr/task/sendExpiringCertificateNotificationEmail SendExpiringCertificateNotificationEmailAction GET n INTERNAL,API APP ADMIN diff --git a/core/src/test/resources/google/registry/module/tools/tools_routing.txt b/core/src/test/resources/google/registry/module/tools/tools_routing.txt index d871079a4..1fa3170fb 100644 --- a/core/src/test/resources/google/registry/module/tools/tools_routing.txt +++ b/core/src/test/resources/google/registry/module/tools/tools_routing.txt @@ -10,8 +10,4 @@ PATH CLASS METHODS OK AUTH /_dr/epptool EppToolAction POST n INTERNAL,API APP ADMIN /_dr/loadtest LoadTestAction POST y INTERNAL,API APP ADMIN /_dr/task/generateZoneFiles GenerateZoneFilesAction POST n INTERNAL,API APP ADMIN -/_dr/task/killAllCommitLogs KillAllCommitLogsAction POST n INTERNAL,API APP ADMIN -/_dr/task/killAllEppResources KillAllEppResourcesAction POST n INTERNAL,API APP ADMIN /_dr/task/refreshDnsForAllDomains RefreshDnsForAllDomainsAction GET n INTERNAL,API APP ADMIN -/_dr/task/resaveAllHistoryEntries ResaveAllHistoryEntriesAction GET n INTERNAL,API APP ADMIN -/_dr/task/restoreCommitLogs RestoreCommitLogsAction POST y INTERNAL,API APP ADMIN diff --git a/db/gradle/dependency-locks/default.lockfile b/db/gradle/dependency-locks/default.lockfile index 5f2c7d28c..713023830 100644 --- a/db/gradle/dependency-locks/default.lockfile +++ b/db/gradle/dependency-locks/default.lockfile @@ -9,25 +9,25 @@ com.github.jnr:jnr-ffi:2.2.11 com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 -com.google.api-client:google-api-client:1.35.0 -com.google.api:gax:2.18.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.auth:google-auth-library-credentials:1.7.0 -com.google.auth:google-auth-library-oauth2-http:1.7.0 +com.google.api-client:google-api-client:1.34.0 +com.google.api:gax:2.16.0 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.auth:google-auth-library-credentials:1.6.0 +com.google.auth:google-auth-library-oauth2-http:1.6.0 com.google.auto.value:auto-value-annotations:1.9 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.41.8 -com.google.http-client:google-http-client-gson:1.41.8 -com.google.http-client:google-http-client:1.41.8 +com.google.http-client:google-http-client-apache-v2:1.41.7 +com.google.http-client:google-http-client-gson:1.41.7 +com.google.http-client:google-http-client:1.41.7 com.google.j2objc:j2objc-annotations:1.3 -com.google.oauth-client:google-oauth-client:1.34.0 +com.google.oauth-client:google-oauth-client:1.33.2 commons-codec:commons-codec:1.11 commons-logging:commons-logging:1.2 io.grpc:grpc-context:1.27.2 @@ -43,4 +43,4 @@ org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 diff --git a/db/gradle/dependency-locks/deploy_jar.lockfile b/db/gradle/dependency-locks/deploy_jar.lockfile index 5f2c7d28c..713023830 100644 --- a/db/gradle/dependency-locks/deploy_jar.lockfile +++ b/db/gradle/dependency-locks/deploy_jar.lockfile @@ -9,25 +9,25 @@ com.github.jnr:jnr-ffi:2.2.11 com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 -com.google.api-client:google-api-client:1.35.0 -com.google.api:gax:2.18.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.auth:google-auth-library-credentials:1.7.0 -com.google.auth:google-auth-library-oauth2-http:1.7.0 +com.google.api-client:google-api-client:1.34.0 +com.google.api:gax:2.16.0 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.auth:google-auth-library-credentials:1.6.0 +com.google.auth:google-auth-library-oauth2-http:1.6.0 com.google.auto.value:auto-value-annotations:1.9 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.41.8 -com.google.http-client:google-http-client-gson:1.41.8 -com.google.http-client:google-http-client:1.41.8 +com.google.http-client:google-http-client-apache-v2:1.41.7 +com.google.http-client:google-http-client-gson:1.41.7 +com.google.http-client:google-http-client:1.41.7 com.google.j2objc:j2objc-annotations:1.3 -com.google.oauth-client:google-oauth-client:1.34.0 +com.google.oauth-client:google-oauth-client:1.33.2 commons-codec:commons-codec:1.11 commons-logging:commons-logging:1.2 io.grpc:grpc-context:1.27.2 @@ -43,4 +43,4 @@ org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 diff --git a/db/gradle/dependency-locks/runtimeClasspath.lockfile b/db/gradle/dependency-locks/runtimeClasspath.lockfile index 5f2c7d28c..713023830 100644 --- a/db/gradle/dependency-locks/runtimeClasspath.lockfile +++ b/db/gradle/dependency-locks/runtimeClasspath.lockfile @@ -9,25 +9,25 @@ com.github.jnr:jnr-ffi:2.2.11 com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 -com.google.api-client:google-api-client:1.35.0 -com.google.api:gax:2.18.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.auth:google-auth-library-credentials:1.7.0 -com.google.auth:google-auth-library-oauth2-http:1.7.0 +com.google.api-client:google-api-client:1.34.0 +com.google.api:gax:2.16.0 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.auth:google-auth-library-credentials:1.6.0 +com.google.auth:google-auth-library-oauth2-http:1.6.0 com.google.auto.value:auto-value-annotations:1.9 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.41.8 -com.google.http-client:google-http-client-gson:1.41.8 -com.google.http-client:google-http-client:1.41.8 +com.google.http-client:google-http-client-apache-v2:1.41.7 +com.google.http-client:google-http-client-gson:1.41.7 +com.google.http-client:google-http-client:1.41.7 com.google.j2objc:j2objc-annotations:1.3 -com.google.oauth-client:google-oauth-client:1.34.0 +com.google.oauth-client:google-oauth-client:1.33.2 commons-codec:commons-codec:1.11 commons-logging:commons-logging:1.2 io.grpc:grpc-context:1.27.2 @@ -43,4 +43,4 @@ org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 diff --git a/db/gradle/dependency-locks/testRuntimeClasspath.lockfile b/db/gradle/dependency-locks/testRuntimeClasspath.lockfile index 7f3774ae5..86e77b826 100644 --- a/db/gradle/dependency-locks/testRuntimeClasspath.lockfile +++ b/db/gradle/dependency-locks/testRuntimeClasspath.lockfile @@ -13,27 +13,27 @@ com.github.jnr:jnr-ffi:2.2.11 com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 -com.google.api-client:google-api-client:1.35.0 -com.google.api:gax:2.18.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.auth:google-auth-library-credentials:1.7.0 -com.google.auth:google-auth-library-oauth2-http:1.7.0 +com.google.api-client:google-api-client:1.34.0 +com.google.api:gax:2.16.0 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.auth:google-auth-library-credentials:1.6.0 +com.google.auth:google-auth-library-oauth2-http:1.6.0 com.google.auto.value:auto-value-annotations:1.9 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.flogger:flogger-system-backend:0.7.4 com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.41.8 -com.google.http-client:google-http-client-gson:1.41.8 -com.google.http-client:google-http-client:1.41.8 +com.google.http-client:google-http-client-apache-v2:1.41.7 +com.google.http-client:google-http-client-gson:1.41.7 +com.google.http-client:google-http-client:1.41.7 com.google.j2objc:j2objc-annotations:1.3 -com.google.oauth-client:google-oauth-client:1.34.0 +com.google.oauth-client:google-oauth-client:1.33.2 com.google.truth:truth:1.1.3 commons-codec:commons-codec:1.11 commons-logging:commons-logging:1.2 @@ -62,7 +62,7 @@ org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:slf4j-api:1.7.35 org.testcontainers:database-commons:1.17.2 diff --git a/dependencies.gradle b/dependencies.gradle index 1279d81a4..b24c3b4c6 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -114,7 +114,6 @@ ext { 'com.google.apis:google-api-services-monitoring:[v3-rev540-1.25.0,)', 'com.google.apis:google-api-services-sheets:[v4-rev612-1.25.0,)', 'com.google.apis:google-api-services-storage:[v1-rev20210127-1.31.0,)', - 'com.google.appengine.tools:appengine-mapreduce:[0.9,)', 'com.google.appengine:appengine-api-stubs:[1.9.86,)', 'com.google.appengine:appengine-remote-api:[1.9.86,)', 'com.google.auth:google-auth-library-credentials:[0.24.1,)', diff --git a/docs/code-structure.md b/docs/code-structure.md index 07cd04b2c..41c08230e 100644 --- a/docs/code-structure.md +++ b/docs/code-structure.md @@ -93,28 +93,6 @@ deterministic string that consists of the websafe string of the Key of the scope object concatenated with the name of the name of the cursor type, separated by an underscore. -## Mapreduces - -Nomulus uses the [App Engine MapReduce -framework](https://github.com/GoogleCloudPlatform/appengine-mapreduce/wiki/1-MapReduce) -extensively, both for a variety of regularly scheduled background tasks and for -one-off maintenance tasks. The MapReduce framework comes with a web UI for -viewing the status of ongoing and completed tasks. - -Most MapReduces in Nomulus work by mapping over all entities of a given set of -Datastore kind(s) (e.g. domains, contacts, etc.). All of the MapReduces in -Nomulus are run by the `MapreduceRunner` class, which provides a standard set of -ways to set the number of mapper and reducer shards. It is common to run -map-only MapReduces when reducers aren't needed; these are supported as well. - -The main complication with MapReduces is that the mapper and reducer classes are -required to be serializable as a consequence of how work is sharded out, -pasued/resumed, and moved around. All fields on these classes must therefore be -either `Serializable` or `transient`. This also means that dependency injection -is of limited use -- the best you can do is to `@Inject` serializable fields on -the entire MapReduce `Action`, and then set them manually on the mapper/reducer -classes in their constructor. - ## Guava The Nomulus codebase makes extensive use of the diff --git a/docs/gradle/dependency-locks/compile.lockfile b/docs/gradle/dependency-locks/compile.lockfile index c2e003060..f2545fc2f 100644 --- a/docs/gradle/dependency-locks/compile.lockfile +++ b/docs/gradle/dependency-locks/compile.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -273,7 +269,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -290,13 +285,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/docs/gradle/dependency-locks/compileClasspath.lockfile b/docs/gradle/dependency-locks/compileClasspath.lockfile index 159243d9e..e3d77965f 100644 --- a/docs/gradle/dependency-locks/compileClasspath.lockfile +++ b/docs/gradle/dependency-locks/compileClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -27,11 +26,11 @@ com.github.jnr:jnr-ffi:2.2.11 com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -84,10 +83,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -102,7 +100,7 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -114,7 +112,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -122,7 +120,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -132,28 +130,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -209,7 +206,6 @@ io.opencensus:opencensus-exporter-stats-stackdriver:0.31.0 io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -261,7 +257,6 @@ org.checkerframework:checker-qual:3.22.0 org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -277,13 +272,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/docs/gradle/dependency-locks/default.lockfile b/docs/gradle/dependency-locks/default.lockfile index c2e003060..f2545fc2f 100644 --- a/docs/gradle/dependency-locks/default.lockfile +++ b/docs/gradle/dependency-locks/default.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -273,7 +269,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -290,13 +285,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/docs/gradle/dependency-locks/deploy_jar.lockfile b/docs/gradle/dependency-locks/deploy_jar.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/docs/gradle/dependency-locks/deploy_jar.lockfile +++ b/docs/gradle/dependency-locks/deploy_jar.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/docs/gradle/dependency-locks/runtime.lockfile b/docs/gradle/dependency-locks/runtime.lockfile index c2e003060..f2545fc2f 100644 --- a/docs/gradle/dependency-locks/runtime.lockfile +++ b/docs/gradle/dependency-locks/runtime.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -273,7 +269,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -290,13 +285,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/docs/gradle/dependency-locks/runtimeClasspath.lockfile b/docs/gradle/dependency-locks/runtimeClasspath.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/docs/gradle/dependency-locks/runtimeClasspath.lockfile +++ b/docs/gradle/dependency-locks/runtimeClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/docs/gradle/dependency-locks/testCompile.lockfile b/docs/gradle/dependency-locks/testCompile.lockfile index 66d72232d..159d4ce3f 100644 --- a/docs/gradle/dependency-locks/testCompile.lockfile +++ b/docs/gradle/dependency-locks/testCompile.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,29 +132,28 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 com.google.truth:truth:1.1.3 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -221,7 +218,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -275,7 +271,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -301,14 +296,13 @@ org.junit.platform:junit-platform-suite-api:1.9.0-M1 org.junit.platform:junit-platform-suite-commons:1.9.0-M1 org.junit:junit-bom:5.9.0-M1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.opentest4j:opentest4j:1.2.0 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/docs/gradle/dependency-locks/testCompileClasspath.lockfile b/docs/gradle/dependency-locks/testCompileClasspath.lockfile index b8d3fbf2f..c8cc6684c 100644 --- a/docs/gradle/dependency-locks/testCompileClasspath.lockfile +++ b/docs/gradle/dependency-locks/testCompileClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -27,11 +26,11 @@ com.github.jnr:jnr-ffi:2.2.11 com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -84,10 +83,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -102,7 +100,7 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -114,7 +112,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -122,7 +120,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -132,29 +130,28 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 com.google.truth:truth:1.1.3 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -211,7 +208,6 @@ io.opencensus:opencensus-exporter-stats-stackdriver:0.31.0 io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -265,7 +261,6 @@ org.checkerframework:checker-qual:3.22.0 org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -290,14 +285,13 @@ org.junit.platform:junit-platform-runner:1.9.0-M1 org.junit.platform:junit-platform-suite-api:1.9.0-M1 org.junit:junit-bom:5.9.0-M1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.opentest4j:opentest4j:1.2.0 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/docs/gradle/dependency-locks/testRuntime.lockfile b/docs/gradle/dependency-locks/testRuntime.lockfile index 66d72232d..159d4ce3f 100644 --- a/docs/gradle/dependency-locks/testRuntime.lockfile +++ b/docs/gradle/dependency-locks/testRuntime.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,29 +132,28 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 com.google.truth:truth:1.1.3 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -221,7 +218,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -275,7 +271,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -301,14 +296,13 @@ org.junit.platform:junit-platform-suite-api:1.9.0-M1 org.junit.platform:junit-platform-suite-commons:1.9.0-M1 org.junit:junit-bom:5.9.0-M1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.opentest4j:opentest4j:1.2.0 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/docs/gradle/dependency-locks/testRuntimeClasspath.lockfile b/docs/gradle/dependency-locks/testRuntimeClasspath.lockfile index 66d72232d..159d4ce3f 100644 --- a/docs/gradle/dependency-locks/testRuntimeClasspath.lockfile +++ b/docs/gradle/dependency-locks/testRuntimeClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,29 +132,28 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 com.google.truth:truth:1.1.3 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -221,7 +218,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -275,7 +271,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -301,14 +296,13 @@ org.junit.platform:junit-platform-suite-api:1.9.0-M1 org.junit.platform:junit-platform-suite-commons:1.9.0-M1 org.junit:junit-bom:5.9.0-M1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.opentest4j:opentest4j:1.2.0 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/docs/operational-procedures/brda-deposits.md b/docs/operational-procedures/brda-deposits.md index fb5bd568d..102318752 100644 --- a/docs/operational-procedures/brda-deposits.md +++ b/docs/operational-procedures/brda-deposits.md @@ -28,7 +28,7 @@ The BRDA copy task reads the previous file and creates two files: ``` If you see an `xml.ghostryde` file but not the others, an error has occurred -during the mapreduce process. If you see the files in the +during the process. If you see the files in the {PROJECT-ID}-icann-brda bucket as well, the process has completed successfully. Once the files have been created, they must be stored on an sFTP server from diff --git a/networking/gradle/dependency-locks/compile.lockfile b/networking/gradle/dependency-locks/compile.lockfile index 5170e1353..daab05b82 100644 --- a/networking/gradle/dependency-locks/compile.lockfile +++ b/networking/gradle/dependency-locks/compile.lockfile @@ -3,7 +3,7 @@ # This file is expected to be part of source control. com.github.ben-manes.caffeine:caffeine:2.9.3 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -27,11 +27,11 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 diff --git a/networking/gradle/dependency-locks/compileClasspath.lockfile b/networking/gradle/dependency-locks/compileClasspath.lockfile index 9c3d87a75..329f506f5 100644 --- a/networking/gradle/dependency-locks/compileClasspath.lockfile +++ b/networking/gradle/dependency-locks/compileClasspath.lockfile @@ -2,7 +2,7 @@ # Manual edits can break the build and are not advised. # This file is expected to be part of source control. com.github.ben-manes.caffeine:caffeine:2.9.3 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -26,11 +26,11 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:4.0.0-rc-2 com.google.protobuf:protobuf-java:4.0.0-rc-2 com.google.re2j:re2j:1.6 @@ -49,8 +49,8 @@ io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final io.netty:netty-transport:4.1.59.Final -io.opencensus:opencensus-api:0.31.1 -io.opencensus:opencensus-contrib-http-util:0.31.1 +io.opencensus:opencensus-api:0.31.0 +io.opencensus:opencensus-contrib-http-util:0.31.0 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 diff --git a/networking/gradle/dependency-locks/default.lockfile b/networking/gradle/dependency-locks/default.lockfile index bf6c3952d..1661091a6 100644 --- a/networking/gradle/dependency-locks/default.lockfile +++ b/networking/gradle/dependency-locks/default.lockfile @@ -3,7 +3,7 @@ # This file is expected to be part of source control. com.github.ben-manes.caffeine:caffeine:2.9.3 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -28,11 +28,11 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 @@ -58,8 +58,8 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final io.opencensus:opencensus-api:0.31.1 io.opencensus:opencensus-contrib-http-util:0.31.1 diff --git a/networking/gradle/dependency-locks/deploy_jar.lockfile b/networking/gradle/dependency-locks/deploy_jar.lockfile index bf6c3952d..1661091a6 100644 --- a/networking/gradle/dependency-locks/deploy_jar.lockfile +++ b/networking/gradle/dependency-locks/deploy_jar.lockfile @@ -3,7 +3,7 @@ # This file is expected to be part of source control. com.github.ben-manes.caffeine:caffeine:2.9.3 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -28,11 +28,11 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 @@ -58,8 +58,8 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final io.opencensus:opencensus-api:0.31.1 io.opencensus:opencensus-contrib-http-util:0.31.1 diff --git a/networking/gradle/dependency-locks/runtime.lockfile b/networking/gradle/dependency-locks/runtime.lockfile index bf6c3952d..1661091a6 100644 --- a/networking/gradle/dependency-locks/runtime.lockfile +++ b/networking/gradle/dependency-locks/runtime.lockfile @@ -3,7 +3,7 @@ # This file is expected to be part of source control. com.github.ben-manes.caffeine:caffeine:2.9.3 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -28,11 +28,11 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 @@ -58,8 +58,8 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final io.opencensus:opencensus-api:0.31.1 io.opencensus:opencensus-contrib-http-util:0.31.1 diff --git a/networking/gradle/dependency-locks/runtimeClasspath.lockfile b/networking/gradle/dependency-locks/runtimeClasspath.lockfile index bf6c3952d..1661091a6 100644 --- a/networking/gradle/dependency-locks/runtimeClasspath.lockfile +++ b/networking/gradle/dependency-locks/runtimeClasspath.lockfile @@ -3,7 +3,7 @@ # This file is expected to be part of source control. com.github.ben-manes.caffeine:caffeine:2.9.3 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -28,11 +28,11 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 @@ -58,8 +58,8 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final io.opencensus:opencensus-api:0.31.1 io.opencensus:opencensus-contrib-http-util:0.31.1 diff --git a/networking/gradle/dependency-locks/testCompile.lockfile b/networking/gradle/dependency-locks/testCompile.lockfile index ebc2f51bb..20a86c8c0 100644 --- a/networking/gradle/dependency-locks/testCompile.lockfile +++ b/networking/gradle/dependency-locks/testCompile.lockfile @@ -7,7 +7,7 @@ com.github.docker-java:docker-java-api:3.2.13 com.github.docker-java:docker-java-transport-zerodep:3.2.13 com.github.docker-java:docker-java-transport:3.2.13 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -31,11 +31,11 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 diff --git a/networking/gradle/dependency-locks/testCompileClasspath.lockfile b/networking/gradle/dependency-locks/testCompileClasspath.lockfile index c89349ba3..96b7cc9ae 100644 --- a/networking/gradle/dependency-locks/testCompileClasspath.lockfile +++ b/networking/gradle/dependency-locks/testCompileClasspath.lockfile @@ -6,7 +6,7 @@ com.github.ben-manes.caffeine:caffeine:2.9.3 com.github.docker-java:docker-java-api:3.2.13 com.github.docker-java:docker-java-transport-zerodep:3.2.13 com.github.docker-java:docker-java-transport:3.2.13 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -30,11 +30,11 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:4.0.0-rc-2 com.google.protobuf:protobuf-java:4.0.0-rc-2 com.google.re2j:re2j:1.6 @@ -54,8 +54,8 @@ io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final io.netty:netty-transport:4.1.59.Final -io.opencensus:opencensus-api:0.31.1 -io.opencensus:opencensus-contrib-http-util:0.31.1 +io.opencensus:opencensus-api:0.31.0 +io.opencensus:opencensus-contrib-http-util:0.31.0 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 diff --git a/networking/gradle/dependency-locks/testRuntime.lockfile b/networking/gradle/dependency-locks/testRuntime.lockfile index 135ea31f5..f7030c365 100644 --- a/networking/gradle/dependency-locks/testRuntime.lockfile +++ b/networking/gradle/dependency-locks/testRuntime.lockfile @@ -7,7 +7,7 @@ com.github.docker-java:docker-java-api:3.2.13 com.github.docker-java:docker-java-transport-zerodep:3.2.13 com.github.docker-java:docker-java-transport:3.2.13 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -32,11 +32,11 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 @@ -63,8 +63,8 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final io.opencensus:opencensus-api:0.31.1 io.opencensus:opencensus-contrib-http-util:0.31.1 diff --git a/networking/gradle/dependency-locks/testRuntimeClasspath.lockfile b/networking/gradle/dependency-locks/testRuntimeClasspath.lockfile index 135ea31f5..f7030c365 100644 --- a/networking/gradle/dependency-locks/testRuntimeClasspath.lockfile +++ b/networking/gradle/dependency-locks/testRuntimeClasspath.lockfile @@ -7,7 +7,7 @@ com.github.docker-java:docker-java-api:3.2.13 com.github.docker-java:docker-java-transport-zerodep:3.2.13 com.github.docker-java:docker-java-transport:3.2.13 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -32,11 +32,11 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 @@ -63,8 +63,8 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final io.opencensus:opencensus-api:0.31.1 io.opencensus:opencensus-contrib-http-util:0.31.1 diff --git a/prober/gradle/dependency-locks/compile.lockfile b/prober/gradle/dependency-locks/compile.lockfile index 5eba28656..5a1e9bf21 100644 --- a/prober/gradle/dependency-locks/compile.lockfile +++ b/prober/gradle/dependency-locks/compile.lockfile @@ -3,7 +3,7 @@ # This file is expected to be part of source control. com.github.ben-manes.caffeine:caffeine:2.9.3 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -28,12 +28,12 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 com.google.monitoring-client:metrics:1.0.7 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 @@ -59,8 +59,8 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final io.opencensus:opencensus-api:0.31.1 io.opencensus:opencensus-contrib-http-util:0.31.1 diff --git a/prober/gradle/dependency-locks/compileClasspath.lockfile b/prober/gradle/dependency-locks/compileClasspath.lockfile index 26f94d80a..c13fafb04 100644 --- a/prober/gradle/dependency-locks/compileClasspath.lockfile +++ b/prober/gradle/dependency-locks/compileClasspath.lockfile @@ -2,7 +2,7 @@ # Manual edits can break the build and are not advised. # This file is expected to be part of source control. com.github.ben-manes.caffeine:caffeine:2.9.3 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -27,12 +27,12 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 com.google.monitoring-client:metrics:1.0.7 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:4.0.0-rc-2 com.google.protobuf:protobuf-java:4.0.0-rc-2 com.google.re2j:re2j:1.6 @@ -50,11 +50,11 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final -io.opencensus:opencensus-api:0.31.1 -io.opencensus:opencensus-contrib-http-util:0.31.1 +io.opencensus:opencensus-api:0.31.0 +io.opencensus:opencensus-contrib-http-util:0.31.0 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 diff --git a/prober/gradle/dependency-locks/default.lockfile b/prober/gradle/dependency-locks/default.lockfile index 5eba28656..5a1e9bf21 100644 --- a/prober/gradle/dependency-locks/default.lockfile +++ b/prober/gradle/dependency-locks/default.lockfile @@ -3,7 +3,7 @@ # This file is expected to be part of source control. com.github.ben-manes.caffeine:caffeine:2.9.3 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -28,12 +28,12 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 com.google.monitoring-client:metrics:1.0.7 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 @@ -59,8 +59,8 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final io.opencensus:opencensus-api:0.31.1 io.opencensus:opencensus-contrib-http-util:0.31.1 diff --git a/prober/gradle/dependency-locks/deploy_jar.lockfile b/prober/gradle/dependency-locks/deploy_jar.lockfile index 5eba28656..5a1e9bf21 100644 --- a/prober/gradle/dependency-locks/deploy_jar.lockfile +++ b/prober/gradle/dependency-locks/deploy_jar.lockfile @@ -3,7 +3,7 @@ # This file is expected to be part of source control. com.github.ben-manes.caffeine:caffeine:2.9.3 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -28,12 +28,12 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 com.google.monitoring-client:metrics:1.0.7 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 @@ -59,8 +59,8 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final io.opencensus:opencensus-api:0.31.1 io.opencensus:opencensus-contrib-http-util:0.31.1 diff --git a/prober/gradle/dependency-locks/runtime.lockfile b/prober/gradle/dependency-locks/runtime.lockfile index 5eba28656..5a1e9bf21 100644 --- a/prober/gradle/dependency-locks/runtime.lockfile +++ b/prober/gradle/dependency-locks/runtime.lockfile @@ -3,7 +3,7 @@ # This file is expected to be part of source control. com.github.ben-manes.caffeine:caffeine:2.9.3 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -28,12 +28,12 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 com.google.monitoring-client:metrics:1.0.7 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 @@ -59,8 +59,8 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final io.opencensus:opencensus-api:0.31.1 io.opencensus:opencensus-contrib-http-util:0.31.1 diff --git a/prober/gradle/dependency-locks/runtimeClasspath.lockfile b/prober/gradle/dependency-locks/runtimeClasspath.lockfile index 5eba28656..5a1e9bf21 100644 --- a/prober/gradle/dependency-locks/runtimeClasspath.lockfile +++ b/prober/gradle/dependency-locks/runtimeClasspath.lockfile @@ -3,7 +3,7 @@ # This file is expected to be part of source control. com.github.ben-manes.caffeine:caffeine:2.9.3 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -28,12 +28,12 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 com.google.monitoring-client:metrics:1.0.7 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 @@ -59,8 +59,8 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final io.opencensus:opencensus-api:0.31.1 io.opencensus:opencensus-contrib-http-util:0.31.1 diff --git a/prober/gradle/dependency-locks/testCompile.lockfile b/prober/gradle/dependency-locks/testCompile.lockfile index 87aa65b54..5ba87b010 100644 --- a/prober/gradle/dependency-locks/testCompile.lockfile +++ b/prober/gradle/dependency-locks/testCompile.lockfile @@ -7,7 +7,7 @@ com.github.docker-java:docker-java-api:3.2.13 com.github.docker-java:docker-java-transport-zerodep:3.2.13 com.github.docker-java:docker-java-transport:3.2.13 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -32,13 +32,13 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 com.google.monitoring-client:contrib:1.0.7 com.google.monitoring-client:metrics:1.0.7 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 @@ -65,8 +65,8 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final io.opencensus:opencensus-api:0.31.1 io.opencensus:opencensus-contrib-http-util:0.31.1 diff --git a/prober/gradle/dependency-locks/testCompileClasspath.lockfile b/prober/gradle/dependency-locks/testCompileClasspath.lockfile index 7e9fc2599..bfeecbbd8 100644 --- a/prober/gradle/dependency-locks/testCompileClasspath.lockfile +++ b/prober/gradle/dependency-locks/testCompileClasspath.lockfile @@ -6,7 +6,7 @@ com.github.ben-manes.caffeine:caffeine:2.9.3 com.github.docker-java:docker-java-api:3.2.13 com.github.docker-java:docker-java-transport-zerodep:3.2.13 com.github.docker-java:docker-java-transport:3.2.13 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -31,13 +31,13 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 com.google.monitoring-client:contrib:1.0.7 com.google.monitoring-client:metrics:1.0.7 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:4.0.0-rc-2 com.google.protobuf:protobuf-java:4.0.0-rc-2 com.google.re2j:re2j:1.6 @@ -56,11 +56,11 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final -io.opencensus:opencensus-api:0.31.1 -io.opencensus:opencensus-contrib-http-util:0.31.1 +io.opencensus:opencensus-api:0.31.0 +io.opencensus:opencensus-contrib-http-util:0.31.0 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 diff --git a/prober/gradle/dependency-locks/testRuntime.lockfile b/prober/gradle/dependency-locks/testRuntime.lockfile index 87aa65b54..5ba87b010 100644 --- a/prober/gradle/dependency-locks/testRuntime.lockfile +++ b/prober/gradle/dependency-locks/testRuntime.lockfile @@ -7,7 +7,7 @@ com.github.docker-java:docker-java-api:3.2.13 com.github.docker-java:docker-java-transport-zerodep:3.2.13 com.github.docker-java:docker-java-transport:3.2.13 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -32,13 +32,13 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 com.google.monitoring-client:contrib:1.0.7 com.google.monitoring-client:metrics:1.0.7 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 @@ -65,8 +65,8 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final io.opencensus:opencensus-api:0.31.1 io.opencensus:opencensus-contrib-http-util:0.31.1 diff --git a/prober/gradle/dependency-locks/testRuntimeClasspath.lockfile b/prober/gradle/dependency-locks/testRuntimeClasspath.lockfile index 87aa65b54..5ba87b010 100644 --- a/prober/gradle/dependency-locks/testRuntimeClasspath.lockfile +++ b/prober/gradle/dependency-locks/testRuntimeClasspath.lockfile @@ -7,7 +7,7 @@ com.github.docker-java:docker-java-api:3.2.13 com.github.docker-java:docker-java-transport-zerodep:3.2.13 com.github.docker-java:docker-java-transport:3.2.13 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -32,13 +32,13 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 com.google.monitoring-client:contrib:1.0.7 com.google.monitoring-client:metrics:1.0.7 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 @@ -65,8 +65,8 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final io.opencensus:opencensus-api:0.31.1 io.opencensus:opencensus-contrib-http-util:0.31.1 diff --git a/proxy/gradle/dependency-locks/compile.lockfile b/proxy/gradle/dependency-locks/compile.lockfile index 384aa88e0..1335b4c64 100644 --- a/proxy/gradle/dependency-locks/compile.lockfile +++ b/proxy/gradle/dependency-locks/compile.lockfile @@ -18,7 +18,7 @@ com.google.api:gax-httpjson:0.103.1 com.google.api:gax:2.18.1 com.google.apis:google-api-services-cloudkms:v1-rev20220513-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine:appengine-api-1.0-sdk:1.9.86 com.google.appengine:appengine-testing:1.9.86 com.google.auth:google-auth-library-credentials:1.7.0 @@ -27,7 +27,7 @@ com.google.auto.value:auto-value-annotations:1.9 com.google.auto.value:auto-value:1.9 com.google.cloud:google-cloud-core-http:2.7.1 com.google.cloud:google-cloud-core:2.7.1 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 @@ -72,8 +72,8 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final io.opencensus:opencensus-api:0.31.1 io.opencensus:opencensus-contrib-http-util:0.31.1 diff --git a/proxy/gradle/dependency-locks/compileClasspath.lockfile b/proxy/gradle/dependency-locks/compileClasspath.lockfile index b31430869..c036f1ce3 100644 --- a/proxy/gradle/dependency-locks/compileClasspath.lockfile +++ b/proxy/gradle/dependency-locks/compileClasspath.lockfile @@ -17,7 +17,7 @@ com.google.api:gax-httpjson:0.103.1 com.google.api:gax:2.18.1 com.google.apis:google-api-services-cloudkms:v1-rev20220513-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine:appengine-api-1.0-sdk:1.9.86 com.google.appengine:appengine-testing:1.9.86 com.google.auth:google-auth-library-credentials:1.7.0 @@ -26,7 +26,7 @@ com.google.auto.value:auto-value-annotations:1.9 com.google.auto.value:auto-value:1.9 com.google.cloud:google-cloud-core-http:2.7.1 com.google.cloud:google-cloud-core:2.7.1 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 @@ -63,8 +63,8 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final io.opencensus:opencensus-api:0.31.1 io.opencensus:opencensus-contrib-http-util:0.31.1 diff --git a/proxy/gradle/dependency-locks/default.lockfile b/proxy/gradle/dependency-locks/default.lockfile index 384aa88e0..1335b4c64 100644 --- a/proxy/gradle/dependency-locks/default.lockfile +++ b/proxy/gradle/dependency-locks/default.lockfile @@ -18,7 +18,7 @@ com.google.api:gax-httpjson:0.103.1 com.google.api:gax:2.18.1 com.google.apis:google-api-services-cloudkms:v1-rev20220513-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine:appengine-api-1.0-sdk:1.9.86 com.google.appengine:appengine-testing:1.9.86 com.google.auth:google-auth-library-credentials:1.7.0 @@ -27,7 +27,7 @@ com.google.auto.value:auto-value-annotations:1.9 com.google.auto.value:auto-value:1.9 com.google.cloud:google-cloud-core-http:2.7.1 com.google.cloud:google-cloud-core:2.7.1 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 @@ -72,8 +72,8 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final io.opencensus:opencensus-api:0.31.1 io.opencensus:opencensus-contrib-http-util:0.31.1 diff --git a/proxy/gradle/dependency-locks/deploy_jar.lockfile b/proxy/gradle/dependency-locks/deploy_jar.lockfile index 384aa88e0..1335b4c64 100644 --- a/proxy/gradle/dependency-locks/deploy_jar.lockfile +++ b/proxy/gradle/dependency-locks/deploy_jar.lockfile @@ -18,7 +18,7 @@ com.google.api:gax-httpjson:0.103.1 com.google.api:gax:2.18.1 com.google.apis:google-api-services-cloudkms:v1-rev20220513-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine:appengine-api-1.0-sdk:1.9.86 com.google.appengine:appengine-testing:1.9.86 com.google.auth:google-auth-library-credentials:1.7.0 @@ -27,7 +27,7 @@ com.google.auto.value:auto-value-annotations:1.9 com.google.auto.value:auto-value:1.9 com.google.cloud:google-cloud-core-http:2.7.1 com.google.cloud:google-cloud-core:2.7.1 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 @@ -72,8 +72,8 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final io.opencensus:opencensus-api:0.31.1 io.opencensus:opencensus-contrib-http-util:0.31.1 diff --git a/proxy/gradle/dependency-locks/runtime.lockfile b/proxy/gradle/dependency-locks/runtime.lockfile index 384aa88e0..1335b4c64 100644 --- a/proxy/gradle/dependency-locks/runtime.lockfile +++ b/proxy/gradle/dependency-locks/runtime.lockfile @@ -18,7 +18,7 @@ com.google.api:gax-httpjson:0.103.1 com.google.api:gax:2.18.1 com.google.apis:google-api-services-cloudkms:v1-rev20220513-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine:appengine-api-1.0-sdk:1.9.86 com.google.appengine:appengine-testing:1.9.86 com.google.auth:google-auth-library-credentials:1.7.0 @@ -27,7 +27,7 @@ com.google.auto.value:auto-value-annotations:1.9 com.google.auto.value:auto-value:1.9 com.google.cloud:google-cloud-core-http:2.7.1 com.google.cloud:google-cloud-core:2.7.1 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 @@ -72,8 +72,8 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final io.opencensus:opencensus-api:0.31.1 io.opencensus:opencensus-contrib-http-util:0.31.1 diff --git a/proxy/gradle/dependency-locks/runtimeClasspath.lockfile b/proxy/gradle/dependency-locks/runtimeClasspath.lockfile index 384aa88e0..1335b4c64 100644 --- a/proxy/gradle/dependency-locks/runtimeClasspath.lockfile +++ b/proxy/gradle/dependency-locks/runtimeClasspath.lockfile @@ -18,7 +18,7 @@ com.google.api:gax-httpjson:0.103.1 com.google.api:gax:2.18.1 com.google.apis:google-api-services-cloudkms:v1-rev20220513-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine:appengine-api-1.0-sdk:1.9.86 com.google.appengine:appengine-testing:1.9.86 com.google.auth:google-auth-library-credentials:1.7.0 @@ -27,7 +27,7 @@ com.google.auto.value:auto-value-annotations:1.9 com.google.auto.value:auto-value:1.9 com.google.cloud:google-cloud-core-http:2.7.1 com.google.cloud:google-cloud-core:2.7.1 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 @@ -72,8 +72,8 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final io.opencensus:opencensus-api:0.31.1 io.opencensus:opencensus-contrib-http-util:0.31.1 diff --git a/proxy/gradle/dependency-locks/testCompile.lockfile b/proxy/gradle/dependency-locks/testCompile.lockfile index 7da7d0396..8a36d40b9 100644 --- a/proxy/gradle/dependency-locks/testCompile.lockfile +++ b/proxy/gradle/dependency-locks/testCompile.lockfile @@ -22,7 +22,7 @@ com.google.api:gax-httpjson:0.103.1 com.google.api:gax:2.18.1 com.google.apis:google-api-services-cloudkms:v1-rev20220513-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine:appengine-api-1.0-sdk:1.9.86 com.google.appengine:appengine-testing:1.9.86 com.google.auth:google-auth-library-credentials:1.7.0 @@ -31,7 +31,7 @@ com.google.auto.value:auto-value-annotations:1.9 com.google.auto.value:auto-value:1.9 com.google.cloud:google-cloud-core-http:2.7.1 com.google.cloud:google-cloud-core:2.7.1 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 @@ -78,8 +78,8 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final io.opencensus:opencensus-api:0.31.1 io.opencensus:opencensus-contrib-http-util:0.31.1 diff --git a/proxy/gradle/dependency-locks/testCompileClasspath.lockfile b/proxy/gradle/dependency-locks/testCompileClasspath.lockfile index 1b4eac170..d92e7d94f 100644 --- a/proxy/gradle/dependency-locks/testCompileClasspath.lockfile +++ b/proxy/gradle/dependency-locks/testCompileClasspath.lockfile @@ -21,7 +21,7 @@ com.google.api:gax-httpjson:0.103.1 com.google.api:gax:2.18.1 com.google.apis:google-api-services-cloudkms:v1-rev20220513-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine:appengine-api-1.0-sdk:1.9.86 com.google.appengine:appengine-testing:1.9.86 com.google.auth:google-auth-library-credentials:1.7.0 @@ -30,7 +30,7 @@ com.google.auto.value:auto-value-annotations:1.9 com.google.auto.value:auto-value:1.9 com.google.cloud:google-cloud-core-http:2.7.1 com.google.cloud:google-cloud-core:2.7.1 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 @@ -69,8 +69,8 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final io.opencensus:opencensus-api:0.31.1 io.opencensus:opencensus-contrib-http-util:0.31.1 diff --git a/proxy/gradle/dependency-locks/testRuntime.lockfile b/proxy/gradle/dependency-locks/testRuntime.lockfile index 7da7d0396..8a36d40b9 100644 --- a/proxy/gradle/dependency-locks/testRuntime.lockfile +++ b/proxy/gradle/dependency-locks/testRuntime.lockfile @@ -22,7 +22,7 @@ com.google.api:gax-httpjson:0.103.1 com.google.api:gax:2.18.1 com.google.apis:google-api-services-cloudkms:v1-rev20220513-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine:appengine-api-1.0-sdk:1.9.86 com.google.appengine:appengine-testing:1.9.86 com.google.auth:google-auth-library-credentials:1.7.0 @@ -31,7 +31,7 @@ com.google.auto.value:auto-value-annotations:1.9 com.google.auto.value:auto-value:1.9 com.google.cloud:google-cloud-core-http:2.7.1 com.google.cloud:google-cloud-core:2.7.1 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 @@ -78,8 +78,8 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final io.opencensus:opencensus-api:0.31.1 io.opencensus:opencensus-contrib-http-util:0.31.1 diff --git a/proxy/gradle/dependency-locks/testRuntimeClasspath.lockfile b/proxy/gradle/dependency-locks/testRuntimeClasspath.lockfile index 7da7d0396..8a36d40b9 100644 --- a/proxy/gradle/dependency-locks/testRuntimeClasspath.lockfile +++ b/proxy/gradle/dependency-locks/testRuntimeClasspath.lockfile @@ -22,7 +22,7 @@ com.google.api:gax-httpjson:0.103.1 com.google.api:gax:2.18.1 com.google.apis:google-api-services-cloudkms:v1-rev20220513-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine:appengine-api-1.0-sdk:1.9.86 com.google.appengine:appengine-testing:1.9.86 com.google.auth:google-auth-library-credentials:1.7.0 @@ -31,7 +31,7 @@ com.google.auto.value:auto-value-annotations:1.9 com.google.auto.value:auto-value:1.9 com.google.cloud:google-cloud-core-http:2.7.1 com.google.cloud:google-cloud-core:2.7.1 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 @@ -78,8 +78,8 @@ io.netty:netty-codec:4.1.59.Final io.netty:netty-common:4.1.59.Final io.netty:netty-handler:4.1.59.Final io.netty:netty-resolver:4.1.59.Final -io.netty:netty-tcnative-boringssl-static:2.0.53.Final -io.netty:netty-tcnative-classes:2.0.53.Final +io.netty:netty-tcnative-boringssl-static:2.0.52.Final +io.netty:netty-tcnative-classes:2.0.52.Final io.netty:netty-transport:4.1.59.Final io.opencensus:opencensus-api:0.31.1 io.opencensus:opencensus-contrib-http-util:0.31.1 diff --git a/services/backend/gradle/dependency-locks/compile.lockfile b/services/backend/gradle/dependency-locks/compile.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/backend/gradle/dependency-locks/compile.lockfile +++ b/services/backend/gradle/dependency-locks/compile.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/backend/gradle/dependency-locks/compileClasspath.lockfile b/services/backend/gradle/dependency-locks/compileClasspath.lockfile index d6545f467..083cc4248 100644 --- a/services/backend/gradle/dependency-locks/compileClasspath.lockfile +++ b/services/backend/gradle/dependency-locks/compileClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -27,11 +26,11 @@ com.github.jnr:jnr-ffi:2.2.11 com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -84,10 +83,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -102,8 +100,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -115,7 +113,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -123,7 +121,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -133,28 +131,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -210,7 +207,6 @@ io.opencensus:opencensus-exporter-stats-stackdriver:0.31.0 io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -262,7 +258,6 @@ org.checkerframework:checker-qual:3.22.0 org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -278,13 +273,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/backend/gradle/dependency-locks/default.lockfile b/services/backend/gradle/dependency-locks/default.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/backend/gradle/dependency-locks/default.lockfile +++ b/services/backend/gradle/dependency-locks/default.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/backend/gradle/dependency-locks/runtime.lockfile b/services/backend/gradle/dependency-locks/runtime.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/backend/gradle/dependency-locks/runtime.lockfile +++ b/services/backend/gradle/dependency-locks/runtime.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/backend/gradle/dependency-locks/runtimeClasspath.lockfile b/services/backend/gradle/dependency-locks/runtimeClasspath.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/backend/gradle/dependency-locks/runtimeClasspath.lockfile +++ b/services/backend/gradle/dependency-locks/runtimeClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/backend/gradle/dependency-locks/testCompile.lockfile b/services/backend/gradle/dependency-locks/testCompile.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/backend/gradle/dependency-locks/testCompile.lockfile +++ b/services/backend/gradle/dependency-locks/testCompile.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/backend/gradle/dependency-locks/testCompileClasspath.lockfile b/services/backend/gradle/dependency-locks/testCompileClasspath.lockfile index d6545f467..083cc4248 100644 --- a/services/backend/gradle/dependency-locks/testCompileClasspath.lockfile +++ b/services/backend/gradle/dependency-locks/testCompileClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -27,11 +26,11 @@ com.github.jnr:jnr-ffi:2.2.11 com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -84,10 +83,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -102,8 +100,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -115,7 +113,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -123,7 +121,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -133,28 +131,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -210,7 +207,6 @@ io.opencensus:opencensus-exporter-stats-stackdriver:0.31.0 io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -262,7 +258,6 @@ org.checkerframework:checker-qual:3.22.0 org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -278,13 +273,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/backend/gradle/dependency-locks/testRuntime.lockfile b/services/backend/gradle/dependency-locks/testRuntime.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/backend/gradle/dependency-locks/testRuntime.lockfile +++ b/services/backend/gradle/dependency-locks/testRuntime.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/backend/gradle/dependency-locks/testRuntimeClasspath.lockfile b/services/backend/gradle/dependency-locks/testRuntimeClasspath.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/backend/gradle/dependency-locks/testRuntimeClasspath.lockfile +++ b/services/backend/gradle/dependency-locks/testRuntimeClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/default/gradle/dependency-locks/compile.lockfile b/services/default/gradle/dependency-locks/compile.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/default/gradle/dependency-locks/compile.lockfile +++ b/services/default/gradle/dependency-locks/compile.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/default/gradle/dependency-locks/compileClasspath.lockfile b/services/default/gradle/dependency-locks/compileClasspath.lockfile index d6545f467..083cc4248 100644 --- a/services/default/gradle/dependency-locks/compileClasspath.lockfile +++ b/services/default/gradle/dependency-locks/compileClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -27,11 +26,11 @@ com.github.jnr:jnr-ffi:2.2.11 com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -84,10 +83,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -102,8 +100,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -115,7 +113,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -123,7 +121,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -133,28 +131,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -210,7 +207,6 @@ io.opencensus:opencensus-exporter-stats-stackdriver:0.31.0 io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -262,7 +258,6 @@ org.checkerframework:checker-qual:3.22.0 org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -278,13 +273,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/default/gradle/dependency-locks/default.lockfile b/services/default/gradle/dependency-locks/default.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/default/gradle/dependency-locks/default.lockfile +++ b/services/default/gradle/dependency-locks/default.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/default/gradle/dependency-locks/runtime.lockfile b/services/default/gradle/dependency-locks/runtime.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/default/gradle/dependency-locks/runtime.lockfile +++ b/services/default/gradle/dependency-locks/runtime.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/default/gradle/dependency-locks/runtimeClasspath.lockfile b/services/default/gradle/dependency-locks/runtimeClasspath.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/default/gradle/dependency-locks/runtimeClasspath.lockfile +++ b/services/default/gradle/dependency-locks/runtimeClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/default/gradle/dependency-locks/testCompile.lockfile b/services/default/gradle/dependency-locks/testCompile.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/default/gradle/dependency-locks/testCompile.lockfile +++ b/services/default/gradle/dependency-locks/testCompile.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/default/gradle/dependency-locks/testCompileClasspath.lockfile b/services/default/gradle/dependency-locks/testCompileClasspath.lockfile index d6545f467..083cc4248 100644 --- a/services/default/gradle/dependency-locks/testCompileClasspath.lockfile +++ b/services/default/gradle/dependency-locks/testCompileClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -27,11 +26,11 @@ com.github.jnr:jnr-ffi:2.2.11 com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -84,10 +83,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -102,8 +100,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -115,7 +113,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -123,7 +121,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -133,28 +131,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -210,7 +207,6 @@ io.opencensus:opencensus-exporter-stats-stackdriver:0.31.0 io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -262,7 +258,6 @@ org.checkerframework:checker-qual:3.22.0 org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -278,13 +273,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/default/gradle/dependency-locks/testRuntime.lockfile b/services/default/gradle/dependency-locks/testRuntime.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/default/gradle/dependency-locks/testRuntime.lockfile +++ b/services/default/gradle/dependency-locks/testRuntime.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/default/gradle/dependency-locks/testRuntimeClasspath.lockfile b/services/default/gradle/dependency-locks/testRuntimeClasspath.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/default/gradle/dependency-locks/testRuntimeClasspath.lockfile +++ b/services/default/gradle/dependency-locks/testRuntimeClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/pubapi/gradle/dependency-locks/compile.lockfile b/services/pubapi/gradle/dependency-locks/compile.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/pubapi/gradle/dependency-locks/compile.lockfile +++ b/services/pubapi/gradle/dependency-locks/compile.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/pubapi/gradle/dependency-locks/compileClasspath.lockfile b/services/pubapi/gradle/dependency-locks/compileClasspath.lockfile index d6545f467..083cc4248 100644 --- a/services/pubapi/gradle/dependency-locks/compileClasspath.lockfile +++ b/services/pubapi/gradle/dependency-locks/compileClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -27,11 +26,11 @@ com.github.jnr:jnr-ffi:2.2.11 com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -84,10 +83,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -102,8 +100,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -115,7 +113,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -123,7 +121,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -133,28 +131,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -210,7 +207,6 @@ io.opencensus:opencensus-exporter-stats-stackdriver:0.31.0 io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -262,7 +258,6 @@ org.checkerframework:checker-qual:3.22.0 org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -278,13 +273,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/pubapi/gradle/dependency-locks/default.lockfile b/services/pubapi/gradle/dependency-locks/default.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/pubapi/gradle/dependency-locks/default.lockfile +++ b/services/pubapi/gradle/dependency-locks/default.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/pubapi/gradle/dependency-locks/runtime.lockfile b/services/pubapi/gradle/dependency-locks/runtime.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/pubapi/gradle/dependency-locks/runtime.lockfile +++ b/services/pubapi/gradle/dependency-locks/runtime.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/pubapi/gradle/dependency-locks/runtimeClasspath.lockfile b/services/pubapi/gradle/dependency-locks/runtimeClasspath.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/pubapi/gradle/dependency-locks/runtimeClasspath.lockfile +++ b/services/pubapi/gradle/dependency-locks/runtimeClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/pubapi/gradle/dependency-locks/testCompile.lockfile b/services/pubapi/gradle/dependency-locks/testCompile.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/pubapi/gradle/dependency-locks/testCompile.lockfile +++ b/services/pubapi/gradle/dependency-locks/testCompile.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/pubapi/gradle/dependency-locks/testCompileClasspath.lockfile b/services/pubapi/gradle/dependency-locks/testCompileClasspath.lockfile index d6545f467..083cc4248 100644 --- a/services/pubapi/gradle/dependency-locks/testCompileClasspath.lockfile +++ b/services/pubapi/gradle/dependency-locks/testCompileClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -27,11 +26,11 @@ com.github.jnr:jnr-ffi:2.2.11 com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -84,10 +83,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -102,8 +100,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -115,7 +113,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -123,7 +121,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -133,28 +131,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -210,7 +207,6 @@ io.opencensus:opencensus-exporter-stats-stackdriver:0.31.0 io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -262,7 +258,6 @@ org.checkerframework:checker-qual:3.22.0 org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -278,13 +273,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/pubapi/gradle/dependency-locks/testRuntime.lockfile b/services/pubapi/gradle/dependency-locks/testRuntime.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/pubapi/gradle/dependency-locks/testRuntime.lockfile +++ b/services/pubapi/gradle/dependency-locks/testRuntime.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/pubapi/gradle/dependency-locks/testRuntimeClasspath.lockfile b/services/pubapi/gradle/dependency-locks/testRuntimeClasspath.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/pubapi/gradle/dependency-locks/testRuntimeClasspath.lockfile +++ b/services/pubapi/gradle/dependency-locks/testRuntimeClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/tools/gradle/dependency-locks/compile.lockfile b/services/tools/gradle/dependency-locks/compile.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/tools/gradle/dependency-locks/compile.lockfile +++ b/services/tools/gradle/dependency-locks/compile.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/tools/gradle/dependency-locks/compileClasspath.lockfile b/services/tools/gradle/dependency-locks/compileClasspath.lockfile index d6545f467..083cc4248 100644 --- a/services/tools/gradle/dependency-locks/compileClasspath.lockfile +++ b/services/tools/gradle/dependency-locks/compileClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -27,11 +26,11 @@ com.github.jnr:jnr-ffi:2.2.11 com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -84,10 +83,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -102,8 +100,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -115,7 +113,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -123,7 +121,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -133,28 +131,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -210,7 +207,6 @@ io.opencensus:opencensus-exporter-stats-stackdriver:0.31.0 io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -262,7 +258,6 @@ org.checkerframework:checker-qual:3.22.0 org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -278,13 +273,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/tools/gradle/dependency-locks/default.lockfile b/services/tools/gradle/dependency-locks/default.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/tools/gradle/dependency-locks/default.lockfile +++ b/services/tools/gradle/dependency-locks/default.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/tools/gradle/dependency-locks/runtime.lockfile b/services/tools/gradle/dependency-locks/runtime.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/tools/gradle/dependency-locks/runtime.lockfile +++ b/services/tools/gradle/dependency-locks/runtime.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/tools/gradle/dependency-locks/runtimeClasspath.lockfile b/services/tools/gradle/dependency-locks/runtimeClasspath.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/tools/gradle/dependency-locks/runtimeClasspath.lockfile +++ b/services/tools/gradle/dependency-locks/runtimeClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/tools/gradle/dependency-locks/testCompile.lockfile b/services/tools/gradle/dependency-locks/testCompile.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/tools/gradle/dependency-locks/testCompile.lockfile +++ b/services/tools/gradle/dependency-locks/testCompile.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/tools/gradle/dependency-locks/testCompileClasspath.lockfile b/services/tools/gradle/dependency-locks/testCompileClasspath.lockfile index d6545f467..083cc4248 100644 --- a/services/tools/gradle/dependency-locks/testCompileClasspath.lockfile +++ b/services/tools/gradle/dependency-locks/testCompileClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -27,11 +26,11 @@ com.github.jnr:jnr-ffi:2.2.11 com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -84,10 +83,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -102,8 +100,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -115,7 +113,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -123,7 +121,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -133,28 +131,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -210,7 +207,6 @@ io.opencensus:opencensus-exporter-stats-stackdriver:0.31.0 io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -262,7 +258,6 @@ org.checkerframework:checker-qual:3.22.0 org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -278,13 +273,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/tools/gradle/dependency-locks/testRuntime.lockfile b/services/tools/gradle/dependency-locks/testRuntime.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/tools/gradle/dependency-locks/testRuntime.lockfile +++ b/services/tools/gradle/dependency-locks/testRuntime.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/services/tools/gradle/dependency-locks/testRuntimeClasspath.lockfile b/services/tools/gradle/dependency-locks/testRuntimeClasspath.lockfile index 9d98df2a2..d9f5e5616 100644 --- a/services/tools/gradle/dependency-locks/testRuntimeClasspath.lockfile +++ b/services/tools/gradle/dependency-locks/testRuntimeClasspath.lockfile @@ -4,7 +4,6 @@ antlr:antlr:2.7.7 aopalliance:aopalliance:1.0 args4j:args4j:2.0.23 -cglib:cglib-nodep:2.2 com.101tec:zkclient:0.10 com.beust:jcommander:1.60 com.fasterxml.jackson.core:jackson-annotations:2.13.3 @@ -28,11 +27,11 @@ com.github.jnr:jnr-posix:3.1.15 com.github.jnr:jnr-unixsocket:0.38.17 com.github.jnr:jnr-x86asm:1.0.2 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client-appengine:1.35.1 +com.google.api-client:google-api-client-appengine:1.35.0 com.google.api-client:google-api-client-jackson2:1.32.2 -com.google.api-client:google-api-client-java6:1.35.1 -com.google.api-client:google-api-client-servlet:1.35.1 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client-java6:1.35.0 +com.google.api-client:google-api-client-servlet:1.35.0 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.10.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.134.0 com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.134.0 @@ -85,10 +84,9 @@ com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1 com.google.apis:google-api-services-monitoring:v3-rev20220525-1.32.1 com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1 com.google.apis:google-api-services-sheets:v4-rev20220411-1.32.1 -com.google.apis:google-api-services-sqladmin:v1beta4-rev20220513-1.32.1 -com.google.apis:google-api-services-storage:v1-rev20220604-1.32.1 +com.google.apis:google-api-services-sqladmin:v1beta4-rev20220323-1.32.1 +com.google.apis:google-api-services-storage:v1-rev20220509-1.32.1 com.google.appengine.tools:appengine-gcs-client:0.8.1 -com.google.appengine.tools:appengine-mapreduce:0.9 com.google.appengine.tools:appengine-pipeline:0.2.13 com.google.appengine:appengine-api-1.0-sdk:2.0.5 com.google.appengine:appengine-remote-api:2.0.5 @@ -103,8 +101,8 @@ com.google.cloud.bigdataoss:util:2.2.6 com.google.cloud.bigtable:bigtable-client-core:1.26.3 com.google.cloud.bigtable:bigtable-metrics-api:1.26.3 com.google.cloud.datastore:datastore-v1-proto-client:2.1.3 -com.google.cloud.sql:jdbc-socket-factory-core:1.6.1 -com.google.cloud.sql:postgres-socket-factory:1.6.1 +com.google.cloud.sql:jdbc-socket-factory-core:1.6.0 +com.google.cloud.sql:postgres-socket-factory:1.6.0 com.google.cloud:google-cloud-bigquerystorage:2.10.0 com.google.cloud:google-cloud-bigtable:2.5.3 com.google.cloud:google-cloud-core-grpc:2.4.0 @@ -116,7 +114,7 @@ com.google.cloud:google-cloud-pubsub:1.116.0 com.google.cloud:google-cloud-pubsublite:1.5.0 com.google.cloud:google-cloud-secretmanager:2.2.0 com.google.cloud:google-cloud-spanner:6.20.0 -com.google.cloud:google-cloud-storage:2.8.0 +com.google.cloud:google-cloud-storage:2.7.2 com.google.cloud:google-cloud-tasks:2.2.0 com.google.cloud:grpc-gcp:1.1.0 com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.14 @@ -124,7 +122,7 @@ com.google.code.findbugs:jsr305:3.0.2 com.google.code.gson:gson:2.9.0 com.google.common.html.types:types:1.0.6 com.google.dagger:dagger:2.42 -com.google.errorprone:error_prone_annotations:2.14.0 +com.google.errorprone:error_prone_annotations:2.13.1 com.google.escapevelocity:escapevelocity:0.9.1 com.google.flatbuffers:flatbuffers-java:1.12.0 com.google.flogger:flogger-system-backend:0.7.4 @@ -134,28 +132,27 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava com.google.gwt:gwt-user:2.9.0 -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-appengine:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-appengine:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 com.google.http-client:google-http-client-jackson2:1.41.8 com.google.http-client:google-http-client-protobuf:1.40.1 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client:1.41.8 com.google.inject.extensions:guice-multibindings:4.1.0 com.google.inject:guice:4.1.0 com.google.j2objc:j2objc-annotations:1.3 com.google.jsinterop:jsinterop-annotations:2.0.0 com.google.monitoring-client:metrics:1.0.7 com.google.monitoring-client:stackdriver:1.0.7 -com.google.oauth-client:google-oauth-client-appengine:1.34.1 -com.google.oauth-client:google-oauth-client-java6:1.34.1 -com.google.oauth-client:google-oauth-client-jetty:1.34.1 -com.google.oauth-client:google-oauth-client-servlet:1.34.1 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client-appengine:1.34.0 +com.google.oauth-client:google-oauth-client-java6:1.34.0 +com.google.oauth-client:google-oauth-client-jetty:1.34.0 +com.google.oauth-client:google-oauth-client-servlet:1.34.0 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 com.google.template:soy:2021-02-01 -com.googlecode.charts4j:charts4j:1.3 com.googlecode.json-simple:json-simple:1.1.1 com.ibm.icu:icu4j:71.1 com.jcraft:jsch:0.1.55 @@ -219,7 +216,6 @@ io.opencensus:opencensus-impl-core:0.31.0 io.opencensus:opencensus-impl:0.31.0 io.opencensus:opencensus-proto:0.2.0 io.perfmark:perfmark-api:0.25.0 -it.unimi.dsi:fastutil:6.5.16 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 @@ -272,7 +268,6 @@ org.codehaus.jackson:jackson-core-asl:1.9.13 org.codehaus.jackson:jackson-mapper-asl:1.9.13 org.codehaus.mojo:animal-sniffer-annotations:1.21 org.conscrypt:conscrypt-openjdk-uber:2.5.1 -org.easymock:easymock:3.0 org.flywaydb:flyway-core:8.5.12 org.glassfish.jaxb:jaxb-runtime:2.3.1 org.glassfish.jaxb:txw2:2.3.1 @@ -288,13 +283,12 @@ org.joda:joda-money:1.0.1 org.json:json:20200518 org.jsoup:jsoup:1.15.1 org.jvnet.staxex:stax-ex:1.8 -org.objenesis:objenesis:1.2 org.ow2.asm:asm-analysis:9.3 org.ow2.asm:asm-commons:9.2 org.ow2.asm:asm-tree:9.3 org.ow2.asm:asm-util:9.3 org.ow2.asm:asm:9.3 -org.postgresql:postgresql:42.4.0 +org.postgresql:postgresql:42.3.6 org.rnorth.duct-tape:duct-tape:1.0.8 org.slf4j:jcl-over-slf4j:1.7.30 org.slf4j:jul-to-slf4j:1.7.30 diff --git a/util/gradle/dependency-locks/compile.lockfile b/util/gradle/dependency-locks/compile.lockfile index c0a87f0f7..053032863 100644 --- a/util/gradle/dependency-locks/compile.lockfile +++ b/util/gradle/dependency-locks/compile.lockfile @@ -3,7 +3,7 @@ # This file is expected to be part of source control. com.github.ben-manes.caffeine:caffeine:2.9.3 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -26,11 +26,11 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 diff --git a/util/gradle/dependency-locks/compileClasspath.lockfile b/util/gradle/dependency-locks/compileClasspath.lockfile index dd7ee4c33..a9ebc0297 100644 --- a/util/gradle/dependency-locks/compileClasspath.lockfile +++ b/util/gradle/dependency-locks/compileClasspath.lockfile @@ -2,7 +2,7 @@ # Manual edits can break the build and are not advised. # This file is expected to be part of source control. com.github.ben-manes.caffeine:caffeine:2.9.3 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -25,11 +25,11 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:4.0.0-rc-2 com.google.protobuf:protobuf-java:4.0.0-rc-2 com.google.re2j:re2j:1.6 @@ -41,8 +41,8 @@ io.grpc:grpc-context:1.46.0 io.grpc:grpc-protobuf-lite:1.46.0 io.grpc:grpc-protobuf:1.46.0 io.grpc:grpc-stub:1.46.0 -io.opencensus:opencensus-api:0.31.1 -io.opencensus:opencensus-contrib-http-util:0.31.1 +io.opencensus:opencensus-api:0.31.0 +io.opencensus:opencensus-contrib-http-util:0.31.0 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 diff --git a/util/gradle/dependency-locks/default.lockfile b/util/gradle/dependency-locks/default.lockfile index 5bf1bdc9a..23ed05627 100644 --- a/util/gradle/dependency-locks/default.lockfile +++ b/util/gradle/dependency-locks/default.lockfile @@ -3,7 +3,7 @@ # This file is expected to be part of source control. com.github.ben-manes.caffeine:caffeine:2.9.3 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -27,11 +27,11 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 diff --git a/util/gradle/dependency-locks/deploy_jar.lockfile b/util/gradle/dependency-locks/deploy_jar.lockfile index 5bf1bdc9a..23ed05627 100644 --- a/util/gradle/dependency-locks/deploy_jar.lockfile +++ b/util/gradle/dependency-locks/deploy_jar.lockfile @@ -3,7 +3,7 @@ # This file is expected to be part of source control. com.github.ben-manes.caffeine:caffeine:2.9.3 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -27,11 +27,11 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 diff --git a/util/gradle/dependency-locks/runtime.lockfile b/util/gradle/dependency-locks/runtime.lockfile index 5bf1bdc9a..23ed05627 100644 --- a/util/gradle/dependency-locks/runtime.lockfile +++ b/util/gradle/dependency-locks/runtime.lockfile @@ -3,7 +3,7 @@ # This file is expected to be part of source control. com.github.ben-manes.caffeine:caffeine:2.9.3 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -27,11 +27,11 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 diff --git a/util/gradle/dependency-locks/runtimeClasspath.lockfile b/util/gradle/dependency-locks/runtimeClasspath.lockfile index 5bf1bdc9a..23ed05627 100644 --- a/util/gradle/dependency-locks/runtimeClasspath.lockfile +++ b/util/gradle/dependency-locks/runtimeClasspath.lockfile @@ -3,7 +3,7 @@ # This file is expected to be part of source control. com.github.ben-manes.caffeine:caffeine:2.9.3 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -27,11 +27,11 @@ com.google.flogger:flogger:0.7.4 com.google.guava:failureaccess:1.0.1 com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 diff --git a/util/gradle/dependency-locks/testCompile.lockfile b/util/gradle/dependency-locks/testCompile.lockfile index 4c603aaf3..62b03520b 100644 --- a/util/gradle/dependency-locks/testCompile.lockfile +++ b/util/gradle/dependency-locks/testCompile.lockfile @@ -7,7 +7,7 @@ com.github.docker-java:docker-java-api:3.2.13 com.github.docker-java:docker-java-transport-zerodep:3.2.13 com.github.docker-java:docker-java-transport:3.2.13 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -32,11 +32,11 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava-testlib:31.1-jre com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 diff --git a/util/gradle/dependency-locks/testCompileClasspath.lockfile b/util/gradle/dependency-locks/testCompileClasspath.lockfile index f68d7d0a4..1571db489 100644 --- a/util/gradle/dependency-locks/testCompileClasspath.lockfile +++ b/util/gradle/dependency-locks/testCompileClasspath.lockfile @@ -6,7 +6,7 @@ com.github.ben-manes.caffeine:caffeine:2.9.3 com.github.docker-java:docker-java-api:3.2.13 com.github.docker-java:docker-java-transport-zerodep:3.2.13 com.github.docker-java:docker-java-transport:3.2.13 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -31,11 +31,11 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava-testlib:31.1-jre com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:4.0.0-rc-2 com.google.protobuf:protobuf-java:4.0.0-rc-2 com.google.re2j:re2j:1.6 @@ -48,8 +48,8 @@ io.grpc:grpc-context:1.46.0 io.grpc:grpc-protobuf-lite:1.46.0 io.grpc:grpc-protobuf:1.46.0 io.grpc:grpc-stub:1.46.0 -io.opencensus:opencensus-api:0.31.1 -io.opencensus:opencensus-contrib-http-util:0.31.1 +io.opencensus:opencensus-api:0.31.0 +io.opencensus:opencensus-contrib-http-util:0.31.0 javax.activation:activation:1.1 javax.activation:javax.activation-api:1.2.0 javax.annotation:javax.annotation-api:1.3.2 diff --git a/util/gradle/dependency-locks/testRuntime.lockfile b/util/gradle/dependency-locks/testRuntime.lockfile index 106827a74..9b10017a5 100644 --- a/util/gradle/dependency-locks/testRuntime.lockfile +++ b/util/gradle/dependency-locks/testRuntime.lockfile @@ -7,7 +7,7 @@ com.github.docker-java:docker-java-api:3.2.13 com.github.docker-java:docker-java-transport-zerodep:3.2.13 com.github.docker-java:docker-java-transport:3.2.13 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -34,11 +34,11 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava-testlib:31.1-jre com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6 diff --git a/util/gradle/dependency-locks/testRuntimeClasspath.lockfile b/util/gradle/dependency-locks/testRuntimeClasspath.lockfile index 106827a74..9b10017a5 100644 --- a/util/gradle/dependency-locks/testRuntimeClasspath.lockfile +++ b/util/gradle/dependency-locks/testRuntimeClasspath.lockfile @@ -7,7 +7,7 @@ com.github.docker-java:docker-java-api:3.2.13 com.github.docker-java:docker-java-transport-zerodep:3.2.13 com.github.docker-java:docker-java-transport:3.2.13 com.google.android:annotations:4.1.1.4 -com.google.api-client:google-api-client:1.35.1 +com.google.api-client:google-api-client:1.35.0 com.google.api.grpc:proto-google-cloud-tasks-v2:2.2.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.92.0 com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.92.0 @@ -34,11 +34,11 @@ com.google.guava:failureaccess:1.0.1 com.google.guava:guava-testlib:31.1-jre com.google.guava:guava:31.1-jre com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava -com.google.http-client:google-http-client-apache-v2:1.42.0 -com.google.http-client:google-http-client-gson:1.42.0 -com.google.http-client:google-http-client:1.42.0 +com.google.http-client:google-http-client-apache-v2:1.41.8 +com.google.http-client:google-http-client-gson:1.41.8 +com.google.http-client:google-http-client:1.41.8 com.google.j2objc:j2objc-annotations:1.3 -com.google.oauth-client:google-oauth-client:1.34.1 +com.google.oauth-client:google-oauth-client:1.34.0 com.google.protobuf:protobuf-java-util:3.20.1 com.google.protobuf:protobuf-java:3.20.1 com.google.re2j:re2j:1.6