mirror of
https://github.com/google/nomulus
synced 2026-01-24 14:42:17 +00:00
Compare commits
102 Commits
nomulus-20
...
nomulus-20
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5d82893478 | ||
|
|
d0af81ecdf | ||
|
|
f273783894 | ||
|
|
0dfabe1c64 | ||
|
|
60a011c593 | ||
|
|
7716eebfff | ||
|
|
1e76eeed37 | ||
|
|
147d133aef | ||
|
|
c2e1f2e640 | ||
|
|
5d2639834a | ||
|
|
7912576e3d | ||
|
|
8424c85258 | ||
|
|
e72dd73ed8 | ||
|
|
508d221b94 | ||
|
|
073d0a416a | ||
|
|
f2ead5a0e3 | ||
|
|
212dbbe520 | ||
|
|
8594a61fd4 | ||
|
|
36837eb3e6 | ||
|
|
3a9a8c6557 | ||
|
|
65c2570b8f | ||
|
|
86acaa1b31 | ||
|
|
436cc03be9 | ||
|
|
e110ddd412 | ||
|
|
214b23e99c | ||
|
|
743dea9ca2 | ||
|
|
41f9f1ef7d | ||
|
|
44ede2b022 | ||
|
|
e4312322dc | ||
|
|
24dfaf6406 | ||
|
|
7afb8fa343 | ||
|
|
02b3f7b505 | ||
|
|
25342aa480 | ||
|
|
3ef1e6c6a4 | ||
|
|
9363b30b3e | ||
|
|
342f7d72a2 | ||
|
|
3592877210 | ||
|
|
3006ca39ca | ||
|
|
63adfa77ed | ||
|
|
fd5e5bf6f1 | ||
|
|
2495167215 | ||
|
|
0c6f399533 | ||
|
|
075ea23f1d | ||
|
|
3c19d4cbf6 | ||
|
|
ea4d60c830 | ||
|
|
c24e0053c8 | ||
|
|
537a6e4466 | ||
|
|
6c20d39a2d | ||
|
|
60c156c061 | ||
|
|
742ad0b37c | ||
|
|
6dd6ebce75 | ||
|
|
767e3935af | ||
|
|
86aa420773 | ||
|
|
61b38569e2 | ||
|
|
4bfa19a90c | ||
|
|
a001df6d7a | ||
|
|
6caf7819ed | ||
|
|
757803e985 | ||
|
|
4b1f4f96e3 | ||
|
|
bd49e8b238 | ||
|
|
6249a8e118 | ||
|
|
9b7bb12cd1 | ||
|
|
71d13bab71 | ||
|
|
8db28b7e61 | ||
|
|
5a7dc307c5 | ||
|
|
67278af3cb | ||
|
|
1eafc983ab | ||
|
|
f1bbdc5a0b | ||
|
|
b146301495 | ||
|
|
437a747eae | ||
|
|
a620b37c80 | ||
|
|
267cbeb95b | ||
|
|
b9fcabbc36 | ||
|
|
4f33de10f3 | ||
|
|
d6bb83f6d3 | ||
|
|
a8d3d22c5a | ||
|
|
fac659b520 | ||
|
|
178702ded3 | ||
|
|
59bca1a9ed | ||
|
|
f8198fa590 | ||
|
|
bbac81996b | ||
|
|
52c759d1db | ||
|
|
453af87615 | ||
|
|
d0d7515c0a | ||
|
|
2c70127573 | ||
|
|
d3fc6063c9 | ||
|
|
82802ec85c | ||
|
|
e53594a626 | ||
|
|
e6577e3f23 | ||
|
|
c9da36be9f | ||
|
|
2ccae00dae | ||
|
|
00c8b6a76d | ||
|
|
09dca28122 | ||
|
|
b412bdef9f | ||
|
|
62e5de8a3a | ||
|
|
fa9b784c5c | ||
|
|
e2bd72a74e | ||
|
|
28d41488b1 | ||
|
|
1107b9f2e3 | ||
|
|
9624b483d4 | ||
|
|
365937f22d | ||
|
|
d5db6c16bc |
@@ -36,3 +36,4 @@ Shicong Huang <shicong@google.com>
|
||||
Gustav Brodman <gbrodman@google.com>
|
||||
Sarah Botwinick <sarahbot@google.com>
|
||||
Legina Chen <legina@google.com>
|
||||
Rachel Guan <rachelguan@google.com>
|
||||
|
||||
@@ -55,7 +55,7 @@ plugins {
|
||||
|
||||
node {
|
||||
download = true
|
||||
version = "14.15.5"
|
||||
version = "16.14.0"
|
||||
npmVersion = "6.14.11"
|
||||
}
|
||||
|
||||
@@ -331,6 +331,13 @@ subprojects {
|
||||
|
||||
apply from: "${rootDir.path}/java_common.gradle"
|
||||
|
||||
if (project.name != 'docs') {
|
||||
compileJava {
|
||||
// TODO: Remove this once we migrate off AppEngine.
|
||||
options.release = 8
|
||||
}
|
||||
}
|
||||
|
||||
if (project.name == 'third_party') return
|
||||
|
||||
project.tasks.test.dependsOn runPresubmits
|
||||
|
||||
@@ -51,6 +51,7 @@ artifacts {
|
||||
dependencies {
|
||||
def deps = rootProject.dependencyMap
|
||||
|
||||
compile deps['com.github.ben-manes.caffeine:caffeine']
|
||||
compile deps['com.google.code.findbugs:jsr305']
|
||||
compile deps['com.google.guava:guava']
|
||||
compile deps['javax.inject:javax.inject']
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
# This is a Gradle generated file for dependency locking.
|
||||
# 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.code.findbugs:jsr305:3.0.2
|
||||
com.google.errorprone:error_prone_annotations:2.5.1
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.1.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
javax.inject:javax.inject:1
|
||||
joda-time:joda-time:2.9.2
|
||||
org.checkerframework:checker-qual:3.8.0
|
||||
org.checkerframework:checker-qual:3.19.0
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
# This is a Gradle generated file for dependency locking.
|
||||
# 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.code.findbugs:jsr305:3.0.2
|
||||
com.google.errorprone:error_prone_annotations:2.5.1
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.1.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
javax.inject:javax.inject:1
|
||||
joda-time:joda-time:2.9.2
|
||||
org.checkerframework:checker-qual:3.8.0
|
||||
org.checkerframework:checker-qual:3.19.0
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
# This is a Gradle generated file for dependency locking.
|
||||
# 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.code.findbugs:jsr305:3.0.2
|
||||
com.google.errorprone:error_prone_annotations:2.5.1
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.1.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
javax.inject:javax.inject:1
|
||||
joda-time:joda-time:2.9.2
|
||||
org.checkerframework:checker-qual:3.8.0
|
||||
org.checkerframework:checker-qual:3.19.0
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
# This is a Gradle generated file for dependency locking.
|
||||
# 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.code.findbugs:jsr305:3.0.2
|
||||
com.google.errorprone:error_prone_annotations:2.5.1
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.1.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
javax.inject:javax.inject:1
|
||||
joda-time:joda-time:2.9.2
|
||||
org.checkerframework:checker-qual:3.8.0
|
||||
org.checkerframework:checker-qual:3.19.0
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
# This is a Gradle generated file for dependency locking.
|
||||
# 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.code.findbugs:jsr305:3.0.2
|
||||
com.google.errorprone:error_prone_annotations:2.5.1
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.1.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
javax.inject:javax.inject:1
|
||||
joda-time:joda-time:2.9.2
|
||||
org.checkerframework:checker-qual:3.8.0
|
||||
org.checkerframework:checker-qual:3.19.0
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
# This is a Gradle generated file for dependency locking.
|
||||
# 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.code.findbugs:jsr305:3.0.2
|
||||
com.google.errorprone:error_prone_annotations:2.5.1
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.1.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
javax.inject:javax.inject:1
|
||||
joda-time:joda-time:2.9.2
|
||||
org.checkerframework:checker-qual:3.8.0
|
||||
org.checkerframework:checker-qual:3.19.0
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
# This is a Gradle generated file for dependency locking.
|
||||
# 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.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.errorprone:error_prone_annotations:2.5.1
|
||||
com.google.flogger:flogger:0.7.3
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
com.google.flogger:flogger:0.7.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.1.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
@@ -16,7 +17,7 @@ joda-time:joda-time:2.9.2
|
||||
junit:junit:4.13.1
|
||||
org.apiguardian:apiguardian-api:1.1.0
|
||||
org.checkerframework:checker-compat-qual:2.5.3
|
||||
org.checkerframework:checker-qual:3.9.1
|
||||
org.checkerframework:checker-qual:3.19.0
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.junit.jupiter:junit-jupiter-api:5.6.2
|
||||
org.junit.jupiter:junit-jupiter-engine:5.6.2
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
# This is a Gradle generated file for dependency locking.
|
||||
# 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.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.errorprone:error_prone_annotations:2.5.1
|
||||
com.google.flogger:flogger:0.7.3
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
com.google.flogger:flogger:0.7.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.1.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
@@ -16,7 +17,7 @@ joda-time:joda-time:2.9.2
|
||||
junit:junit:4.13.1
|
||||
org.apiguardian:apiguardian-api:1.1.0
|
||||
org.checkerframework:checker-compat-qual:2.5.3
|
||||
org.checkerframework:checker-qual:3.9.1
|
||||
org.checkerframework:checker-qual:3.19.0
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.junit.jupiter:junit-jupiter-api:5.6.2
|
||||
org.junit.jupiter:junit-jupiter-engine:5.6.2
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
# This is a Gradle generated file for dependency locking.
|
||||
# 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.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.errorprone:error_prone_annotations:2.5.1
|
||||
com.google.flogger:flogger-system-backend:0.7.3
|
||||
com.google.flogger:flogger:0.7.3
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
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:30.1.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
@@ -17,7 +18,7 @@ joda-time:joda-time:2.9.2
|
||||
junit:junit:4.13.1
|
||||
org.apiguardian:apiguardian-api:1.1.0
|
||||
org.checkerframework:checker-compat-qual:2.5.3
|
||||
org.checkerframework:checker-qual:3.9.1
|
||||
org.checkerframework:checker-qual:3.19.0
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.junit.jupiter:junit-jupiter-api:5.6.2
|
||||
org.junit.jupiter:junit-jupiter-engine:5.6.2
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
# This is a Gradle generated file for dependency locking.
|
||||
# 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.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.errorprone:error_prone_annotations:2.5.1
|
||||
com.google.flogger:flogger-system-backend:0.7.3
|
||||
com.google.flogger:flogger:0.7.3
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
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:30.1.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
@@ -17,7 +18,7 @@ joda-time:joda-time:2.9.2
|
||||
junit:junit:4.13.1
|
||||
org.apiguardian:apiguardian-api:1.1.0
|
||||
org.checkerframework:checker-compat-qual:2.5.3
|
||||
org.checkerframework:checker-qual:3.9.1
|
||||
org.checkerframework:checker-qual:3.19.0
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.junit.jupiter:junit-jupiter-api:5.6.2
|
||||
org.junit.jupiter:junit-jupiter-engine:5.6.2
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
# This is a Gradle generated file for dependency locking.
|
||||
# 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.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.errorprone:error_prone_annotations:2.5.1
|
||||
com.google.flogger:flogger:0.7.3
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
com.google.flogger:flogger:0.7.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.1.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
@@ -15,6 +16,6 @@ javax.inject:javax.inject:1
|
||||
joda-time:joda-time:2.9.2
|
||||
junit:junit:4.13.1
|
||||
org.checkerframework:checker-compat-qual:2.5.3
|
||||
org.checkerframework:checker-qual:3.9.1
|
||||
org.checkerframework:checker-qual:3.19.0
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.ow2.asm:asm:9.0
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
# This is a Gradle generated file for dependency locking.
|
||||
# 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.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.errorprone:error_prone_annotations:2.5.1
|
||||
com.google.flogger:flogger:0.7.3
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
com.google.flogger:flogger:0.7.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.1.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
@@ -15,6 +16,6 @@ javax.inject:javax.inject:1
|
||||
joda-time:joda-time:2.9.2
|
||||
junit:junit:4.13.1
|
||||
org.checkerframework:checker-compat-qual:2.5.3
|
||||
org.checkerframework:checker-qual:3.9.1
|
||||
org.checkerframework:checker-qual:3.19.0
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.ow2.asm:asm:9.0
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
# This is a Gradle generated file for dependency locking.
|
||||
# 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.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.errorprone:error_prone_annotations:2.5.1
|
||||
com.google.flogger:flogger-system-backend:0.7.3
|
||||
com.google.flogger:flogger:0.7.3
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
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:30.1.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
@@ -16,6 +17,6 @@ javax.inject:javax.inject:1
|
||||
joda-time:joda-time:2.9.2
|
||||
junit:junit:4.13.1
|
||||
org.checkerframework:checker-compat-qual:2.5.3
|
||||
org.checkerframework:checker-qual:3.9.1
|
||||
org.checkerframework:checker-qual:3.19.0
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.ow2.asm:asm:9.0
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
# This is a Gradle generated file for dependency locking.
|
||||
# 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.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.errorprone:error_prone_annotations:2.5.1
|
||||
com.google.flogger:flogger-system-backend:0.7.3
|
||||
com.google.flogger:flogger:0.7.3
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
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:30.1.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
@@ -16,6 +17,6 @@ javax.inject:javax.inject:1
|
||||
joda-time:joda-time:2.9.2
|
||||
junit:junit:4.13.1
|
||||
org.checkerframework:checker-compat-qual:2.5.3
|
||||
org.checkerframework:checker-qual:3.9.1
|
||||
org.checkerframework:checker-qual:3.19.0
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.ow2.asm:asm:9.0
|
||||
|
||||
@@ -41,4 +41,20 @@ public interface Sleeper {
|
||||
* @see com.google.common.util.concurrent.Uninterruptibles#sleepUninterruptibly
|
||||
*/
|
||||
void sleepUninterruptibly(ReadableDuration duration);
|
||||
|
||||
/**
|
||||
* Puts the current thread to interruptible sleep.
|
||||
*
|
||||
* <p>This is a convenience method for {@link #sleep} that properly converts an {@link
|
||||
* InterruptedException} to a {@link RuntimeException}.
|
||||
*/
|
||||
default void sleepInterruptibly(ReadableDuration duration) {
|
||||
try {
|
||||
sleep(duration);
|
||||
} catch (InterruptedException e) {
|
||||
// Restore current thread's interrupted state.
|
||||
Thread.currentThread().interrupt();
|
||||
throw new RuntimeException("Interrupted.", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,9 +14,9 @@
|
||||
|
||||
package google.registry.testing;
|
||||
|
||||
import com.google.common.cache.CacheBuilder;
|
||||
import com.google.common.cache.CacheLoader;
|
||||
import com.google.common.cache.LoadingCache;
|
||||
import com.github.benmanes.caffeine.cache.CacheLoader;
|
||||
import com.github.benmanes.caffeine.cache.Caffeine;
|
||||
import com.github.benmanes.caffeine.cache.LoadingCache;
|
||||
import com.google.common.flogger.FluentLogger;
|
||||
import java.io.IOException;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
@@ -29,7 +29,7 @@ public final class SystemInfo {
|
||||
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
|
||||
|
||||
private static final LoadingCache<String, Boolean> hasCommandCache =
|
||||
CacheBuilder.newBuilder()
|
||||
Caffeine.newBuilder()
|
||||
.build(
|
||||
new CacheLoader<String, Boolean>() {
|
||||
@Override
|
||||
|
||||
@@ -172,6 +172,7 @@ dependencies {
|
||||
testRuntime files(sourceSets.test.resources.srcDirs)
|
||||
|
||||
compile deps['com.beust:jcommander']
|
||||
compile deps['com.github.ben-manes.caffeine:caffeine']
|
||||
compile deps['com.google.api:gax']
|
||||
compile deps['com.google.api.grpc:proto-google-cloud-datastore-v1']
|
||||
compile deps['com.google.api.grpc:proto-google-common-protos']
|
||||
@@ -319,6 +320,7 @@ dependencies {
|
||||
testCompile deps['com.google.appengine:appengine-testing']
|
||||
testCompile deps['com.google.guava:guava-testlib']
|
||||
testCompile deps['com.google.monitoring-client:contrib']
|
||||
testCompile deps['com.google.protobuf:protobuf-java-util']
|
||||
testCompile deps['com.google.truth:truth']
|
||||
testCompile deps['com.google.truth.extensions:truth-java8-extension']
|
||||
testCompile deps['org.checkerframework:checker-qual']
|
||||
@@ -706,10 +708,7 @@ createToolTask(
|
||||
'initSqlPipeline', 'google.registry.beam.initsql.InitSqlPipeline')
|
||||
|
||||
createToolTask(
|
||||
'validateSqlPipeline', 'google.registry.beam.comparedb.ValidateSqlPipeline')
|
||||
|
||||
createToolTask(
|
||||
'validateDatastorePipeline', 'google.registry.beam.comparedb.ValidateDatastorePipeline')
|
||||
'validateDatabasePipeline', 'google.registry.beam.comparedb.ValidateDatabasePipeline')
|
||||
|
||||
|
||||
createToolTask(
|
||||
@@ -796,15 +795,15 @@ if (environment == 'alpha') {
|
||||
mainClass: 'google.registry.beam.rde.RdePipeline',
|
||||
metaData : 'google/registry/beam/rde_pipeline_metadata.json'
|
||||
],
|
||||
validateDatastore :
|
||||
validateDatabase :
|
||||
[
|
||||
mainClass: 'google.registry.beam.comparedb.ValidateDatastorePipeline',
|
||||
metaData: 'google/registry/beam/validate_datastore_pipeline_metadata.json'
|
||||
mainClass: 'google.registry.beam.comparedb.ValidateDatabasePipeline',
|
||||
metaData: 'google/registry/beam/validate_database_pipeline_metadata.json'
|
||||
],
|
||||
validateSql :
|
||||
resaveAllEppResources:
|
||||
[
|
||||
mainClass: 'google.registry.beam.comparedb.ValidateSqlPipeline',
|
||||
metaData: 'google/registry/beam/validate_sql_pipeline_metadata.json'
|
||||
mainClass: 'google.registry.beam.resave.ResaveAllEppResourcesPipeline',
|
||||
metaData: 'google/registry/beam/resave_all_epp_resources_pipeline_metadata.json'
|
||||
],
|
||||
]
|
||||
project.tasks.create("stageBeamPipelines") {
|
||||
|
||||
@@ -7,12 +7,13 @@ 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.12.4
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.4
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.12.4
|
||||
com.fasterxml.jackson:jackson-bom:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-core:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-databind:2.13.0
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.13.0
|
||||
com.fasterxml.jackson:jackson-bom:2.13.0
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.ben-manes.caffeine:caffeine:2.9.3
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
com.github.docker-java:docker-java-transport:3.2.7
|
||||
@@ -26,113 +27,114 @@ com.github.jnr:jnr-unixsocket:0.38.5
|
||||
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.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.32.2
|
||||
com.google.api-client:google-api-client-java6:1.31.3
|
||||
com.google.api-client:google-api-client-servlet:1.31.3
|
||||
com.google.api-client:google-api-client:1.32.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api-client:google-api-client:1.32.2
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-common-protos:2.3.2
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.91.3
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:grpc-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.93.2
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.10
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2:1.33.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.89.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.89.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.5.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.1.0
|
||||
com.google.api:api-common:2.0.2
|
||||
com.google.api:gax-grpc:2.4.1
|
||||
com.google.api:gax-httpjson:0.88.0
|
||||
com.google.api:gax:2.4.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.2.0
|
||||
com.google.api:api-common:2.1.2
|
||||
com.google.api:gax-grpc:2.8.1
|
||||
com.google.api:gax-httpjson:0.93.1
|
||||
com.google.api:gax:2.8.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev118-1.25.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev130-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20211129-1.32.1
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev108-1.25.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20210815-1.32.1
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20211017-1.32.1
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20210818-1.32.1
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev99-1.25.0
|
||||
com.google.apis:google-api-services-drive:v2-rev393-1.25.0
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev82-1.25.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20210806-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.31.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20211016-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1
|
||||
com.google.apis:google-api-services-monitoring:v3-rev540-1.25.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20210809-1.32.1
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1
|
||||
com.google.apis:google-api-services-sheets:v4-rev612-1.25.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20210119-1.31.0
|
||||
com.google.apis:google-api-services-storage:v1-rev20210127-1.32.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20211201-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:1.9.86
|
||||
com.google.appengine:appengine-remote-api:1.9.86
|
||||
com.google.appengine:appengine-testing:1.9.86
|
||||
com.google.auth:google-auth-library-credentials:1.1.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.1.0
|
||||
com.google.auth:google-auth-library-credentials:1.3.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.3.0
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.8.2
|
||||
com.google.auto.value:auto-value-annotations:1.9
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.2
|
||||
com.google.cloud.bigdataoss:util:2.2.2
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.23.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.23.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.4
|
||||
com.google.cloud.bigdataoss:util:2.2.4
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.25.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.25.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:2.1.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.2.1
|
||||
com.google.cloud:google-cloud-bigquery:2.1.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.1.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.8.1
|
||||
com.google.cloud:google-cloud-bigtable:1.27.1
|
||||
com.google.cloud:google-cloud-core-grpc:2.1.0
|
||||
com.google.cloud:google-cloud-core-http:2.1.0
|
||||
com.google.cloud:google-cloud-core:2.1.0
|
||||
com.google.cloud:google-cloud-firestore:3.0.2
|
||||
com.google.cloud:google-cloud-pubsub:1.114.2
|
||||
com.google.cloud:google-cloud-pubsublite:1.2.0
|
||||
com.google.cloud:google-cloud-core-grpc:2.3.5
|
||||
com.google.cloud:google-cloud-core-http:1.95.4
|
||||
com.google.cloud:google-cloud-core:2.3.5
|
||||
com.google.cloud:google-cloud-firestore:3.0.10
|
||||
com.google.cloud:google-cloud-pubsub:1.115.1
|
||||
com.google.cloud:google-cloud-pubsublite:1.4.8
|
||||
com.google.cloud:google-cloud-secretmanager:1.4.0
|
||||
com.google.cloud:google-cloud-spanner:6.12.1
|
||||
com.google.cloud:google-cloud-spanner:6.17.4
|
||||
com.google.cloud:google-cloud-storage:1.113.12
|
||||
com.google.cloud:google-cloud-tasks:1.33.2
|
||||
com.google.cloud:grpc-gcp:1.1.0
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.2
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.10
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.8
|
||||
com.google.code.gson:gson:2.8.9
|
||||
com.google.common.html.types:types:1.0.6
|
||||
com.google.dagger:dagger:2.33
|
||||
com.google.errorprone:error_prone_annotations:2.9.0
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
com.google.escapevelocity:escapevelocity:0.9.1
|
||||
com.google.flatbuffers:flatbuffers-java:1.12.0
|
||||
com.google.flogger:flogger-system-backend:0.6
|
||||
com.google.flogger:flogger:0.7.3
|
||||
com.google.flogger:google-extensions:0.6
|
||||
com.google.flogger:flogger-system-backend:0.7.4
|
||||
com.google.flogger:flogger:0.7.4
|
||||
com.google.flogger:google-extensions:0.7.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.1.1-jre
|
||||
com.google.guava:guava:31.0.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.39.2
|
||||
com.google.http-client:google-http-client-apache-v2:1.40.1
|
||||
com.google.http-client:google-http-client-appengine:1.39.2
|
||||
com.google.http-client:google-http-client-gson:1.40.0
|
||||
com.google.http-client:google-http-client-jackson2:1.39.2
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.40.0
|
||||
com.google.http-client:google-http-client-gson:1.41.0
|
||||
com.google.http-client:google-http-client-jackson2:1.41.0
|
||||
com.google.http-client:google-http-client-protobuf:1.40.1
|
||||
com.google.http-client:google-http-client:1.41.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -143,9 +145,9 @@ com.google.oauth-client:google-oauth-client-appengine:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.31.4
|
||||
com.google.oauth-client:google-oauth-client:1.31.5
|
||||
com.google.protobuf:protobuf-java-util:3.17.3
|
||||
com.google.protobuf:protobuf-java:3.17.3
|
||||
com.google.oauth-client:google-oauth-client:1.32.1
|
||||
com.google.protobuf:protobuf-java-util:3.19.2
|
||||
com.google.protobuf:protobuf-java:3.19.2
|
||||
com.google.re2j:re2j:1.6
|
||||
com.google.template:soy:2021-02-01
|
||||
com.googlecode.charts4j:charts4j:1.3
|
||||
@@ -165,31 +167,34 @@ io.confluent:kafka-avro-serializer:5.3.2
|
||||
io.confluent:kafka-schema-registry-client:5.3.2
|
||||
io.dropwizard.metrics:metrics-core:3.1.2
|
||||
io.github.classgraph:classgraph:4.8.104
|
||||
io.grpc:grpc-alts:1.40.1
|
||||
io.grpc:grpc-api:1.40.1
|
||||
io.grpc:grpc-auth:1.40.1
|
||||
io.grpc:grpc-context:1.40.1
|
||||
io.grpc:grpc-core:1.40.1
|
||||
io.grpc:grpc-grpclb:1.40.1
|
||||
io.grpc:grpc-netty-shaded:1.40.1
|
||||
io.grpc:grpc-netty:1.40.0
|
||||
io.grpc:grpc-protobuf-lite:1.40.1
|
||||
io.grpc:grpc-protobuf:1.40.1
|
||||
io.grpc:grpc-stub:1.40.1
|
||||
io.netty:netty-buffer:4.1.52.Final
|
||||
io.netty:netty-codec-http2:4.1.52.Final
|
||||
io.netty:netty-codec-http:4.1.52.Final
|
||||
io.netty:netty-codec-socks:4.1.52.Final
|
||||
io.netty:netty-codec:4.1.52.Final
|
||||
io.netty:netty-common:4.1.52.Final
|
||||
io.netty:netty-handler-proxy:4.1.52.Final
|
||||
io.netty:netty-handler:4.1.52.Final
|
||||
io.netty:netty-resolver:4.1.52.Final
|
||||
io.grpc:grpc-alts:1.43.2
|
||||
io.grpc:grpc-api:1.43.2
|
||||
io.grpc:grpc-auth:1.43.2
|
||||
io.grpc:grpc-context:1.43.2
|
||||
io.grpc:grpc-core:1.43.2
|
||||
io.grpc:grpc-grpclb:1.43.2
|
||||
io.grpc:grpc-netty-shaded:1.43.2
|
||||
io.grpc:grpc-netty:1.43.2
|
||||
io.grpc:grpc-protobuf-lite:1.43.2
|
||||
io.grpc:grpc-protobuf:1.43.2
|
||||
io.grpc:grpc-services:1.43.2
|
||||
io.grpc:grpc-stub:1.43.2
|
||||
io.grpc:grpc-xds:1.43.2
|
||||
io.netty:netty-buffer:4.1.63.Final
|
||||
io.netty:netty-codec-http2:4.1.63.Final
|
||||
io.netty:netty-codec-http:4.1.63.Final
|
||||
io.netty:netty-codec-socks:4.1.63.Final
|
||||
io.netty:netty-codec:4.1.63.Final
|
||||
io.netty:netty-common:4.1.63.Final
|
||||
io.netty:netty-handler-proxy:4.1.63.Final
|
||||
io.netty:netty-handler:4.1.63.Final
|
||||
io.netty:netty-resolver:4.1.63.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.52.Final
|
||||
io.opencensus:opencensus-api:0.28.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.28.0
|
||||
io.netty:netty-transport:4.1.63.Final
|
||||
io.opencensus:opencensus-api:0.30.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.30.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.28.0
|
||||
io.opencensus:opencensus-proto:0.2.0
|
||||
io.perfmark:perfmark-api:0.23.0
|
||||
it.unimi.dsi:fastutil:6.5.16
|
||||
javax.activation:activation:1.1
|
||||
@@ -213,33 +218,33 @@ org.apache.arrow:arrow-format:5.0.0
|
||||
org.apache.arrow:arrow-memory-core:5.0.0
|
||||
org.apache.arrow:arrow-vector:5.0.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.34.0
|
||||
org.apache.beam:beam-model-job-management:2.34.0
|
||||
org.apache.beam:beam-model-pipeline:2.34.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.34.0
|
||||
org.apache.beam:beam-runners-core-java:2.34.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.34.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.34.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.34.0
|
||||
org.apache.beam:beam-model-fn-execution:2.37.0
|
||||
org.apache.beam:beam-model-job-management:2.37.0
|
||||
org.apache.beam:beam-model-pipeline:2.37.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.37.0
|
||||
org.apache.beam:beam-runners-core-java:2.37.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.37.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.37.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.37.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_11_0:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_36_0:0.2
|
||||
org.apache.beam:beam-vendor-grpc-1_43_2:0.1
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-lang3:3.8.1
|
||||
org.apache.httpcomponents:httpclient:4.5.13
|
||||
org.apache.httpcomponents:httpcore:4.4.14
|
||||
org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.apache.httpcomponents:httpcore:4.4.15
|
||||
org.bouncycastle:bcpg-jdk15on:1.67
|
||||
org.bouncycastle:bcpkix-jdk15on:1.67
|
||||
org.bouncycastle:bcprov-jdk15on:1.67
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.18.0
|
||||
org.checkerframework:checker-qual:3.21.0
|
||||
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.20
|
||||
@@ -249,7 +254,7 @@ org.easymock:easymock:3.0
|
||||
org.flywaydb:flyway-core:5.2.4
|
||||
org.glassfish.jaxb:jaxb-runtime:2.3.1
|
||||
org.glassfish.jaxb:txw2:2.3.1
|
||||
org.hamcrest:hamcrest-core:2.1
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.hamcrest:hamcrest:2.1
|
||||
org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
|
||||
org.hibernate:hibernate-core:5.4.23.Final
|
||||
@@ -278,11 +283,11 @@ org.testcontainers:database-commons:1.15.2
|
||||
org.testcontainers:jdbc:1.15.2
|
||||
org.testcontainers:postgresql:1.15.2
|
||||
org.testcontainers:testcontainers:1.15.2
|
||||
org.threeten:threetenbp:1.5.1
|
||||
org.threeten:threetenbp:1.5.2
|
||||
org.tukaani:xz:1.5
|
||||
org.w3c.css:sac:1.3
|
||||
org.xerial.snappy:snappy-java:1.1.8.4
|
||||
org.yaml:snakeyaml:1.27
|
||||
org.yaml:snakeyaml:1.28
|
||||
us.fatehi:schemacrawler-api:16.10.1
|
||||
us.fatehi:schemacrawler-diagram:16.10.1
|
||||
us.fatehi:schemacrawler-tools:16.10.1
|
||||
|
||||
@@ -7,12 +7,13 @@ 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.12.4
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.4
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.12.4
|
||||
com.fasterxml.jackson:jackson-bom:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-core:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-databind:2.13.0
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.13.0
|
||||
com.fasterxml.jackson:jackson-bom:2.13.0
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.ben-manes.caffeine:caffeine:2.9.3
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
com.github.docker-java:docker-java-transport:3.2.7
|
||||
@@ -25,113 +26,114 @@ com.github.jnr:jnr-posix:3.1.4
|
||||
com.github.jnr:jnr-unixsocket:0.38.5
|
||||
com.github.jnr:jnr-x86asm:1.0.2
|
||||
com.google.api-client:google-api-client-appengine:1.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.32.2
|
||||
com.google.api-client:google-api-client-java6:1.31.3
|
||||
com.google.api-client:google-api-client-servlet:1.31.3
|
||||
com.google.api-client:google-api-client:1.32.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api-client:google-api-client:1.32.2
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-common-protos:2.3.2
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.91.3
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:grpc-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.93.2
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.10
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2:1.33.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.89.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.89.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.5.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.1.0
|
||||
com.google.api:api-common:2.0.2
|
||||
com.google.api:gax-grpc:2.4.1
|
||||
com.google.api:gax-httpjson:0.88.0
|
||||
com.google.api:gax:2.4.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.2.0
|
||||
com.google.api:api-common:2.1.2
|
||||
com.google.api:gax-grpc:2.8.1
|
||||
com.google.api:gax-httpjson:0.93.1
|
||||
com.google.api:gax:2.8.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev118-1.25.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev130-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20211129-1.32.1
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev108-1.25.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20210815-1.32.1
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20211017-1.32.1
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20210818-1.32.1
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev99-1.25.0
|
||||
com.google.apis:google-api-services-drive:v2-rev393-1.25.0
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev82-1.25.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20210806-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.31.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20211016-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1
|
||||
com.google.apis:google-api-services-monitoring:v3-rev540-1.25.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20210809-1.32.1
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1
|
||||
com.google.apis:google-api-services-sheets:v4-rev612-1.25.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20210119-1.31.0
|
||||
com.google.apis:google-api-services-storage:v1-rev20210127-1.32.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20211201-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:1.9.86
|
||||
com.google.appengine:appengine-remote-api:1.9.86
|
||||
com.google.appengine:appengine-testing:1.9.86
|
||||
com.google.auth:google-auth-library-credentials:1.1.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.1.0
|
||||
com.google.auth:google-auth-library-credentials:1.3.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.3.0
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.8.2
|
||||
com.google.auto.value:auto-value-annotations:1.9
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.2
|
||||
com.google.cloud.bigdataoss:util:2.2.2
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.23.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.23.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.4
|
||||
com.google.cloud.bigdataoss:util:2.2.4
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.25.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.25.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:2.1.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.2.1
|
||||
com.google.cloud:google-cloud-bigquery:2.1.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.1.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.8.1
|
||||
com.google.cloud:google-cloud-bigtable:1.27.1
|
||||
com.google.cloud:google-cloud-core-grpc:2.1.0
|
||||
com.google.cloud:google-cloud-core-http:2.1.0
|
||||
com.google.cloud:google-cloud-core:2.1.0
|
||||
com.google.cloud:google-cloud-firestore:3.0.2
|
||||
com.google.cloud:google-cloud-pubsub:1.114.2
|
||||
com.google.cloud:google-cloud-pubsublite:1.2.0
|
||||
com.google.cloud:google-cloud-core-grpc:2.3.5
|
||||
com.google.cloud:google-cloud-core-http:1.95.4
|
||||
com.google.cloud:google-cloud-core:2.3.5
|
||||
com.google.cloud:google-cloud-firestore:3.0.10
|
||||
com.google.cloud:google-cloud-pubsub:1.115.1
|
||||
com.google.cloud:google-cloud-pubsublite:1.4.8
|
||||
com.google.cloud:google-cloud-secretmanager:1.4.0
|
||||
com.google.cloud:google-cloud-spanner:6.12.1
|
||||
com.google.cloud:google-cloud-spanner:6.17.4
|
||||
com.google.cloud:google-cloud-storage:1.113.12
|
||||
com.google.cloud:google-cloud-tasks:1.33.2
|
||||
com.google.cloud:grpc-gcp:1.1.0
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.2
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.10
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.8
|
||||
com.google.code.gson:gson:2.8.9
|
||||
com.google.common.html.types:types:1.0.6
|
||||
com.google.dagger:dagger:2.33
|
||||
com.google.errorprone:error_prone_annotations:2.9.0
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
com.google.escapevelocity:escapevelocity:0.9.1
|
||||
com.google.flatbuffers:flatbuffers-java:1.12.0
|
||||
com.google.flogger:flogger-system-backend:0.6
|
||||
com.google.flogger:flogger:0.7.3
|
||||
com.google.flogger:google-extensions:0.6
|
||||
com.google.flogger:flogger-system-backend:0.7.4
|
||||
com.google.flogger:flogger:0.7.4
|
||||
com.google.flogger:google-extensions:0.7.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.1.1-jre
|
||||
com.google.guava:guava:31.0.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.39.2
|
||||
com.google.http-client:google-http-client-apache-v2:1.40.1
|
||||
com.google.http-client:google-http-client-appengine:1.39.2
|
||||
com.google.http-client:google-http-client-gson:1.40.0
|
||||
com.google.http-client:google-http-client-jackson2:1.39.2
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.40.0
|
||||
com.google.http-client:google-http-client-gson:1.41.0
|
||||
com.google.http-client:google-http-client-jackson2:1.41.0
|
||||
com.google.http-client:google-http-client-protobuf:1.40.1
|
||||
com.google.http-client:google-http-client:1.41.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -142,9 +144,9 @@ com.google.oauth-client:google-oauth-client-appengine:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.31.4
|
||||
com.google.oauth-client:google-oauth-client:1.31.5
|
||||
com.google.protobuf:protobuf-java-util:3.17.3
|
||||
com.google.protobuf:protobuf-java:3.17.3
|
||||
com.google.oauth-client:google-oauth-client:1.32.1
|
||||
com.google.protobuf:protobuf-java-util:3.19.2
|
||||
com.google.protobuf:protobuf-java:3.19.2
|
||||
com.google.re2j:re2j:1.6
|
||||
com.google.template:soy:2021-02-01
|
||||
com.googlecode.charts4j:charts4j:1.3
|
||||
@@ -164,28 +166,28 @@ io.confluent:kafka-avro-serializer:5.3.2
|
||||
io.confluent:kafka-schema-registry-client:5.3.2
|
||||
io.dropwizard.metrics:metrics-core:3.1.2
|
||||
io.github.classgraph:classgraph:4.8.104
|
||||
io.grpc:grpc-alts:1.40.1
|
||||
io.grpc:grpc-api:1.40.1
|
||||
io.grpc:grpc-auth:1.40.1
|
||||
io.grpc:grpc-context:1.40.1
|
||||
io.grpc:grpc-core:1.40.1
|
||||
io.grpc:grpc-grpclb:1.40.1
|
||||
io.grpc:grpc-netty-shaded:1.40.1
|
||||
io.grpc:grpc-netty:1.40.0
|
||||
io.grpc:grpc-protobuf-lite:1.40.1
|
||||
io.grpc:grpc-protobuf:1.40.1
|
||||
io.grpc:grpc-stub:1.40.1
|
||||
io.netty:netty-buffer:4.1.52.Final
|
||||
io.netty:netty-codec-http2:4.1.52.Final
|
||||
io.netty:netty-codec-http:4.1.52.Final
|
||||
io.netty:netty-codec:4.1.52.Final
|
||||
io.netty:netty-common:4.1.52.Final
|
||||
io.netty:netty-handler:4.1.52.Final
|
||||
io.netty:netty-resolver:4.1.52.Final
|
||||
io.grpc:grpc-alts:1.43.2
|
||||
io.grpc:grpc-api:1.43.2
|
||||
io.grpc:grpc-auth:1.43.2
|
||||
io.grpc:grpc-context:1.43.2
|
||||
io.grpc:grpc-core:1.43.2
|
||||
io.grpc:grpc-grpclb:1.43.2
|
||||
io.grpc:grpc-netty-shaded:1.43.2
|
||||
io.grpc:grpc-netty:1.43.2
|
||||
io.grpc:grpc-protobuf-lite:1.43.2
|
||||
io.grpc:grpc-protobuf:1.43.2
|
||||
io.grpc:grpc-stub:1.43.2
|
||||
io.netty:netty-buffer:4.1.63.Final
|
||||
io.netty:netty-codec-http2:4.1.63.Final
|
||||
io.netty:netty-codec-http:4.1.63.Final
|
||||
io.netty:netty-codec:4.1.63.Final
|
||||
io.netty:netty-common:4.1.63.Final
|
||||
io.netty:netty-handler:4.1.63.Final
|
||||
io.netty:netty-resolver:4.1.63.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.52.Final
|
||||
io.opencensus:opencensus-api:0.28.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.28.0
|
||||
io.netty:netty-transport:4.1.63.Final
|
||||
io.opencensus:opencensus-api:0.30.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.30.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.28.0
|
||||
it.unimi.dsi:fastutil:6.5.16
|
||||
javax.activation:activation:1.1
|
||||
@@ -208,33 +210,33 @@ org.apache.arrow:arrow-format:5.0.0
|
||||
org.apache.arrow:arrow-memory-core:5.0.0
|
||||
org.apache.arrow:arrow-vector:5.0.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.34.0
|
||||
org.apache.beam:beam-model-job-management:2.34.0
|
||||
org.apache.beam:beam-model-pipeline:2.34.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.34.0
|
||||
org.apache.beam:beam-runners-core-java:2.34.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.34.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.34.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.34.0
|
||||
org.apache.beam:beam-model-fn-execution:2.37.0
|
||||
org.apache.beam:beam-model-job-management:2.37.0
|
||||
org.apache.beam:beam-model-pipeline:2.37.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.37.0
|
||||
org.apache.beam:beam-runners-core-java:2.37.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.37.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.37.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.37.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_11_0:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_36_0:0.2
|
||||
org.apache.beam:beam-vendor-grpc-1_43_2:0.1
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-lang3:3.8.1
|
||||
org.apache.httpcomponents:httpclient:4.5.13
|
||||
org.apache.httpcomponents:httpcore:4.4.14
|
||||
org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.apache.httpcomponents:httpcore:4.4.15
|
||||
org.bouncycastle:bcpg-jdk15on:1.67
|
||||
org.bouncycastle:bcpkix-jdk15on:1.67
|
||||
org.bouncycastle:bcprov-jdk15on:1.67
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.18.0
|
||||
org.checkerframework:checker-qual:3.21.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
|
||||
@@ -243,7 +245,6 @@ org.easymock:easymock:3.0
|
||||
org.flywaydb:flyway-core:5.2.4
|
||||
org.glassfish.jaxb:jaxb-runtime:2.3.1
|
||||
org.glassfish.jaxb:txw2:2.3.1
|
||||
org.hamcrest:hamcrest-core:2.1
|
||||
org.hamcrest:hamcrest:2.1
|
||||
org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
|
||||
org.hibernate:hibernate-core:5.4.23.Final
|
||||
@@ -272,11 +273,11 @@ org.testcontainers:database-commons:1.15.2
|
||||
org.testcontainers:jdbc:1.15.2
|
||||
org.testcontainers:postgresql:1.15.2
|
||||
org.testcontainers:testcontainers:1.15.2
|
||||
org.threeten:threetenbp:1.5.1
|
||||
org.threeten:threetenbp:1.5.2
|
||||
org.tukaani:xz:1.5
|
||||
org.w3c.css:sac:1.3
|
||||
org.xerial.snappy:snappy-java:1.1.8.4
|
||||
org.yaml:snakeyaml:1.27
|
||||
org.yaml:snakeyaml:1.28
|
||||
us.fatehi:schemacrawler-api:16.10.1
|
||||
us.fatehi:schemacrawler-diagram:16.10.1
|
||||
us.fatehi:schemacrawler-tools:16.10.1
|
||||
|
||||
@@ -11,12 +11,13 @@ com.eclipsesource.j2v8:j2v8_linux_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_macosx_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86_64:4.6.0
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.4
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.12.4
|
||||
com.fasterxml.jackson:jackson-bom:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-core:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-databind:2.13.0
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.13.0
|
||||
com.fasterxml.jackson:jackson-bom:2.13.0
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.ben-manes.caffeine:caffeine:2.9.3
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
com.github.docker-java:docker-java-transport:3.2.7
|
||||
@@ -30,114 +31,115 @@ com.github.jnr:jnr-unixsocket:0.38.5
|
||||
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.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.32.2
|
||||
com.google.api-client:google-api-client-java6:1.31.3
|
||||
com.google.api-client:google-api-client-servlet:1.31.3
|
||||
com.google.api-client:google-api-client:1.32.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api-client:google-api-client:1.32.2
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-common-protos:2.3.2
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.91.3
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:grpc-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.93.2
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.10
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2:1.33.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.89.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.89.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.5.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.1.0
|
||||
com.google.api:api-common:2.0.2
|
||||
com.google.api:gax-grpc:2.4.1
|
||||
com.google.api:gax-httpjson:0.88.0
|
||||
com.google.api:gax:2.4.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.2.0
|
||||
com.google.api:api-common:2.1.2
|
||||
com.google.api:gax-grpc:2.8.1
|
||||
com.google.api:gax-httpjson:0.93.1
|
||||
com.google.api:gax:2.8.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev118-1.25.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev130-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20211129-1.32.1
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev108-1.25.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20210815-1.32.1
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20211017-1.32.1
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20210818-1.32.1
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev99-1.25.0
|
||||
com.google.apis:google-api-services-drive:v2-rev393-1.25.0
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev82-1.25.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20210806-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.31.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20211016-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1
|
||||
com.google.apis:google-api-services-monitoring:v3-rev540-1.25.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20210809-1.32.1
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1
|
||||
com.google.apis:google-api-services-sheets:v4-rev612-1.25.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20210119-1.31.0
|
||||
com.google.apis:google-api-services-storage:v1-rev20210127-1.32.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20211201-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:1.9.86
|
||||
com.google.appengine:appengine-remote-api:1.9.86
|
||||
com.google.appengine:appengine-testing:1.9.86
|
||||
com.google.auth:google-auth-library-credentials:1.1.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.1.0
|
||||
com.google.auth:google-auth-library-credentials:1.3.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.3.0
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.8.2
|
||||
com.google.auto.value:auto-value-annotations:1.9
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.2
|
||||
com.google.cloud.bigdataoss:util:2.2.2
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.23.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.23.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.4
|
||||
com.google.cloud.bigdataoss:util:2.2.4
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.25.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.25.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:2.1.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.2.1
|
||||
com.google.cloud.sql:postgres-socket-factory:1.2.1
|
||||
com.google.cloud:google-cloud-bigquery:2.1.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.1.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.8.1
|
||||
com.google.cloud:google-cloud-bigtable:1.27.1
|
||||
com.google.cloud:google-cloud-core-grpc:2.1.0
|
||||
com.google.cloud:google-cloud-core-http:2.1.0
|
||||
com.google.cloud:google-cloud-core:2.1.0
|
||||
com.google.cloud:google-cloud-firestore:3.0.2
|
||||
com.google.cloud:google-cloud-pubsub:1.114.2
|
||||
com.google.cloud:google-cloud-pubsublite:1.2.0
|
||||
com.google.cloud:google-cloud-core-grpc:2.3.5
|
||||
com.google.cloud:google-cloud-core-http:1.95.4
|
||||
com.google.cloud:google-cloud-core:2.3.5
|
||||
com.google.cloud:google-cloud-firestore:3.0.10
|
||||
com.google.cloud:google-cloud-pubsub:1.115.1
|
||||
com.google.cloud:google-cloud-pubsublite:1.4.8
|
||||
com.google.cloud:google-cloud-secretmanager:1.4.0
|
||||
com.google.cloud:google-cloud-spanner:6.12.1
|
||||
com.google.cloud:google-cloud-spanner:6.17.4
|
||||
com.google.cloud:google-cloud-storage:1.113.12
|
||||
com.google.cloud:google-cloud-tasks:1.33.2
|
||||
com.google.cloud:grpc-gcp:1.1.0
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.2
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.10
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.8
|
||||
com.google.code.gson:gson:2.8.9
|
||||
com.google.common.html.types:types:1.0.6
|
||||
com.google.dagger:dagger:2.33
|
||||
com.google.errorprone:error_prone_annotations:2.9.0
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
com.google.escapevelocity:escapevelocity:0.9.1
|
||||
com.google.flatbuffers:flatbuffers-java:1.12.0
|
||||
com.google.flogger:flogger-system-backend:0.7.3
|
||||
com.google.flogger:flogger:0.7.3
|
||||
com.google.flogger:google-extensions:0.6
|
||||
com.google.flogger:flogger-system-backend:0.7.4
|
||||
com.google.flogger:flogger:0.7.4
|
||||
com.google.flogger:google-extensions:0.7.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.1.1-jre
|
||||
com.google.guava:guava:31.0.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.39.2
|
||||
com.google.http-client:google-http-client-apache-v2:1.40.1
|
||||
com.google.http-client:google-http-client-appengine:1.39.2
|
||||
com.google.http-client:google-http-client-gson:1.40.0
|
||||
com.google.http-client:google-http-client-jackson2:1.39.2
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.40.0
|
||||
com.google.http-client:google-http-client-gson:1.41.0
|
||||
com.google.http-client:google-http-client-jackson2:1.41.0
|
||||
com.google.http-client:google-http-client-protobuf:1.40.1
|
||||
com.google.http-client:google-http-client:1.41.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -148,9 +150,9 @@ com.google.oauth-client:google-oauth-client-appengine:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.31.4
|
||||
com.google.oauth-client:google-oauth-client:1.31.5
|
||||
com.google.protobuf:protobuf-java-util:3.17.3
|
||||
com.google.protobuf:protobuf-java:3.17.3
|
||||
com.google.oauth-client:google-oauth-client:1.32.1
|
||||
com.google.protobuf:protobuf-java-util:3.19.2
|
||||
com.google.protobuf:protobuf-java:3.19.2
|
||||
com.google.re2j:re2j:1.6
|
||||
com.google.template:soy:2021-02-01
|
||||
com.googlecode.charts4j:charts4j:1.3
|
||||
@@ -173,31 +175,34 @@ io.confluent:kafka-avro-serializer:5.3.2
|
||||
io.confluent:kafka-schema-registry-client:5.3.2
|
||||
io.dropwizard.metrics:metrics-core:3.1.2
|
||||
io.github.classgraph:classgraph:4.8.104
|
||||
io.grpc:grpc-alts:1.40.1
|
||||
io.grpc:grpc-api:1.40.1
|
||||
io.grpc:grpc-auth:1.40.1
|
||||
io.grpc:grpc-context:1.40.1
|
||||
io.grpc:grpc-core:1.40.1
|
||||
io.grpc:grpc-grpclb:1.40.1
|
||||
io.grpc:grpc-netty-shaded:1.40.1
|
||||
io.grpc:grpc-netty:1.40.0
|
||||
io.grpc:grpc-protobuf-lite:1.40.1
|
||||
io.grpc:grpc-protobuf:1.40.1
|
||||
io.grpc:grpc-stub:1.40.1
|
||||
io.netty:netty-buffer:4.1.52.Final
|
||||
io.netty:netty-codec-http2:4.1.52.Final
|
||||
io.netty:netty-codec-http:4.1.52.Final
|
||||
io.netty:netty-codec-socks:4.1.52.Final
|
||||
io.netty:netty-codec:4.1.52.Final
|
||||
io.netty:netty-common:4.1.52.Final
|
||||
io.netty:netty-handler-proxy:4.1.52.Final
|
||||
io.netty:netty-handler:4.1.52.Final
|
||||
io.netty:netty-resolver:4.1.52.Final
|
||||
io.grpc:grpc-alts:1.43.2
|
||||
io.grpc:grpc-api:1.43.2
|
||||
io.grpc:grpc-auth:1.43.2
|
||||
io.grpc:grpc-context:1.43.2
|
||||
io.grpc:grpc-core:1.43.2
|
||||
io.grpc:grpc-grpclb:1.43.2
|
||||
io.grpc:grpc-netty-shaded:1.43.2
|
||||
io.grpc:grpc-netty:1.43.2
|
||||
io.grpc:grpc-protobuf-lite:1.43.2
|
||||
io.grpc:grpc-protobuf:1.43.2
|
||||
io.grpc:grpc-services:1.43.2
|
||||
io.grpc:grpc-stub:1.43.2
|
||||
io.grpc:grpc-xds:1.43.2
|
||||
io.netty:netty-buffer:4.1.63.Final
|
||||
io.netty:netty-codec-http2:4.1.63.Final
|
||||
io.netty:netty-codec-http:4.1.63.Final
|
||||
io.netty:netty-codec-socks:4.1.63.Final
|
||||
io.netty:netty-codec:4.1.63.Final
|
||||
io.netty:netty-common:4.1.63.Final
|
||||
io.netty:netty-handler-proxy:4.1.63.Final
|
||||
io.netty:netty-handler:4.1.63.Final
|
||||
io.netty:netty-resolver:4.1.63.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.52.Final
|
||||
io.opencensus:opencensus-api:0.28.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.28.0
|
||||
io.netty:netty-transport:4.1.63.Final
|
||||
io.opencensus:opencensus-api:0.30.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.30.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.28.0
|
||||
io.opencensus:opencensus-proto:0.2.0
|
||||
io.perfmark:perfmark-api:0.23.0
|
||||
it.unimi.dsi:fastutil:6.5.16
|
||||
javax.activation:activation:1.1
|
||||
@@ -222,34 +227,34 @@ org.apache.arrow:arrow-format:5.0.0
|
||||
org.apache.arrow:arrow-memory-core:5.0.0
|
||||
org.apache.arrow:arrow-vector:5.0.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.34.0
|
||||
org.apache.beam:beam-model-job-management:2.34.0
|
||||
org.apache.beam:beam-model-pipeline:2.34.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.34.0
|
||||
org.apache.beam:beam-runners-core-java:2.34.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.34.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.34.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.34.0
|
||||
org.apache.beam:beam-model-fn-execution:2.37.0
|
||||
org.apache.beam:beam-model-job-management:2.37.0
|
||||
org.apache.beam:beam-model-pipeline:2.37.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.37.0
|
||||
org.apache.beam:beam-runners-core-java:2.37.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.37.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.37.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.37.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_11_0:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_36_0:0.2
|
||||
org.apache.beam:beam-vendor-grpc-1_43_2:0.1
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-exec:1.3
|
||||
org.apache.commons:commons-lang3:3.8.1
|
||||
org.apache.httpcomponents:httpclient:4.5.13
|
||||
org.apache.httpcomponents:httpcore:4.4.14
|
||||
org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.apache.httpcomponents:httpcore:4.4.15
|
||||
org.bouncycastle:bcpg-jdk15on:1.67
|
||||
org.bouncycastle:bcpkix-jdk15on:1.67
|
||||
org.bouncycastle:bcprov-jdk15on:1.67
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.18.0
|
||||
org.checkerframework:checker-qual:3.21.0
|
||||
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.20
|
||||
@@ -259,7 +264,7 @@ org.easymock:easymock:3.0
|
||||
org.flywaydb:flyway-core:5.2.4
|
||||
org.glassfish.jaxb:jaxb-runtime:2.3.1
|
||||
org.glassfish.jaxb:txw2:2.3.1
|
||||
org.hamcrest:hamcrest-core:2.1
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.hamcrest:hamcrest:2.1
|
||||
org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
|
||||
org.hibernate:hibernate-core:5.4.23.Final
|
||||
@@ -291,12 +296,12 @@ org.testcontainers:database-commons:1.15.2
|
||||
org.testcontainers:jdbc:1.15.2
|
||||
org.testcontainers:postgresql:1.15.2
|
||||
org.testcontainers:testcontainers:1.15.2
|
||||
org.threeten:threetenbp:1.5.1
|
||||
org.threeten:threetenbp:1.5.2
|
||||
org.tukaani:xz:1.5
|
||||
org.w3c.css:sac:1.3
|
||||
org.webjars.npm:viz.js-for-graphviz-java:2.1.3
|
||||
org.xerial.snappy:snappy-java:1.1.8.4
|
||||
org.yaml:snakeyaml:1.27
|
||||
org.yaml:snakeyaml:1.28
|
||||
us.fatehi:schemacrawler-api:16.10.1
|
||||
us.fatehi:schemacrawler-diagram:16.10.1
|
||||
us.fatehi:schemacrawler-tools:16.10.1
|
||||
|
||||
@@ -11,12 +11,13 @@ com.eclipsesource.j2v8:j2v8_linux_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_macosx_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86_64:4.6.0
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.4
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.12.4
|
||||
com.fasterxml.jackson:jackson-bom:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-core:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-databind:2.13.0
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.13.0
|
||||
com.fasterxml.jackson:jackson-bom:2.13.0
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.ben-manes.caffeine:caffeine:2.9.3
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
com.github.docker-java:docker-java-transport:3.2.7
|
||||
@@ -30,114 +31,115 @@ com.github.jnr:jnr-unixsocket:0.38.5
|
||||
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.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.32.2
|
||||
com.google.api-client:google-api-client-java6:1.31.3
|
||||
com.google.api-client:google-api-client-servlet:1.31.3
|
||||
com.google.api-client:google-api-client:1.32.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api-client:google-api-client:1.32.2
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-common-protos:2.3.2
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.91.3
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:grpc-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.93.2
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.10
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2:1.33.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.89.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.89.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.5.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.1.0
|
||||
com.google.api:api-common:2.0.2
|
||||
com.google.api:gax-grpc:2.4.1
|
||||
com.google.api:gax-httpjson:0.88.0
|
||||
com.google.api:gax:2.4.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.2.0
|
||||
com.google.api:api-common:2.1.2
|
||||
com.google.api:gax-grpc:2.8.1
|
||||
com.google.api:gax-httpjson:0.93.1
|
||||
com.google.api:gax:2.8.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev118-1.25.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev130-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20211129-1.32.1
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev108-1.25.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20210815-1.32.1
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20211017-1.32.1
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20210818-1.32.1
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev99-1.25.0
|
||||
com.google.apis:google-api-services-drive:v2-rev393-1.25.0
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev82-1.25.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20210806-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.31.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20211016-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1
|
||||
com.google.apis:google-api-services-monitoring:v3-rev540-1.25.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20210809-1.32.1
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1
|
||||
com.google.apis:google-api-services-sheets:v4-rev612-1.25.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20210119-1.31.0
|
||||
com.google.apis:google-api-services-storage:v1-rev20210127-1.32.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20211201-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:1.9.86
|
||||
com.google.appengine:appengine-remote-api:1.9.86
|
||||
com.google.appengine:appengine-testing:1.9.86
|
||||
com.google.auth:google-auth-library-credentials:1.1.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.1.0
|
||||
com.google.auth:google-auth-library-credentials:1.3.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.3.0
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.8.2
|
||||
com.google.auto.value:auto-value-annotations:1.9
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.2
|
||||
com.google.cloud.bigdataoss:util:2.2.2
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.23.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.23.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.4
|
||||
com.google.cloud.bigdataoss:util:2.2.4
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.25.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.25.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:2.1.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.2.1
|
||||
com.google.cloud.sql:postgres-socket-factory:1.2.1
|
||||
com.google.cloud:google-cloud-bigquery:2.1.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.1.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.8.1
|
||||
com.google.cloud:google-cloud-bigtable:1.27.1
|
||||
com.google.cloud:google-cloud-core-grpc:2.1.0
|
||||
com.google.cloud:google-cloud-core-http:2.1.0
|
||||
com.google.cloud:google-cloud-core:2.1.0
|
||||
com.google.cloud:google-cloud-firestore:3.0.2
|
||||
com.google.cloud:google-cloud-pubsub:1.114.2
|
||||
com.google.cloud:google-cloud-pubsublite:1.2.0
|
||||
com.google.cloud:google-cloud-core-grpc:2.3.5
|
||||
com.google.cloud:google-cloud-core-http:1.95.4
|
||||
com.google.cloud:google-cloud-core:2.3.5
|
||||
com.google.cloud:google-cloud-firestore:3.0.10
|
||||
com.google.cloud:google-cloud-pubsub:1.115.1
|
||||
com.google.cloud:google-cloud-pubsublite:1.4.8
|
||||
com.google.cloud:google-cloud-secretmanager:1.4.0
|
||||
com.google.cloud:google-cloud-spanner:6.12.1
|
||||
com.google.cloud:google-cloud-spanner:6.17.4
|
||||
com.google.cloud:google-cloud-storage:1.113.12
|
||||
com.google.cloud:google-cloud-tasks:1.33.2
|
||||
com.google.cloud:grpc-gcp:1.1.0
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.2
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.10
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.8
|
||||
com.google.code.gson:gson:2.8.9
|
||||
com.google.common.html.types:types:1.0.6
|
||||
com.google.dagger:dagger:2.33
|
||||
com.google.errorprone:error_prone_annotations:2.9.0
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
com.google.escapevelocity:escapevelocity:0.9.1
|
||||
com.google.flatbuffers:flatbuffers-java:1.12.0
|
||||
com.google.flogger:flogger-system-backend:0.7.3
|
||||
com.google.flogger:flogger:0.7.3
|
||||
com.google.flogger:google-extensions:0.6
|
||||
com.google.flogger:flogger-system-backend:0.7.4
|
||||
com.google.flogger:flogger:0.7.4
|
||||
com.google.flogger:google-extensions:0.7.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.1.1-jre
|
||||
com.google.guava:guava:31.0.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.39.2
|
||||
com.google.http-client:google-http-client-apache-v2:1.40.1
|
||||
com.google.http-client:google-http-client-appengine:1.39.2
|
||||
com.google.http-client:google-http-client-gson:1.40.0
|
||||
com.google.http-client:google-http-client-jackson2:1.39.2
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.40.0
|
||||
com.google.http-client:google-http-client-gson:1.41.0
|
||||
com.google.http-client:google-http-client-jackson2:1.41.0
|
||||
com.google.http-client:google-http-client-protobuf:1.40.1
|
||||
com.google.http-client:google-http-client:1.41.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -148,9 +150,9 @@ com.google.oauth-client:google-oauth-client-appengine:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.31.4
|
||||
com.google.oauth-client:google-oauth-client:1.31.5
|
||||
com.google.protobuf:protobuf-java-util:3.17.3
|
||||
com.google.protobuf:protobuf-java:3.17.3
|
||||
com.google.oauth-client:google-oauth-client:1.32.1
|
||||
com.google.protobuf:protobuf-java-util:3.19.2
|
||||
com.google.protobuf:protobuf-java:3.19.2
|
||||
com.google.re2j:re2j:1.6
|
||||
com.google.template:soy:2021-02-01
|
||||
com.googlecode.charts4j:charts4j:1.3
|
||||
@@ -173,31 +175,34 @@ io.confluent:kafka-avro-serializer:5.3.2
|
||||
io.confluent:kafka-schema-registry-client:5.3.2
|
||||
io.dropwizard.metrics:metrics-core:3.1.2
|
||||
io.github.classgraph:classgraph:4.8.104
|
||||
io.grpc:grpc-alts:1.40.1
|
||||
io.grpc:grpc-api:1.40.1
|
||||
io.grpc:grpc-auth:1.40.1
|
||||
io.grpc:grpc-context:1.40.1
|
||||
io.grpc:grpc-core:1.40.1
|
||||
io.grpc:grpc-grpclb:1.40.1
|
||||
io.grpc:grpc-netty-shaded:1.40.1
|
||||
io.grpc:grpc-netty:1.40.0
|
||||
io.grpc:grpc-protobuf-lite:1.40.1
|
||||
io.grpc:grpc-protobuf:1.40.1
|
||||
io.grpc:grpc-stub:1.40.1
|
||||
io.netty:netty-buffer:4.1.52.Final
|
||||
io.netty:netty-codec-http2:4.1.52.Final
|
||||
io.netty:netty-codec-http:4.1.52.Final
|
||||
io.netty:netty-codec-socks:4.1.52.Final
|
||||
io.netty:netty-codec:4.1.52.Final
|
||||
io.netty:netty-common:4.1.52.Final
|
||||
io.netty:netty-handler-proxy:4.1.52.Final
|
||||
io.netty:netty-handler:4.1.52.Final
|
||||
io.netty:netty-resolver:4.1.52.Final
|
||||
io.grpc:grpc-alts:1.43.2
|
||||
io.grpc:grpc-api:1.43.2
|
||||
io.grpc:grpc-auth:1.43.2
|
||||
io.grpc:grpc-context:1.43.2
|
||||
io.grpc:grpc-core:1.43.2
|
||||
io.grpc:grpc-grpclb:1.43.2
|
||||
io.grpc:grpc-netty-shaded:1.43.2
|
||||
io.grpc:grpc-netty:1.43.2
|
||||
io.grpc:grpc-protobuf-lite:1.43.2
|
||||
io.grpc:grpc-protobuf:1.43.2
|
||||
io.grpc:grpc-services:1.43.2
|
||||
io.grpc:grpc-stub:1.43.2
|
||||
io.grpc:grpc-xds:1.43.2
|
||||
io.netty:netty-buffer:4.1.63.Final
|
||||
io.netty:netty-codec-http2:4.1.63.Final
|
||||
io.netty:netty-codec-http:4.1.63.Final
|
||||
io.netty:netty-codec-socks:4.1.63.Final
|
||||
io.netty:netty-codec:4.1.63.Final
|
||||
io.netty:netty-common:4.1.63.Final
|
||||
io.netty:netty-handler-proxy:4.1.63.Final
|
||||
io.netty:netty-handler:4.1.63.Final
|
||||
io.netty:netty-resolver:4.1.63.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.52.Final
|
||||
io.opencensus:opencensus-api:0.28.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.28.0
|
||||
io.netty:netty-transport:4.1.63.Final
|
||||
io.opencensus:opencensus-api:0.30.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.30.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.28.0
|
||||
io.opencensus:opencensus-proto:0.2.0
|
||||
io.perfmark:perfmark-api:0.23.0
|
||||
it.unimi.dsi:fastutil:6.5.16
|
||||
javax.activation:activation:1.1
|
||||
@@ -221,34 +226,34 @@ org.apache.arrow:arrow-format:5.0.0
|
||||
org.apache.arrow:arrow-memory-core:5.0.0
|
||||
org.apache.arrow:arrow-vector:5.0.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.34.0
|
||||
org.apache.beam:beam-model-job-management:2.34.0
|
||||
org.apache.beam:beam-model-pipeline:2.34.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.34.0
|
||||
org.apache.beam:beam-runners-core-java:2.34.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.34.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.34.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.34.0
|
||||
org.apache.beam:beam-model-fn-execution:2.37.0
|
||||
org.apache.beam:beam-model-job-management:2.37.0
|
||||
org.apache.beam:beam-model-pipeline:2.37.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.37.0
|
||||
org.apache.beam:beam-runners-core-java:2.37.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.37.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.37.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.37.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_11_0:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_36_0:0.2
|
||||
org.apache.beam:beam-vendor-grpc-1_43_2:0.1
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-exec:1.3
|
||||
org.apache.commons:commons-lang3:3.8.1
|
||||
org.apache.httpcomponents:httpclient:4.5.13
|
||||
org.apache.httpcomponents:httpcore:4.4.14
|
||||
org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.apache.httpcomponents:httpcore:4.4.15
|
||||
org.bouncycastle:bcpg-jdk15on:1.67
|
||||
org.bouncycastle:bcpkix-jdk15on:1.67
|
||||
org.bouncycastle:bcprov-jdk15on:1.67
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.18.0
|
||||
org.checkerframework:checker-qual:3.21.0
|
||||
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.20
|
||||
@@ -258,7 +263,6 @@ org.easymock:easymock:3.0
|
||||
org.flywaydb:flyway-core:5.2.4
|
||||
org.glassfish.jaxb:jaxb-runtime:2.3.1
|
||||
org.glassfish.jaxb:txw2:2.3.1
|
||||
org.hamcrest:hamcrest-core:2.1
|
||||
org.hamcrest:hamcrest:2.1
|
||||
org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
|
||||
org.hibernate:hibernate-core:5.4.23.Final
|
||||
@@ -290,12 +294,12 @@ org.testcontainers:database-commons:1.15.2
|
||||
org.testcontainers:jdbc:1.15.2
|
||||
org.testcontainers:postgresql:1.15.2
|
||||
org.testcontainers:testcontainers:1.15.2
|
||||
org.threeten:threetenbp:1.5.1
|
||||
org.threeten:threetenbp:1.5.2
|
||||
org.tukaani:xz:1.5
|
||||
org.w3c.css:sac:1.3
|
||||
org.webjars.npm:viz.js-for-graphviz-java:2.1.3
|
||||
org.xerial.snappy:snappy-java:1.1.8.4
|
||||
org.yaml:snakeyaml:1.27
|
||||
org.yaml:snakeyaml:1.28
|
||||
us.fatehi:schemacrawler-api:16.10.1
|
||||
us.fatehi:schemacrawler-diagram:16.10.1
|
||||
us.fatehi:schemacrawler-tools:16.10.1
|
||||
|
||||
@@ -7,12 +7,13 @@ 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.12.4
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.4
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.12.4
|
||||
com.fasterxml.jackson:jackson-bom:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-core:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-databind:2.13.0
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.13.0
|
||||
com.fasterxml.jackson:jackson-bom:2.13.0
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.ben-manes.caffeine:caffeine:2.9.3
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
com.github.docker-java:docker-java-transport:3.2.7
|
||||
@@ -26,113 +27,114 @@ com.github.jnr:jnr-unixsocket:0.38.5
|
||||
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.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.32.2
|
||||
com.google.api-client:google-api-client-java6:1.31.3
|
||||
com.google.api-client:google-api-client-servlet:1.31.3
|
||||
com.google.api-client:google-api-client:1.32.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api-client:google-api-client:1.32.2
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-common-protos:2.3.2
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.91.3
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:grpc-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.93.2
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.10
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2:1.33.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.89.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.89.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.5.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.1.0
|
||||
com.google.api:api-common:2.0.2
|
||||
com.google.api:gax-grpc:2.4.1
|
||||
com.google.api:gax-httpjson:0.88.0
|
||||
com.google.api:gax:2.4.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.2.0
|
||||
com.google.api:api-common:2.1.2
|
||||
com.google.api:gax-grpc:2.8.1
|
||||
com.google.api:gax-httpjson:0.93.1
|
||||
com.google.api:gax:2.8.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev118-1.25.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev130-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20211129-1.32.1
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev108-1.25.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20210815-1.32.1
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20211017-1.32.1
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20210818-1.32.1
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev99-1.25.0
|
||||
com.google.apis:google-api-services-drive:v2-rev393-1.25.0
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev82-1.25.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20210806-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.31.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20211016-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1
|
||||
com.google.apis:google-api-services-monitoring:v3-rev540-1.25.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20210809-1.32.1
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1
|
||||
com.google.apis:google-api-services-sheets:v4-rev612-1.25.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20210119-1.31.0
|
||||
com.google.apis:google-api-services-storage:v1-rev20210127-1.32.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20211201-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:1.9.86
|
||||
com.google.appengine:appengine-remote-api:1.9.86
|
||||
com.google.appengine:appengine-testing:1.9.86
|
||||
com.google.auth:google-auth-library-credentials:1.1.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.1.0
|
||||
com.google.auth:google-auth-library-credentials:1.3.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.3.0
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.8.2
|
||||
com.google.auto.value:auto-value-annotations:1.9
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.2
|
||||
com.google.cloud.bigdataoss:util:2.2.2
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.23.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.23.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.4
|
||||
com.google.cloud.bigdataoss:util:2.2.4
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.25.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.25.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:2.1.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.2.1
|
||||
com.google.cloud:google-cloud-bigquery:2.1.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.1.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.8.1
|
||||
com.google.cloud:google-cloud-bigtable:1.27.1
|
||||
com.google.cloud:google-cloud-core-grpc:2.1.0
|
||||
com.google.cloud:google-cloud-core-http:2.1.0
|
||||
com.google.cloud:google-cloud-core:2.1.0
|
||||
com.google.cloud:google-cloud-firestore:3.0.2
|
||||
com.google.cloud:google-cloud-pubsub:1.114.2
|
||||
com.google.cloud:google-cloud-pubsublite:1.2.0
|
||||
com.google.cloud:google-cloud-core-grpc:2.3.5
|
||||
com.google.cloud:google-cloud-core-http:1.95.4
|
||||
com.google.cloud:google-cloud-core:2.3.5
|
||||
com.google.cloud:google-cloud-firestore:3.0.10
|
||||
com.google.cloud:google-cloud-pubsub:1.115.1
|
||||
com.google.cloud:google-cloud-pubsublite:1.4.8
|
||||
com.google.cloud:google-cloud-secretmanager:1.4.0
|
||||
com.google.cloud:google-cloud-spanner:6.12.1
|
||||
com.google.cloud:google-cloud-spanner:6.17.4
|
||||
com.google.cloud:google-cloud-storage:1.113.12
|
||||
com.google.cloud:google-cloud-tasks:1.33.2
|
||||
com.google.cloud:grpc-gcp:1.1.0
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.2
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.10
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.8
|
||||
com.google.code.gson:gson:2.8.9
|
||||
com.google.common.html.types:types:1.0.6
|
||||
com.google.dagger:dagger:2.33
|
||||
com.google.errorprone:error_prone_annotations:2.9.0
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
com.google.escapevelocity:escapevelocity:0.9.1
|
||||
com.google.flatbuffers:flatbuffers-java:1.12.0
|
||||
com.google.flogger:flogger-system-backend:0.6
|
||||
com.google.flogger:flogger:0.7.3
|
||||
com.google.flogger:google-extensions:0.6
|
||||
com.google.flogger:flogger-system-backend:0.7.4
|
||||
com.google.flogger:flogger:0.7.4
|
||||
com.google.flogger:google-extensions:0.7.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.1.1-jre
|
||||
com.google.guava:guava:31.0.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.39.2
|
||||
com.google.http-client:google-http-client-apache-v2:1.40.1
|
||||
com.google.http-client:google-http-client-appengine:1.39.2
|
||||
com.google.http-client:google-http-client-gson:1.40.0
|
||||
com.google.http-client:google-http-client-jackson2:1.39.2
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.40.0
|
||||
com.google.http-client:google-http-client-gson:1.41.0
|
||||
com.google.http-client:google-http-client-jackson2:1.41.0
|
||||
com.google.http-client:google-http-client-protobuf:1.40.1
|
||||
com.google.http-client:google-http-client:1.41.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -143,9 +145,9 @@ com.google.oauth-client:google-oauth-client-appengine:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.31.4
|
||||
com.google.oauth-client:google-oauth-client:1.31.5
|
||||
com.google.protobuf:protobuf-java-util:3.17.3
|
||||
com.google.protobuf:protobuf-java:3.17.3
|
||||
com.google.oauth-client:google-oauth-client:1.32.1
|
||||
com.google.protobuf:protobuf-java-util:3.19.2
|
||||
com.google.protobuf:protobuf-java:3.19.2
|
||||
com.google.re2j:re2j:1.6
|
||||
com.google.template:soy:2021-02-01
|
||||
com.googlecode.charts4j:charts4j:1.3
|
||||
@@ -165,31 +167,34 @@ io.confluent:kafka-avro-serializer:5.3.2
|
||||
io.confluent:kafka-schema-registry-client:5.3.2
|
||||
io.dropwizard.metrics:metrics-core:3.1.2
|
||||
io.github.classgraph:classgraph:4.8.104
|
||||
io.grpc:grpc-alts:1.40.1
|
||||
io.grpc:grpc-api:1.40.1
|
||||
io.grpc:grpc-auth:1.40.1
|
||||
io.grpc:grpc-context:1.40.1
|
||||
io.grpc:grpc-core:1.40.1
|
||||
io.grpc:grpc-grpclb:1.40.1
|
||||
io.grpc:grpc-netty-shaded:1.40.1
|
||||
io.grpc:grpc-netty:1.40.0
|
||||
io.grpc:grpc-protobuf-lite:1.40.1
|
||||
io.grpc:grpc-protobuf:1.40.1
|
||||
io.grpc:grpc-stub:1.40.1
|
||||
io.netty:netty-buffer:4.1.52.Final
|
||||
io.netty:netty-codec-http2:4.1.52.Final
|
||||
io.netty:netty-codec-http:4.1.52.Final
|
||||
io.netty:netty-codec-socks:4.1.52.Final
|
||||
io.netty:netty-codec:4.1.52.Final
|
||||
io.netty:netty-common:4.1.52.Final
|
||||
io.netty:netty-handler-proxy:4.1.52.Final
|
||||
io.netty:netty-handler:4.1.52.Final
|
||||
io.netty:netty-resolver:4.1.52.Final
|
||||
io.grpc:grpc-alts:1.43.2
|
||||
io.grpc:grpc-api:1.43.2
|
||||
io.grpc:grpc-auth:1.43.2
|
||||
io.grpc:grpc-context:1.43.2
|
||||
io.grpc:grpc-core:1.43.2
|
||||
io.grpc:grpc-grpclb:1.43.2
|
||||
io.grpc:grpc-netty-shaded:1.43.2
|
||||
io.grpc:grpc-netty:1.43.2
|
||||
io.grpc:grpc-protobuf-lite:1.43.2
|
||||
io.grpc:grpc-protobuf:1.43.2
|
||||
io.grpc:grpc-services:1.43.2
|
||||
io.grpc:grpc-stub:1.43.2
|
||||
io.grpc:grpc-xds:1.43.2
|
||||
io.netty:netty-buffer:4.1.63.Final
|
||||
io.netty:netty-codec-http2:4.1.63.Final
|
||||
io.netty:netty-codec-http:4.1.63.Final
|
||||
io.netty:netty-codec-socks:4.1.63.Final
|
||||
io.netty:netty-codec:4.1.63.Final
|
||||
io.netty:netty-common:4.1.63.Final
|
||||
io.netty:netty-handler-proxy:4.1.63.Final
|
||||
io.netty:netty-handler:4.1.63.Final
|
||||
io.netty:netty-resolver:4.1.63.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.52.Final
|
||||
io.opencensus:opencensus-api:0.28.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.28.0
|
||||
io.netty:netty-transport:4.1.63.Final
|
||||
io.opencensus:opencensus-api:0.30.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.30.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.28.0
|
||||
io.opencensus:opencensus-proto:0.2.0
|
||||
io.perfmark:perfmark-api:0.23.0
|
||||
it.unimi.dsi:fastutil:6.5.16
|
||||
javax.activation:activation:1.1
|
||||
@@ -213,33 +218,33 @@ org.apache.arrow:arrow-format:5.0.0
|
||||
org.apache.arrow:arrow-memory-core:5.0.0
|
||||
org.apache.arrow:arrow-vector:5.0.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.34.0
|
||||
org.apache.beam:beam-model-job-management:2.34.0
|
||||
org.apache.beam:beam-model-pipeline:2.34.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.34.0
|
||||
org.apache.beam:beam-runners-core-java:2.34.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.34.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.34.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.34.0
|
||||
org.apache.beam:beam-model-fn-execution:2.37.0
|
||||
org.apache.beam:beam-model-job-management:2.37.0
|
||||
org.apache.beam:beam-model-pipeline:2.37.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.37.0
|
||||
org.apache.beam:beam-runners-core-java:2.37.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.37.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.37.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.37.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_11_0:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_36_0:0.2
|
||||
org.apache.beam:beam-vendor-grpc-1_43_2:0.1
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-lang3:3.8.1
|
||||
org.apache.httpcomponents:httpclient:4.5.13
|
||||
org.apache.httpcomponents:httpcore:4.4.14
|
||||
org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.apache.httpcomponents:httpcore:4.4.15
|
||||
org.bouncycastle:bcpg-jdk15on:1.67
|
||||
org.bouncycastle:bcpkix-jdk15on:1.67
|
||||
org.bouncycastle:bcprov-jdk15on:1.67
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.18.0
|
||||
org.checkerframework:checker-qual:3.21.0
|
||||
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.20
|
||||
@@ -249,7 +254,7 @@ org.easymock:easymock:3.0
|
||||
org.flywaydb:flyway-core:5.2.4
|
||||
org.glassfish.jaxb:jaxb-runtime:2.3.1
|
||||
org.glassfish.jaxb:txw2:2.3.1
|
||||
org.hamcrest:hamcrest-core:2.1
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.hamcrest:hamcrest:2.1
|
||||
org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
|
||||
org.hibernate:hibernate-core:5.4.23.Final
|
||||
@@ -278,11 +283,11 @@ org.testcontainers:database-commons:1.15.2
|
||||
org.testcontainers:jdbc:1.15.2
|
||||
org.testcontainers:postgresql:1.15.2
|
||||
org.testcontainers:testcontainers:1.15.2
|
||||
org.threeten:threetenbp:1.5.1
|
||||
org.threeten:threetenbp:1.5.2
|
||||
org.tukaani:xz:1.5
|
||||
org.w3c.css:sac:1.3
|
||||
org.xerial.snappy:snappy-java:1.1.8.4
|
||||
org.yaml:snakeyaml:1.27
|
||||
org.yaml:snakeyaml:1.28
|
||||
us.fatehi:schemacrawler-api:16.10.1
|
||||
us.fatehi:schemacrawler-diagram:16.10.1
|
||||
us.fatehi:schemacrawler-tools:16.10.1
|
||||
|
||||
@@ -7,12 +7,13 @@ 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.12.4
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.4
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.12.4
|
||||
com.fasterxml.jackson:jackson-bom:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-core:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-databind:2.13.0
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.13.0
|
||||
com.fasterxml.jackson:jackson-bom:2.13.0
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.ben-manes.caffeine:caffeine:2.9.3
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
com.github.docker-java:docker-java-transport:3.2.7
|
||||
@@ -25,113 +26,114 @@ com.github.jnr:jnr-posix:3.1.4
|
||||
com.github.jnr:jnr-unixsocket:0.38.5
|
||||
com.github.jnr:jnr-x86asm:1.0.2
|
||||
com.google.api-client:google-api-client-appengine:1.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.32.2
|
||||
com.google.api-client:google-api-client-java6:1.31.3
|
||||
com.google.api-client:google-api-client-servlet:1.31.3
|
||||
com.google.api-client:google-api-client:1.32.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api-client:google-api-client:1.32.2
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-common-protos:2.3.2
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.91.3
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:grpc-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.93.2
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.10
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2:1.33.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.89.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.89.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.5.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.1.0
|
||||
com.google.api:api-common:2.0.2
|
||||
com.google.api:gax-grpc:2.4.1
|
||||
com.google.api:gax-httpjson:0.88.0
|
||||
com.google.api:gax:2.4.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.2.0
|
||||
com.google.api:api-common:2.1.2
|
||||
com.google.api:gax-grpc:2.8.1
|
||||
com.google.api:gax-httpjson:0.93.1
|
||||
com.google.api:gax:2.8.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev118-1.25.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev130-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20211129-1.32.1
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev108-1.25.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20210815-1.32.1
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20211017-1.32.1
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20210818-1.32.1
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev99-1.25.0
|
||||
com.google.apis:google-api-services-drive:v2-rev393-1.25.0
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev82-1.25.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20210806-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.31.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20211016-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1
|
||||
com.google.apis:google-api-services-monitoring:v3-rev540-1.25.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20210809-1.32.1
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1
|
||||
com.google.apis:google-api-services-sheets:v4-rev612-1.25.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20210119-1.31.0
|
||||
com.google.apis:google-api-services-storage:v1-rev20210127-1.32.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20211201-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:1.9.86
|
||||
com.google.appengine:appengine-remote-api:1.9.86
|
||||
com.google.appengine:appengine-testing:1.9.86
|
||||
com.google.auth:google-auth-library-credentials:1.1.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.1.0
|
||||
com.google.auth:google-auth-library-credentials:1.3.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.3.0
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.8.2
|
||||
com.google.auto.value:auto-value-annotations:1.9
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.2
|
||||
com.google.cloud.bigdataoss:util:2.2.2
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.23.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.23.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.4
|
||||
com.google.cloud.bigdataoss:util:2.2.4
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.25.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.25.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:2.1.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.2.1
|
||||
com.google.cloud:google-cloud-bigquery:2.1.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.1.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.8.1
|
||||
com.google.cloud:google-cloud-bigtable:1.27.1
|
||||
com.google.cloud:google-cloud-core-grpc:2.1.0
|
||||
com.google.cloud:google-cloud-core-http:2.1.0
|
||||
com.google.cloud:google-cloud-core:2.1.0
|
||||
com.google.cloud:google-cloud-firestore:3.0.2
|
||||
com.google.cloud:google-cloud-pubsub:1.114.2
|
||||
com.google.cloud:google-cloud-pubsublite:1.2.0
|
||||
com.google.cloud:google-cloud-core-grpc:2.3.5
|
||||
com.google.cloud:google-cloud-core-http:1.95.4
|
||||
com.google.cloud:google-cloud-core:2.3.5
|
||||
com.google.cloud:google-cloud-firestore:3.0.10
|
||||
com.google.cloud:google-cloud-pubsub:1.115.1
|
||||
com.google.cloud:google-cloud-pubsublite:1.4.8
|
||||
com.google.cloud:google-cloud-secretmanager:1.4.0
|
||||
com.google.cloud:google-cloud-spanner:6.12.1
|
||||
com.google.cloud:google-cloud-spanner:6.17.4
|
||||
com.google.cloud:google-cloud-storage:1.113.12
|
||||
com.google.cloud:google-cloud-tasks:1.33.2
|
||||
com.google.cloud:grpc-gcp:1.1.0
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.2
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.10
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.8
|
||||
com.google.code.gson:gson:2.8.9
|
||||
com.google.common.html.types:types:1.0.6
|
||||
com.google.dagger:dagger:2.33
|
||||
com.google.errorprone:error_prone_annotations:2.9.0
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
com.google.escapevelocity:escapevelocity:0.9.1
|
||||
com.google.flatbuffers:flatbuffers-java:1.12.0
|
||||
com.google.flogger:flogger-system-backend:0.6
|
||||
com.google.flogger:flogger:0.7.3
|
||||
com.google.flogger:google-extensions:0.6
|
||||
com.google.flogger:flogger-system-backend:0.7.4
|
||||
com.google.flogger:flogger:0.7.4
|
||||
com.google.flogger:google-extensions:0.7.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.1.1-jre
|
||||
com.google.guava:guava:31.0.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.39.2
|
||||
com.google.http-client:google-http-client-apache-v2:1.40.1
|
||||
com.google.http-client:google-http-client-appengine:1.39.2
|
||||
com.google.http-client:google-http-client-gson:1.40.0
|
||||
com.google.http-client:google-http-client-jackson2:1.39.2
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.40.0
|
||||
com.google.http-client:google-http-client-gson:1.41.0
|
||||
com.google.http-client:google-http-client-jackson2:1.41.0
|
||||
com.google.http-client:google-http-client-protobuf:1.40.1
|
||||
com.google.http-client:google-http-client:1.41.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -142,9 +144,9 @@ com.google.oauth-client:google-oauth-client-appengine:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.31.4
|
||||
com.google.oauth-client:google-oauth-client:1.31.5
|
||||
com.google.protobuf:protobuf-java-util:3.17.3
|
||||
com.google.protobuf:protobuf-java:3.17.3
|
||||
com.google.oauth-client:google-oauth-client:1.32.1
|
||||
com.google.protobuf:protobuf-java-util:3.19.2
|
||||
com.google.protobuf:protobuf-java:3.19.2
|
||||
com.google.re2j:re2j:1.6
|
||||
com.google.template:soy:2021-02-01
|
||||
com.googlecode.charts4j:charts4j:1.3
|
||||
@@ -164,28 +166,28 @@ io.confluent:kafka-avro-serializer:5.3.2
|
||||
io.confluent:kafka-schema-registry-client:5.3.2
|
||||
io.dropwizard.metrics:metrics-core:3.1.2
|
||||
io.github.classgraph:classgraph:4.8.104
|
||||
io.grpc:grpc-alts:1.40.1
|
||||
io.grpc:grpc-api:1.40.1
|
||||
io.grpc:grpc-auth:1.40.1
|
||||
io.grpc:grpc-context:1.40.1
|
||||
io.grpc:grpc-core:1.40.1
|
||||
io.grpc:grpc-grpclb:1.40.1
|
||||
io.grpc:grpc-netty-shaded:1.40.1
|
||||
io.grpc:grpc-netty:1.40.0
|
||||
io.grpc:grpc-protobuf-lite:1.40.1
|
||||
io.grpc:grpc-protobuf:1.40.1
|
||||
io.grpc:grpc-stub:1.40.1
|
||||
io.netty:netty-buffer:4.1.52.Final
|
||||
io.netty:netty-codec-http2:4.1.52.Final
|
||||
io.netty:netty-codec-http:4.1.52.Final
|
||||
io.netty:netty-codec:4.1.52.Final
|
||||
io.netty:netty-common:4.1.52.Final
|
||||
io.netty:netty-handler:4.1.52.Final
|
||||
io.netty:netty-resolver:4.1.52.Final
|
||||
io.grpc:grpc-alts:1.43.2
|
||||
io.grpc:grpc-api:1.43.2
|
||||
io.grpc:grpc-auth:1.43.2
|
||||
io.grpc:grpc-context:1.43.2
|
||||
io.grpc:grpc-core:1.43.2
|
||||
io.grpc:grpc-grpclb:1.43.2
|
||||
io.grpc:grpc-netty-shaded:1.43.2
|
||||
io.grpc:grpc-netty:1.43.2
|
||||
io.grpc:grpc-protobuf-lite:1.43.2
|
||||
io.grpc:grpc-protobuf:1.43.2
|
||||
io.grpc:grpc-stub:1.43.2
|
||||
io.netty:netty-buffer:4.1.63.Final
|
||||
io.netty:netty-codec-http2:4.1.63.Final
|
||||
io.netty:netty-codec-http:4.1.63.Final
|
||||
io.netty:netty-codec:4.1.63.Final
|
||||
io.netty:netty-common:4.1.63.Final
|
||||
io.netty:netty-handler:4.1.63.Final
|
||||
io.netty:netty-resolver:4.1.63.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.52.Final
|
||||
io.opencensus:opencensus-api:0.28.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.28.0
|
||||
io.netty:netty-transport:4.1.63.Final
|
||||
io.opencensus:opencensus-api:0.30.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.30.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.28.0
|
||||
it.unimi.dsi:fastutil:6.5.16
|
||||
javax.activation:activation:1.1
|
||||
@@ -209,33 +211,33 @@ org.apache.arrow:arrow-format:5.0.0
|
||||
org.apache.arrow:arrow-memory-core:5.0.0
|
||||
org.apache.arrow:arrow-vector:5.0.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.34.0
|
||||
org.apache.beam:beam-model-job-management:2.34.0
|
||||
org.apache.beam:beam-model-pipeline:2.34.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.34.0
|
||||
org.apache.beam:beam-runners-core-java:2.34.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.34.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.34.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.34.0
|
||||
org.apache.beam:beam-model-fn-execution:2.37.0
|
||||
org.apache.beam:beam-model-job-management:2.37.0
|
||||
org.apache.beam:beam-model-pipeline:2.37.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.37.0
|
||||
org.apache.beam:beam-runners-core-java:2.37.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.37.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.37.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.37.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_11_0:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_36_0:0.2
|
||||
org.apache.beam:beam-vendor-grpc-1_43_2:0.1
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-lang3:3.8.1
|
||||
org.apache.httpcomponents:httpclient:4.5.13
|
||||
org.apache.httpcomponents:httpcore:4.4.14
|
||||
org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.apache.httpcomponents:httpcore:4.4.15
|
||||
org.bouncycastle:bcpg-jdk15on:1.67
|
||||
org.bouncycastle:bcpkix-jdk15on:1.67
|
||||
org.bouncycastle:bcprov-jdk15on:1.67
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.18.0
|
||||
org.checkerframework:checker-qual:3.21.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
|
||||
@@ -244,7 +246,7 @@ org.easymock:easymock:3.0
|
||||
org.flywaydb:flyway-core:5.2.4
|
||||
org.glassfish.jaxb:jaxb-runtime:2.3.1
|
||||
org.glassfish.jaxb:txw2:2.3.1
|
||||
org.hamcrest:hamcrest-core:2.1
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.hamcrest:hamcrest:2.1
|
||||
org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
|
||||
org.hibernate:hibernate-core:5.4.23.Final
|
||||
@@ -273,11 +275,11 @@ org.testcontainers:database-commons:1.15.2
|
||||
org.testcontainers:jdbc:1.15.2
|
||||
org.testcontainers:postgresql:1.15.2
|
||||
org.testcontainers:testcontainers:1.15.2
|
||||
org.threeten:threetenbp:1.5.1
|
||||
org.threeten:threetenbp:1.5.2
|
||||
org.tukaani:xz:1.5
|
||||
org.w3c.css:sac:1.3
|
||||
org.xerial.snappy:snappy-java:1.1.8.4
|
||||
org.yaml:snakeyaml:1.27
|
||||
org.yaml:snakeyaml:1.28
|
||||
us.fatehi:schemacrawler-api:16.10.1
|
||||
us.fatehi:schemacrawler-diagram:16.10.1
|
||||
us.fatehi:schemacrawler-tools:16.10.1
|
||||
|
||||
@@ -11,12 +11,13 @@ com.eclipsesource.j2v8:j2v8_linux_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_macosx_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86_64:4.6.0
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.4
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.12.4
|
||||
com.fasterxml.jackson:jackson-bom:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-core:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-databind:2.13.0
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.13.0
|
||||
com.fasterxml.jackson:jackson-bom:2.13.0
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.ben-manes.caffeine:caffeine:2.9.3
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
com.github.docker-java:docker-java-transport:3.2.7
|
||||
@@ -30,113 +31,114 @@ com.github.jnr:jnr-unixsocket:0.38.5
|
||||
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.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.32.2
|
||||
com.google.api-client:google-api-client-java6:1.31.3
|
||||
com.google.api-client:google-api-client-servlet:1.31.3
|
||||
com.google.api-client:google-api-client:1.32.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api-client:google-api-client:1.32.2
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-common-protos:2.3.2
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.91.3
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:grpc-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.93.2
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.10
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2:1.33.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.89.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.89.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.5.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.1.0
|
||||
com.google.api:api-common:2.0.2
|
||||
com.google.api:gax-grpc:2.4.1
|
||||
com.google.api:gax-httpjson:0.88.0
|
||||
com.google.api:gax:2.4.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.2.0
|
||||
com.google.api:api-common:2.1.2
|
||||
com.google.api:gax-grpc:2.8.1
|
||||
com.google.api:gax-httpjson:0.93.1
|
||||
com.google.api:gax:2.8.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev118-1.25.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev130-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20211129-1.32.1
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev108-1.25.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20210815-1.32.1
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20211017-1.32.1
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20210818-1.32.1
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev99-1.25.0
|
||||
com.google.apis:google-api-services-drive:v2-rev393-1.25.0
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev82-1.25.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20210806-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.31.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20211016-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1
|
||||
com.google.apis:google-api-services-monitoring:v3-rev540-1.25.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20210809-1.32.1
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1
|
||||
com.google.apis:google-api-services-sheets:v4-rev612-1.25.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20210119-1.31.0
|
||||
com.google.apis:google-api-services-storage:v1-rev20210127-1.32.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20211201-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:1.9.86
|
||||
com.google.appengine:appengine-remote-api:1.9.86
|
||||
com.google.appengine:appengine-testing:1.9.86
|
||||
com.google.auth:google-auth-library-credentials:1.1.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.1.0
|
||||
com.google.auth:google-auth-library-credentials:1.3.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.3.0
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.8.2
|
||||
com.google.auto.value:auto-value-annotations:1.9
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.2
|
||||
com.google.cloud.bigdataoss:util:2.2.2
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.23.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.23.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.4
|
||||
com.google.cloud.bigdataoss:util:2.2.4
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.25.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.25.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:2.1.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.2.1
|
||||
com.google.cloud:google-cloud-bigquery:2.1.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.1.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.8.1
|
||||
com.google.cloud:google-cloud-bigtable:1.27.1
|
||||
com.google.cloud:google-cloud-core-grpc:2.1.0
|
||||
com.google.cloud:google-cloud-core-http:2.1.0
|
||||
com.google.cloud:google-cloud-core:2.1.0
|
||||
com.google.cloud:google-cloud-firestore:3.0.2
|
||||
com.google.cloud:google-cloud-pubsub:1.114.2
|
||||
com.google.cloud:google-cloud-pubsublite:1.2.0
|
||||
com.google.cloud:google-cloud-core-grpc:2.3.5
|
||||
com.google.cloud:google-cloud-core-http:1.95.4
|
||||
com.google.cloud:google-cloud-core:2.3.5
|
||||
com.google.cloud:google-cloud-firestore:3.0.10
|
||||
com.google.cloud:google-cloud-pubsub:1.115.1
|
||||
com.google.cloud:google-cloud-pubsublite:1.4.8
|
||||
com.google.cloud:google-cloud-secretmanager:1.4.0
|
||||
com.google.cloud:google-cloud-spanner:6.12.1
|
||||
com.google.cloud:google-cloud-spanner:6.17.4
|
||||
com.google.cloud:google-cloud-storage:1.113.12
|
||||
com.google.cloud:google-cloud-tasks:1.33.2
|
||||
com.google.cloud:grpc-gcp:1.1.0
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.2
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.10
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.8
|
||||
com.google.code.gson:gson:2.8.9
|
||||
com.google.common.html.types:types:1.0.6
|
||||
com.google.dagger:dagger:2.33
|
||||
com.google.errorprone:error_prone_annotations:2.9.0
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
com.google.escapevelocity:escapevelocity:0.9.1
|
||||
com.google.flatbuffers:flatbuffers-java:1.12.0
|
||||
com.google.flogger:flogger-system-backend:0.7.3
|
||||
com.google.flogger:flogger:0.7.3
|
||||
com.google.flogger:google-extensions:0.6
|
||||
com.google.flogger:flogger-system-backend:0.7.4
|
||||
com.google.flogger:flogger:0.7.4
|
||||
com.google.flogger:google-extensions:0.7.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.1.1-jre
|
||||
com.google.guava:guava:31.0.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.39.2
|
||||
com.google.http-client:google-http-client-apache-v2:1.40.1
|
||||
com.google.http-client:google-http-client-appengine:1.39.2
|
||||
com.google.http-client:google-http-client-gson:1.40.0
|
||||
com.google.http-client:google-http-client-jackson2:1.39.2
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.40.0
|
||||
com.google.http-client:google-http-client-gson:1.41.0
|
||||
com.google.http-client:google-http-client-jackson2:1.41.0
|
||||
com.google.http-client:google-http-client-protobuf:1.40.1
|
||||
com.google.http-client:google-http-client:1.41.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -147,9 +149,9 @@ com.google.oauth-client:google-oauth-client-appengine:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.31.4
|
||||
com.google.oauth-client:google-oauth-client:1.31.5
|
||||
com.google.protobuf:protobuf-java-util:3.17.3
|
||||
com.google.protobuf:protobuf-java:3.17.3
|
||||
com.google.oauth-client:google-oauth-client:1.32.1
|
||||
com.google.protobuf:protobuf-java-util:3.19.2
|
||||
com.google.protobuf:protobuf-java:3.19.2
|
||||
com.google.re2j:re2j:1.6
|
||||
com.google.template:soy:2021-02-01
|
||||
com.googlecode.charts4j:charts4j:1.3
|
||||
@@ -172,31 +174,34 @@ io.confluent:kafka-avro-serializer:5.3.2
|
||||
io.confluent:kafka-schema-registry-client:5.3.2
|
||||
io.dropwizard.metrics:metrics-core:3.1.2
|
||||
io.github.classgraph:classgraph:4.8.104
|
||||
io.grpc:grpc-alts:1.40.1
|
||||
io.grpc:grpc-api:1.40.1
|
||||
io.grpc:grpc-auth:1.40.1
|
||||
io.grpc:grpc-context:1.40.1
|
||||
io.grpc:grpc-core:1.40.1
|
||||
io.grpc:grpc-grpclb:1.40.1
|
||||
io.grpc:grpc-netty-shaded:1.40.1
|
||||
io.grpc:grpc-netty:1.40.0
|
||||
io.grpc:grpc-protobuf-lite:1.40.1
|
||||
io.grpc:grpc-protobuf:1.40.1
|
||||
io.grpc:grpc-stub:1.40.1
|
||||
io.netty:netty-buffer:4.1.52.Final
|
||||
io.netty:netty-codec-http2:4.1.52.Final
|
||||
io.netty:netty-codec-http:4.1.52.Final
|
||||
io.netty:netty-codec-socks:4.1.52.Final
|
||||
io.netty:netty-codec:4.1.52.Final
|
||||
io.netty:netty-common:4.1.52.Final
|
||||
io.netty:netty-handler-proxy:4.1.52.Final
|
||||
io.netty:netty-handler:4.1.52.Final
|
||||
io.netty:netty-resolver:4.1.52.Final
|
||||
io.grpc:grpc-alts:1.43.2
|
||||
io.grpc:grpc-api:1.43.2
|
||||
io.grpc:grpc-auth:1.43.2
|
||||
io.grpc:grpc-context:1.43.2
|
||||
io.grpc:grpc-core:1.43.2
|
||||
io.grpc:grpc-grpclb:1.43.2
|
||||
io.grpc:grpc-netty-shaded:1.43.2
|
||||
io.grpc:grpc-netty:1.43.2
|
||||
io.grpc:grpc-protobuf-lite:1.43.2
|
||||
io.grpc:grpc-protobuf:1.43.2
|
||||
io.grpc:grpc-services:1.43.2
|
||||
io.grpc:grpc-stub:1.43.2
|
||||
io.grpc:grpc-xds:1.43.2
|
||||
io.netty:netty-buffer:4.1.63.Final
|
||||
io.netty:netty-codec-http2:4.1.63.Final
|
||||
io.netty:netty-codec-http:4.1.63.Final
|
||||
io.netty:netty-codec-socks:4.1.63.Final
|
||||
io.netty:netty-codec:4.1.63.Final
|
||||
io.netty:netty-common:4.1.63.Final
|
||||
io.netty:netty-handler-proxy:4.1.63.Final
|
||||
io.netty:netty-handler:4.1.63.Final
|
||||
io.netty:netty-resolver:4.1.63.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.52.Final
|
||||
io.opencensus:opencensus-api:0.28.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.28.0
|
||||
io.netty:netty-transport:4.1.63.Final
|
||||
io.opencensus:opencensus-api:0.30.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.30.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.28.0
|
||||
io.opencensus:opencensus-proto:0.2.0
|
||||
io.perfmark:perfmark-api:0.23.0
|
||||
it.unimi.dsi:fastutil:6.5.16
|
||||
javax.activation:activation:1.1
|
||||
@@ -221,34 +226,34 @@ org.apache.arrow:arrow-format:5.0.0
|
||||
org.apache.arrow:arrow-memory-core:5.0.0
|
||||
org.apache.arrow:arrow-vector:5.0.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.34.0
|
||||
org.apache.beam:beam-model-job-management:2.34.0
|
||||
org.apache.beam:beam-model-pipeline:2.34.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.34.0
|
||||
org.apache.beam:beam-runners-core-java:2.34.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.34.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.34.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.34.0
|
||||
org.apache.beam:beam-model-fn-execution:2.37.0
|
||||
org.apache.beam:beam-model-job-management:2.37.0
|
||||
org.apache.beam:beam-model-pipeline:2.37.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.37.0
|
||||
org.apache.beam:beam-runners-core-java:2.37.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.37.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.37.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.37.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_11_0:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_36_0:0.2
|
||||
org.apache.beam:beam-vendor-grpc-1_43_2:0.1
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-exec:1.3
|
||||
org.apache.commons:commons-lang3:3.8.1
|
||||
org.apache.httpcomponents:httpclient:4.5.13
|
||||
org.apache.httpcomponents:httpcore:4.4.14
|
||||
org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.apache.httpcomponents:httpcore:4.4.15
|
||||
org.bouncycastle:bcpg-jdk15on:1.67
|
||||
org.bouncycastle:bcpkix-jdk15on:1.67
|
||||
org.bouncycastle:bcprov-jdk15on:1.67
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.18.0
|
||||
org.checkerframework:checker-qual:3.21.0
|
||||
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.20
|
||||
@@ -258,7 +263,7 @@ org.easymock:easymock:3.0
|
||||
org.flywaydb:flyway-core:5.2.4
|
||||
org.glassfish.jaxb:jaxb-runtime:2.3.1
|
||||
org.glassfish.jaxb:txw2:2.3.1
|
||||
org.hamcrest:hamcrest-core:2.1
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.hamcrest:hamcrest:2.1
|
||||
org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
|
||||
org.hibernate:hibernate-core:5.4.23.Final
|
||||
@@ -289,12 +294,12 @@ org.testcontainers:database-commons:1.15.2
|
||||
org.testcontainers:jdbc:1.15.2
|
||||
org.testcontainers:postgresql:1.15.2
|
||||
org.testcontainers:testcontainers:1.15.2
|
||||
org.threeten:threetenbp:1.5.1
|
||||
org.threeten:threetenbp:1.5.2
|
||||
org.tukaani:xz:1.5
|
||||
org.w3c.css:sac:1.3
|
||||
org.webjars.npm:viz.js-for-graphviz-java:2.1.3
|
||||
org.xerial.snappy:snappy-java:1.1.8.4
|
||||
org.yaml:snakeyaml:1.27
|
||||
org.yaml:snakeyaml:1.28
|
||||
us.fatehi:schemacrawler-api:16.10.1
|
||||
us.fatehi:schemacrawler-diagram:16.10.1
|
||||
us.fatehi:schemacrawler-tools:16.10.1
|
||||
|
||||
@@ -11,12 +11,13 @@ com.eclipsesource.j2v8:j2v8_linux_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_macosx_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86_64:4.6.0
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.4
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.12.4
|
||||
com.fasterxml.jackson:jackson-bom:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-core:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-databind:2.13.0
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.13.0
|
||||
com.fasterxml.jackson:jackson-bom:2.13.0
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.ben-manes.caffeine:caffeine:2.9.3
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
com.github.docker-java:docker-java-transport:3.2.7
|
||||
@@ -30,113 +31,114 @@ com.github.jnr:jnr-unixsocket:0.38.5
|
||||
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.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.32.2
|
||||
com.google.api-client:google-api-client-java6:1.31.3
|
||||
com.google.api-client:google-api-client-servlet:1.31.3
|
||||
com.google.api-client:google-api-client:1.32.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api-client:google-api-client:1.32.2
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-common-protos:2.3.2
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.91.3
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:grpc-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.93.2
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.10
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2:1.33.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.89.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.89.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.5.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.1.0
|
||||
com.google.api:api-common:2.0.2
|
||||
com.google.api:gax-grpc:2.4.1
|
||||
com.google.api:gax-httpjson:0.88.0
|
||||
com.google.api:gax:2.4.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.2.0
|
||||
com.google.api:api-common:2.1.2
|
||||
com.google.api:gax-grpc:2.8.1
|
||||
com.google.api:gax-httpjson:0.93.1
|
||||
com.google.api:gax:2.8.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev118-1.25.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev130-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20211129-1.32.1
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev108-1.25.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20210815-1.32.1
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20211017-1.32.1
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20210818-1.32.1
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev99-1.25.0
|
||||
com.google.apis:google-api-services-drive:v2-rev393-1.25.0
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev82-1.25.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20210806-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.31.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20211016-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1
|
||||
com.google.apis:google-api-services-monitoring:v3-rev540-1.25.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20210809-1.32.1
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1
|
||||
com.google.apis:google-api-services-sheets:v4-rev612-1.25.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20210119-1.31.0
|
||||
com.google.apis:google-api-services-storage:v1-rev20210127-1.32.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20211201-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:1.9.86
|
||||
com.google.appengine:appengine-remote-api:1.9.86
|
||||
com.google.appengine:appengine-testing:1.9.86
|
||||
com.google.auth:google-auth-library-credentials:1.1.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.1.0
|
||||
com.google.auth:google-auth-library-credentials:1.3.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.3.0
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.8.2
|
||||
com.google.auto.value:auto-value-annotations:1.9
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.2
|
||||
com.google.cloud.bigdataoss:util:2.2.2
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.23.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.23.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.4
|
||||
com.google.cloud.bigdataoss:util:2.2.4
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.25.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.25.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:2.1.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.2.1
|
||||
com.google.cloud:google-cloud-bigquery:2.1.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.1.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.8.1
|
||||
com.google.cloud:google-cloud-bigtable:1.27.1
|
||||
com.google.cloud:google-cloud-core-grpc:2.1.0
|
||||
com.google.cloud:google-cloud-core-http:2.1.0
|
||||
com.google.cloud:google-cloud-core:2.1.0
|
||||
com.google.cloud:google-cloud-firestore:3.0.2
|
||||
com.google.cloud:google-cloud-pubsub:1.114.2
|
||||
com.google.cloud:google-cloud-pubsublite:1.2.0
|
||||
com.google.cloud:google-cloud-core-grpc:2.3.5
|
||||
com.google.cloud:google-cloud-core-http:1.95.4
|
||||
com.google.cloud:google-cloud-core:2.3.5
|
||||
com.google.cloud:google-cloud-firestore:3.0.10
|
||||
com.google.cloud:google-cloud-pubsub:1.115.1
|
||||
com.google.cloud:google-cloud-pubsublite:1.4.8
|
||||
com.google.cloud:google-cloud-secretmanager:1.4.0
|
||||
com.google.cloud:google-cloud-spanner:6.12.1
|
||||
com.google.cloud:google-cloud-spanner:6.17.4
|
||||
com.google.cloud:google-cloud-storage:1.113.12
|
||||
com.google.cloud:google-cloud-tasks:1.33.2
|
||||
com.google.cloud:grpc-gcp:1.1.0
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.2
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.10
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.8
|
||||
com.google.code.gson:gson:2.8.9
|
||||
com.google.common.html.types:types:1.0.6
|
||||
com.google.dagger:dagger:2.33
|
||||
com.google.errorprone:error_prone_annotations:2.9.0
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
com.google.escapevelocity:escapevelocity:0.9.1
|
||||
com.google.flatbuffers:flatbuffers-java:1.12.0
|
||||
com.google.flogger:flogger-system-backend:0.7.3
|
||||
com.google.flogger:flogger:0.7.3
|
||||
com.google.flogger:google-extensions:0.6
|
||||
com.google.flogger:flogger-system-backend:0.7.4
|
||||
com.google.flogger:flogger:0.7.4
|
||||
com.google.flogger:google-extensions:0.7.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.1.1-jre
|
||||
com.google.guava:guava:31.0.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.39.2
|
||||
com.google.http-client:google-http-client-apache-v2:1.40.1
|
||||
com.google.http-client:google-http-client-appengine:1.39.2
|
||||
com.google.http-client:google-http-client-gson:1.40.0
|
||||
com.google.http-client:google-http-client-jackson2:1.39.2
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.40.0
|
||||
com.google.http-client:google-http-client-gson:1.41.0
|
||||
com.google.http-client:google-http-client-jackson2:1.41.0
|
||||
com.google.http-client:google-http-client-protobuf:1.40.1
|
||||
com.google.http-client:google-http-client:1.41.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -147,9 +149,9 @@ com.google.oauth-client:google-oauth-client-appengine:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.31.4
|
||||
com.google.oauth-client:google-oauth-client:1.31.5
|
||||
com.google.protobuf:protobuf-java-util:3.17.3
|
||||
com.google.protobuf:protobuf-java:3.17.3
|
||||
com.google.oauth-client:google-oauth-client:1.32.1
|
||||
com.google.protobuf:protobuf-java-util:3.19.2
|
||||
com.google.protobuf:protobuf-java:3.19.2
|
||||
com.google.re2j:re2j:1.6
|
||||
com.google.template:soy:2021-02-01
|
||||
com.googlecode.charts4j:charts4j:1.3
|
||||
@@ -172,31 +174,34 @@ io.confluent:kafka-avro-serializer:5.3.2
|
||||
io.confluent:kafka-schema-registry-client:5.3.2
|
||||
io.dropwizard.metrics:metrics-core:3.1.2
|
||||
io.github.classgraph:classgraph:4.8.104
|
||||
io.grpc:grpc-alts:1.40.1
|
||||
io.grpc:grpc-api:1.40.1
|
||||
io.grpc:grpc-auth:1.40.1
|
||||
io.grpc:grpc-context:1.40.1
|
||||
io.grpc:grpc-core:1.40.1
|
||||
io.grpc:grpc-grpclb:1.40.1
|
||||
io.grpc:grpc-netty-shaded:1.40.1
|
||||
io.grpc:grpc-netty:1.40.0
|
||||
io.grpc:grpc-protobuf-lite:1.40.1
|
||||
io.grpc:grpc-protobuf:1.40.1
|
||||
io.grpc:grpc-stub:1.40.1
|
||||
io.netty:netty-buffer:4.1.52.Final
|
||||
io.netty:netty-codec-http2:4.1.52.Final
|
||||
io.netty:netty-codec-http:4.1.52.Final
|
||||
io.netty:netty-codec-socks:4.1.52.Final
|
||||
io.netty:netty-codec:4.1.52.Final
|
||||
io.netty:netty-common:4.1.52.Final
|
||||
io.netty:netty-handler-proxy:4.1.52.Final
|
||||
io.netty:netty-handler:4.1.52.Final
|
||||
io.netty:netty-resolver:4.1.52.Final
|
||||
io.grpc:grpc-alts:1.43.2
|
||||
io.grpc:grpc-api:1.43.2
|
||||
io.grpc:grpc-auth:1.43.2
|
||||
io.grpc:grpc-context:1.43.2
|
||||
io.grpc:grpc-core:1.43.2
|
||||
io.grpc:grpc-grpclb:1.43.2
|
||||
io.grpc:grpc-netty-shaded:1.43.2
|
||||
io.grpc:grpc-netty:1.43.2
|
||||
io.grpc:grpc-protobuf-lite:1.43.2
|
||||
io.grpc:grpc-protobuf:1.43.2
|
||||
io.grpc:grpc-services:1.43.2
|
||||
io.grpc:grpc-stub:1.43.2
|
||||
io.grpc:grpc-xds:1.43.2
|
||||
io.netty:netty-buffer:4.1.63.Final
|
||||
io.netty:netty-codec-http2:4.1.63.Final
|
||||
io.netty:netty-codec-http:4.1.63.Final
|
||||
io.netty:netty-codec-socks:4.1.63.Final
|
||||
io.netty:netty-codec:4.1.63.Final
|
||||
io.netty:netty-common:4.1.63.Final
|
||||
io.netty:netty-handler-proxy:4.1.63.Final
|
||||
io.netty:netty-handler:4.1.63.Final
|
||||
io.netty:netty-resolver:4.1.63.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.52.Final
|
||||
io.opencensus:opencensus-api:0.28.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.28.0
|
||||
io.netty:netty-transport:4.1.63.Final
|
||||
io.opencensus:opencensus-api:0.30.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.30.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.28.0
|
||||
io.opencensus:opencensus-proto:0.2.0
|
||||
io.perfmark:perfmark-api:0.23.0
|
||||
it.unimi.dsi:fastutil:6.5.16
|
||||
javax.activation:activation:1.1
|
||||
@@ -221,34 +226,34 @@ org.apache.arrow:arrow-format:5.0.0
|
||||
org.apache.arrow:arrow-memory-core:5.0.0
|
||||
org.apache.arrow:arrow-vector:5.0.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.34.0
|
||||
org.apache.beam:beam-model-job-management:2.34.0
|
||||
org.apache.beam:beam-model-pipeline:2.34.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.34.0
|
||||
org.apache.beam:beam-runners-core-java:2.34.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.34.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.34.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.34.0
|
||||
org.apache.beam:beam-model-fn-execution:2.37.0
|
||||
org.apache.beam:beam-model-job-management:2.37.0
|
||||
org.apache.beam:beam-model-pipeline:2.37.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.37.0
|
||||
org.apache.beam:beam-runners-core-java:2.37.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.37.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.37.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.37.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_11_0:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_36_0:0.2
|
||||
org.apache.beam:beam-vendor-grpc-1_43_2:0.1
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-exec:1.3
|
||||
org.apache.commons:commons-lang3:3.8.1
|
||||
org.apache.httpcomponents:httpclient:4.5.13
|
||||
org.apache.httpcomponents:httpcore:4.4.14
|
||||
org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.apache.httpcomponents:httpcore:4.4.15
|
||||
org.bouncycastle:bcpg-jdk15on:1.67
|
||||
org.bouncycastle:bcpkix-jdk15on:1.67
|
||||
org.bouncycastle:bcprov-jdk15on:1.67
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.18.0
|
||||
org.checkerframework:checker-qual:3.21.0
|
||||
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.20
|
||||
@@ -258,7 +263,7 @@ org.easymock:easymock:3.0
|
||||
org.flywaydb:flyway-core:5.2.4
|
||||
org.glassfish.jaxb:jaxb-runtime:2.3.1
|
||||
org.glassfish.jaxb:txw2:2.3.1
|
||||
org.hamcrest:hamcrest-core:2.1
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.hamcrest:hamcrest:2.1
|
||||
org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
|
||||
org.hibernate:hibernate-core:5.4.23.Final
|
||||
@@ -289,12 +294,12 @@ org.testcontainers:database-commons:1.15.2
|
||||
org.testcontainers:jdbc:1.15.2
|
||||
org.testcontainers:postgresql:1.15.2
|
||||
org.testcontainers:testcontainers:1.15.2
|
||||
org.threeten:threetenbp:1.5.1
|
||||
org.threeten:threetenbp:1.5.2
|
||||
org.tukaani:xz:1.5
|
||||
org.w3c.css:sac:1.3
|
||||
org.webjars.npm:viz.js-for-graphviz-java:2.1.3
|
||||
org.xerial.snappy:snappy-java:1.1.8.4
|
||||
org.yaml:snakeyaml:1.27
|
||||
org.yaml:snakeyaml:1.28
|
||||
us.fatehi:schemacrawler-api:16.10.1
|
||||
us.fatehi:schemacrawler-diagram:16.10.1
|
||||
us.fatehi:schemacrawler-tools:16.10.1
|
||||
|
||||
@@ -11,12 +11,13 @@ com.eclipsesource.j2v8:j2v8_linux_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_macosx_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86_64:4.6.0
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.4
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.12.4
|
||||
com.fasterxml.jackson:jackson-bom:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-core:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-databind:2.13.0
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.13.0
|
||||
com.fasterxml.jackson:jackson-bom:2.13.0
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.ben-manes.caffeine:caffeine:2.9.3
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
com.github.docker-java:docker-java-transport:3.2.7
|
||||
@@ -30,113 +31,114 @@ com.github.jnr:jnr-unixsocket:0.38.5
|
||||
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.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.32.2
|
||||
com.google.api-client:google-api-client-java6:1.31.3
|
||||
com.google.api-client:google-api-client-servlet:1.31.3
|
||||
com.google.api-client:google-api-client:1.32.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api-client:google-api-client:1.32.2
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-common-protos:2.3.2
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.91.3
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:grpc-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.93.2
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.10
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2:1.33.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.89.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.89.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.5.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.1.0
|
||||
com.google.api:api-common:2.0.2
|
||||
com.google.api:gax-grpc:2.4.1
|
||||
com.google.api:gax-httpjson:0.88.0
|
||||
com.google.api:gax:2.4.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.2.0
|
||||
com.google.api:api-common:2.1.2
|
||||
com.google.api:gax-grpc:2.8.1
|
||||
com.google.api:gax-httpjson:0.93.1
|
||||
com.google.api:gax:2.8.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev118-1.25.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev130-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20211129-1.32.1
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev108-1.25.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20210815-1.32.1
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20211017-1.32.1
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20210818-1.32.1
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev99-1.25.0
|
||||
com.google.apis:google-api-services-drive:v2-rev393-1.25.0
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev82-1.25.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20210806-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.31.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20211016-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1
|
||||
com.google.apis:google-api-services-monitoring:v3-rev540-1.25.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20210809-1.32.1
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1
|
||||
com.google.apis:google-api-services-sheets:v4-rev612-1.25.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20210119-1.31.0
|
||||
com.google.apis:google-api-services-storage:v1-rev20210127-1.32.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20211201-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:1.9.86
|
||||
com.google.appengine:appengine-remote-api:1.9.86
|
||||
com.google.appengine:appengine-testing:1.9.86
|
||||
com.google.auth:google-auth-library-credentials:1.1.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.1.0
|
||||
com.google.auth:google-auth-library-credentials:1.3.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.3.0
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.8.2
|
||||
com.google.auto.value:auto-value-annotations:1.9
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.2
|
||||
com.google.cloud.bigdataoss:util:2.2.2
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.23.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.23.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.4
|
||||
com.google.cloud.bigdataoss:util:2.2.4
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.25.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.25.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:2.1.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.2.1
|
||||
com.google.cloud:google-cloud-bigquery:2.1.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.1.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.8.1
|
||||
com.google.cloud:google-cloud-bigtable:1.27.1
|
||||
com.google.cloud:google-cloud-core-grpc:2.1.0
|
||||
com.google.cloud:google-cloud-core-http:2.1.0
|
||||
com.google.cloud:google-cloud-core:2.1.0
|
||||
com.google.cloud:google-cloud-firestore:3.0.2
|
||||
com.google.cloud:google-cloud-pubsub:1.114.2
|
||||
com.google.cloud:google-cloud-pubsublite:1.2.0
|
||||
com.google.cloud:google-cloud-core-grpc:2.3.5
|
||||
com.google.cloud:google-cloud-core-http:1.95.4
|
||||
com.google.cloud:google-cloud-core:2.3.5
|
||||
com.google.cloud:google-cloud-firestore:3.0.10
|
||||
com.google.cloud:google-cloud-pubsub:1.115.1
|
||||
com.google.cloud:google-cloud-pubsublite:1.4.8
|
||||
com.google.cloud:google-cloud-secretmanager:1.4.0
|
||||
com.google.cloud:google-cloud-spanner:6.12.1
|
||||
com.google.cloud:google-cloud-spanner:6.17.4
|
||||
com.google.cloud:google-cloud-storage:1.113.12
|
||||
com.google.cloud:google-cloud-tasks:1.33.2
|
||||
com.google.cloud:grpc-gcp:1.1.0
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.2
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.10
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.8
|
||||
com.google.code.gson:gson:2.8.9
|
||||
com.google.common.html.types:types:1.0.6
|
||||
com.google.dagger:dagger:2.33
|
||||
com.google.errorprone:error_prone_annotations:2.9.0
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
com.google.escapevelocity:escapevelocity:0.9.1
|
||||
com.google.flatbuffers:flatbuffers-java:1.12.0
|
||||
com.google.flogger:flogger-system-backend:0.7.3
|
||||
com.google.flogger:flogger:0.7.3
|
||||
com.google.flogger:google-extensions:0.6
|
||||
com.google.flogger:flogger-system-backend:0.7.4
|
||||
com.google.flogger:flogger:0.7.4
|
||||
com.google.flogger:google-extensions:0.7.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.1.1-jre
|
||||
com.google.guava:guava:31.0.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.39.2
|
||||
com.google.http-client:google-http-client-apache-v2:1.40.1
|
||||
com.google.http-client:google-http-client-appengine:1.39.2
|
||||
com.google.http-client:google-http-client-gson:1.40.0
|
||||
com.google.http-client:google-http-client-jackson2:1.39.2
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.40.0
|
||||
com.google.http-client:google-http-client-gson:1.41.0
|
||||
com.google.http-client:google-http-client-jackson2:1.41.0
|
||||
com.google.http-client:google-http-client-protobuf:1.40.1
|
||||
com.google.http-client:google-http-client:1.41.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -147,9 +149,9 @@ com.google.oauth-client:google-oauth-client-appengine:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.31.4
|
||||
com.google.oauth-client:google-oauth-client:1.31.5
|
||||
com.google.protobuf:protobuf-java-util:3.17.3
|
||||
com.google.protobuf:protobuf-java:3.17.3
|
||||
com.google.oauth-client:google-oauth-client:1.32.1
|
||||
com.google.protobuf:protobuf-java-util:3.19.2
|
||||
com.google.protobuf:protobuf-java:3.19.2
|
||||
com.google.re2j:re2j:1.6
|
||||
com.google.template:soy:2021-02-01
|
||||
com.googlecode.charts4j:charts4j:1.3
|
||||
@@ -172,31 +174,34 @@ io.confluent:kafka-avro-serializer:5.3.2
|
||||
io.confluent:kafka-schema-registry-client:5.3.2
|
||||
io.dropwizard.metrics:metrics-core:3.1.2
|
||||
io.github.classgraph:classgraph:4.8.104
|
||||
io.grpc:grpc-alts:1.40.1
|
||||
io.grpc:grpc-api:1.40.1
|
||||
io.grpc:grpc-auth:1.40.1
|
||||
io.grpc:grpc-context:1.40.1
|
||||
io.grpc:grpc-core:1.40.1
|
||||
io.grpc:grpc-grpclb:1.40.1
|
||||
io.grpc:grpc-netty-shaded:1.40.1
|
||||
io.grpc:grpc-netty:1.40.0
|
||||
io.grpc:grpc-protobuf-lite:1.40.1
|
||||
io.grpc:grpc-protobuf:1.40.1
|
||||
io.grpc:grpc-stub:1.40.1
|
||||
io.netty:netty-buffer:4.1.52.Final
|
||||
io.netty:netty-codec-http2:4.1.52.Final
|
||||
io.netty:netty-codec-http:4.1.52.Final
|
||||
io.netty:netty-codec-socks:4.1.52.Final
|
||||
io.netty:netty-codec:4.1.52.Final
|
||||
io.netty:netty-common:4.1.52.Final
|
||||
io.netty:netty-handler-proxy:4.1.52.Final
|
||||
io.netty:netty-handler:4.1.52.Final
|
||||
io.netty:netty-resolver:4.1.52.Final
|
||||
io.grpc:grpc-alts:1.43.2
|
||||
io.grpc:grpc-api:1.43.2
|
||||
io.grpc:grpc-auth:1.43.2
|
||||
io.grpc:grpc-context:1.43.2
|
||||
io.grpc:grpc-core:1.43.2
|
||||
io.grpc:grpc-grpclb:1.43.2
|
||||
io.grpc:grpc-netty-shaded:1.43.2
|
||||
io.grpc:grpc-netty:1.43.2
|
||||
io.grpc:grpc-protobuf-lite:1.43.2
|
||||
io.grpc:grpc-protobuf:1.43.2
|
||||
io.grpc:grpc-services:1.43.2
|
||||
io.grpc:grpc-stub:1.43.2
|
||||
io.grpc:grpc-xds:1.43.2
|
||||
io.netty:netty-buffer:4.1.63.Final
|
||||
io.netty:netty-codec-http2:4.1.63.Final
|
||||
io.netty:netty-codec-http:4.1.63.Final
|
||||
io.netty:netty-codec-socks:4.1.63.Final
|
||||
io.netty:netty-codec:4.1.63.Final
|
||||
io.netty:netty-common:4.1.63.Final
|
||||
io.netty:netty-handler-proxy:4.1.63.Final
|
||||
io.netty:netty-handler:4.1.63.Final
|
||||
io.netty:netty-resolver:4.1.63.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.52.Final
|
||||
io.opencensus:opencensus-api:0.28.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.28.0
|
||||
io.netty:netty-transport:4.1.63.Final
|
||||
io.opencensus:opencensus-api:0.30.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.30.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.28.0
|
||||
io.opencensus:opencensus-proto:0.2.0
|
||||
io.perfmark:perfmark-api:0.23.0
|
||||
it.unimi.dsi:fastutil:6.5.16
|
||||
javax.activation:activation:1.1
|
||||
@@ -221,34 +226,34 @@ org.apache.arrow:arrow-format:5.0.0
|
||||
org.apache.arrow:arrow-memory-core:5.0.0
|
||||
org.apache.arrow:arrow-vector:5.0.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.34.0
|
||||
org.apache.beam:beam-model-job-management:2.34.0
|
||||
org.apache.beam:beam-model-pipeline:2.34.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.34.0
|
||||
org.apache.beam:beam-runners-core-java:2.34.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.34.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.34.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.34.0
|
||||
org.apache.beam:beam-model-fn-execution:2.37.0
|
||||
org.apache.beam:beam-model-job-management:2.37.0
|
||||
org.apache.beam:beam-model-pipeline:2.37.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.37.0
|
||||
org.apache.beam:beam-runners-core-java:2.37.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.37.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.37.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.37.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_11_0:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_36_0:0.2
|
||||
org.apache.beam:beam-vendor-grpc-1_43_2:0.1
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-exec:1.3
|
||||
org.apache.commons:commons-lang3:3.8.1
|
||||
org.apache.httpcomponents:httpclient:4.5.13
|
||||
org.apache.httpcomponents:httpcore:4.4.14
|
||||
org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.apache.httpcomponents:httpcore:4.4.15
|
||||
org.bouncycastle:bcpg-jdk15on:1.67
|
||||
org.bouncycastle:bcpkix-jdk15on:1.67
|
||||
org.bouncycastle:bcprov-jdk15on:1.67
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.18.0
|
||||
org.checkerframework:checker-qual:3.21.0
|
||||
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.20
|
||||
@@ -258,7 +263,7 @@ org.easymock:easymock:3.0
|
||||
org.flywaydb:flyway-core:5.2.4
|
||||
org.glassfish.jaxb:jaxb-runtime:2.3.1
|
||||
org.glassfish.jaxb:txw2:2.3.1
|
||||
org.hamcrest:hamcrest-core:2.1
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.hamcrest:hamcrest:2.1
|
||||
org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
|
||||
org.hibernate:hibernate-core:5.4.23.Final
|
||||
@@ -289,12 +294,12 @@ org.testcontainers:database-commons:1.15.2
|
||||
org.testcontainers:jdbc:1.15.2
|
||||
org.testcontainers:postgresql:1.15.2
|
||||
org.testcontainers:testcontainers:1.15.2
|
||||
org.threeten:threetenbp:1.5.1
|
||||
org.threeten:threetenbp:1.5.2
|
||||
org.tukaani:xz:1.5
|
||||
org.w3c.css:sac:1.3
|
||||
org.webjars.npm:viz.js-for-graphviz-java:2.1.3
|
||||
org.xerial.snappy:snappy-java:1.1.8.4
|
||||
org.yaml:snakeyaml:1.27
|
||||
org.yaml:snakeyaml:1.28
|
||||
us.fatehi:schemacrawler-api:16.10.1
|
||||
us.fatehi:schemacrawler-diagram:16.10.1
|
||||
us.fatehi:schemacrawler-tools:16.10.1
|
||||
|
||||
@@ -11,12 +11,13 @@ com.eclipsesource.j2v8:j2v8_linux_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_macosx_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86_64:4.6.0
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.4
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.12.4
|
||||
com.fasterxml.jackson:jackson-bom:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-core:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-databind:2.13.0
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.13.0
|
||||
com.fasterxml.jackson:jackson-bom:2.13.0
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.ben-manes.caffeine:caffeine:2.9.3
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
com.github.docker-java:docker-java-transport:3.2.7
|
||||
@@ -30,114 +31,115 @@ com.github.jnr:jnr-unixsocket:0.38.5
|
||||
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.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.32.2
|
||||
com.google.api-client:google-api-client-java6:1.31.3
|
||||
com.google.api-client:google-api-client-servlet:1.31.3
|
||||
com.google.api-client:google-api-client:1.32.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api-client:google-api-client:1.32.2
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-common-protos:2.3.2
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.91.3
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:grpc-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.93.2
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.10
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2:1.33.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.89.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.89.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.5.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.1.0
|
||||
com.google.api:api-common:2.0.2
|
||||
com.google.api:gax-grpc:2.4.1
|
||||
com.google.api:gax-httpjson:0.88.0
|
||||
com.google.api:gax:2.4.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.2.0
|
||||
com.google.api:api-common:2.1.2
|
||||
com.google.api:gax-grpc:2.8.1
|
||||
com.google.api:gax-httpjson:0.93.1
|
||||
com.google.api:gax:2.8.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev118-1.25.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev130-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20211129-1.32.1
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev108-1.25.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20210815-1.32.1
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20211017-1.32.1
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20210818-1.32.1
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev99-1.25.0
|
||||
com.google.apis:google-api-services-drive:v2-rev393-1.25.0
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev82-1.25.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20210806-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.31.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20211016-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1
|
||||
com.google.apis:google-api-services-monitoring:v3-rev540-1.25.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20210809-1.32.1
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1
|
||||
com.google.apis:google-api-services-sheets:v4-rev612-1.25.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20210119-1.31.0
|
||||
com.google.apis:google-api-services-storage:v1-rev20210127-1.32.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20211201-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:1.9.86
|
||||
com.google.appengine:appengine-remote-api:1.9.86
|
||||
com.google.appengine:appengine-testing:1.9.86
|
||||
com.google.auth:google-auth-library-credentials:1.1.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.1.0
|
||||
com.google.auth:google-auth-library-credentials:1.3.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.3.0
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.8.2
|
||||
com.google.auto.value:auto-value-annotations:1.9
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.2
|
||||
com.google.cloud.bigdataoss:util:2.2.2
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.23.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.23.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.4
|
||||
com.google.cloud.bigdataoss:util:2.2.4
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.25.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.25.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:2.1.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.2.1
|
||||
com.google.cloud.sql:postgres-socket-factory:1.2.1
|
||||
com.google.cloud:google-cloud-bigquery:2.1.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.1.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.8.1
|
||||
com.google.cloud:google-cloud-bigtable:1.27.1
|
||||
com.google.cloud:google-cloud-core-grpc:2.1.0
|
||||
com.google.cloud:google-cloud-core-http:2.1.0
|
||||
com.google.cloud:google-cloud-core:2.1.0
|
||||
com.google.cloud:google-cloud-firestore:3.0.2
|
||||
com.google.cloud:google-cloud-pubsub:1.114.2
|
||||
com.google.cloud:google-cloud-pubsublite:1.2.0
|
||||
com.google.cloud:google-cloud-core-grpc:2.3.5
|
||||
com.google.cloud:google-cloud-core-http:1.95.4
|
||||
com.google.cloud:google-cloud-core:2.3.5
|
||||
com.google.cloud:google-cloud-firestore:3.0.10
|
||||
com.google.cloud:google-cloud-pubsub:1.115.1
|
||||
com.google.cloud:google-cloud-pubsublite:1.4.8
|
||||
com.google.cloud:google-cloud-secretmanager:1.4.0
|
||||
com.google.cloud:google-cloud-spanner:6.12.1
|
||||
com.google.cloud:google-cloud-spanner:6.17.4
|
||||
com.google.cloud:google-cloud-storage:1.113.12
|
||||
com.google.cloud:google-cloud-tasks:1.33.2
|
||||
com.google.cloud:grpc-gcp:1.1.0
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.2
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.10
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.8
|
||||
com.google.code.gson:gson:2.8.9
|
||||
com.google.common.html.types:types:1.0.6
|
||||
com.google.dagger:dagger:2.33
|
||||
com.google.errorprone:error_prone_annotations:2.9.0
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
com.google.escapevelocity:escapevelocity:0.9.1
|
||||
com.google.flatbuffers:flatbuffers-java:1.12.0
|
||||
com.google.flogger:flogger-system-backend:0.7.3
|
||||
com.google.flogger:flogger:0.7.3
|
||||
com.google.flogger:google-extensions:0.6
|
||||
com.google.flogger:flogger-system-backend:0.7.4
|
||||
com.google.flogger:flogger:0.7.4
|
||||
com.google.flogger:google-extensions:0.7.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.1.1-jre
|
||||
com.google.guava:guava:31.0.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.39.2
|
||||
com.google.http-client:google-http-client-apache-v2:1.40.1
|
||||
com.google.http-client:google-http-client-appengine:1.39.2
|
||||
com.google.http-client:google-http-client-gson:1.40.0
|
||||
com.google.http-client:google-http-client-jackson2:1.39.2
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.40.0
|
||||
com.google.http-client:google-http-client-gson:1.41.0
|
||||
com.google.http-client:google-http-client-jackson2:1.41.0
|
||||
com.google.http-client:google-http-client-protobuf:1.40.1
|
||||
com.google.http-client:google-http-client:1.41.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -148,9 +150,9 @@ com.google.oauth-client:google-oauth-client-appengine:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.31.4
|
||||
com.google.oauth-client:google-oauth-client:1.31.5
|
||||
com.google.protobuf:protobuf-java-util:3.17.3
|
||||
com.google.protobuf:protobuf-java:3.17.3
|
||||
com.google.oauth-client:google-oauth-client:1.32.1
|
||||
com.google.protobuf:protobuf-java-util:3.19.2
|
||||
com.google.protobuf:protobuf-java:3.19.2
|
||||
com.google.re2j:re2j:1.6
|
||||
com.google.template:soy:2021-02-01
|
||||
com.googlecode.charts4j:charts4j:1.3
|
||||
@@ -173,31 +175,34 @@ io.confluent:kafka-avro-serializer:5.3.2
|
||||
io.confluent:kafka-schema-registry-client:5.3.2
|
||||
io.dropwizard.metrics:metrics-core:3.1.2
|
||||
io.github.classgraph:classgraph:4.8.104
|
||||
io.grpc:grpc-alts:1.40.1
|
||||
io.grpc:grpc-api:1.40.1
|
||||
io.grpc:grpc-auth:1.40.1
|
||||
io.grpc:grpc-context:1.40.1
|
||||
io.grpc:grpc-core:1.40.1
|
||||
io.grpc:grpc-grpclb:1.40.1
|
||||
io.grpc:grpc-netty-shaded:1.40.1
|
||||
io.grpc:grpc-netty:1.40.0
|
||||
io.grpc:grpc-protobuf-lite:1.40.1
|
||||
io.grpc:grpc-protobuf:1.40.1
|
||||
io.grpc:grpc-stub:1.40.1
|
||||
io.netty:netty-buffer:4.1.52.Final
|
||||
io.netty:netty-codec-http2:4.1.52.Final
|
||||
io.netty:netty-codec-http:4.1.52.Final
|
||||
io.netty:netty-codec-socks:4.1.52.Final
|
||||
io.netty:netty-codec:4.1.52.Final
|
||||
io.netty:netty-common:4.1.52.Final
|
||||
io.netty:netty-handler-proxy:4.1.52.Final
|
||||
io.netty:netty-handler:4.1.52.Final
|
||||
io.netty:netty-resolver:4.1.52.Final
|
||||
io.grpc:grpc-alts:1.43.2
|
||||
io.grpc:grpc-api:1.43.2
|
||||
io.grpc:grpc-auth:1.43.2
|
||||
io.grpc:grpc-context:1.43.2
|
||||
io.grpc:grpc-core:1.43.2
|
||||
io.grpc:grpc-grpclb:1.43.2
|
||||
io.grpc:grpc-netty-shaded:1.43.2
|
||||
io.grpc:grpc-netty:1.43.2
|
||||
io.grpc:grpc-protobuf-lite:1.43.2
|
||||
io.grpc:grpc-protobuf:1.43.2
|
||||
io.grpc:grpc-services:1.43.2
|
||||
io.grpc:grpc-stub:1.43.2
|
||||
io.grpc:grpc-xds:1.43.2
|
||||
io.netty:netty-buffer:4.1.63.Final
|
||||
io.netty:netty-codec-http2:4.1.63.Final
|
||||
io.netty:netty-codec-http:4.1.63.Final
|
||||
io.netty:netty-codec-socks:4.1.63.Final
|
||||
io.netty:netty-codec:4.1.63.Final
|
||||
io.netty:netty-common:4.1.63.Final
|
||||
io.netty:netty-handler-proxy:4.1.63.Final
|
||||
io.netty:netty-handler:4.1.63.Final
|
||||
io.netty:netty-resolver:4.1.63.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.52.Final
|
||||
io.opencensus:opencensus-api:0.28.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.28.0
|
||||
io.netty:netty-transport:4.1.63.Final
|
||||
io.opencensus:opencensus-api:0.30.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.30.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.28.0
|
||||
io.opencensus:opencensus-proto:0.2.0
|
||||
io.perfmark:perfmark-api:0.23.0
|
||||
it.unimi.dsi:fastutil:6.5.16
|
||||
javax.activation:activation:1.1
|
||||
@@ -221,34 +226,34 @@ org.apache.arrow:arrow-format:5.0.0
|
||||
org.apache.arrow:arrow-memory-core:5.0.0
|
||||
org.apache.arrow:arrow-vector:5.0.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.34.0
|
||||
org.apache.beam:beam-model-job-management:2.34.0
|
||||
org.apache.beam:beam-model-pipeline:2.34.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.34.0
|
||||
org.apache.beam:beam-runners-core-java:2.34.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.34.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.34.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.34.0
|
||||
org.apache.beam:beam-model-fn-execution:2.37.0
|
||||
org.apache.beam:beam-model-job-management:2.37.0
|
||||
org.apache.beam:beam-model-pipeline:2.37.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.37.0
|
||||
org.apache.beam:beam-runners-core-java:2.37.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.37.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.37.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.37.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_11_0:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_36_0:0.2
|
||||
org.apache.beam:beam-vendor-grpc-1_43_2:0.1
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-exec:1.3
|
||||
org.apache.commons:commons-lang3:3.8.1
|
||||
org.apache.httpcomponents:httpclient:4.5.13
|
||||
org.apache.httpcomponents:httpcore:4.4.14
|
||||
org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.apache.httpcomponents:httpcore:4.4.15
|
||||
org.bouncycastle:bcpg-jdk15on:1.67
|
||||
org.bouncycastle:bcpkix-jdk15on:1.67
|
||||
org.bouncycastle:bcprov-jdk15on:1.67
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.18.0
|
||||
org.checkerframework:checker-qual:3.21.0
|
||||
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.20
|
||||
@@ -258,7 +263,6 @@ org.easymock:easymock:3.0
|
||||
org.flywaydb:flyway-core:5.2.4
|
||||
org.glassfish.jaxb:jaxb-runtime:2.3.1
|
||||
org.glassfish.jaxb:txw2:2.3.1
|
||||
org.hamcrest:hamcrest-core:2.1
|
||||
org.hamcrest:hamcrest:2.1
|
||||
org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
|
||||
org.hibernate:hibernate-core:5.4.23.Final
|
||||
@@ -290,12 +294,12 @@ org.testcontainers:database-commons:1.15.2
|
||||
org.testcontainers:jdbc:1.15.2
|
||||
org.testcontainers:postgresql:1.15.2
|
||||
org.testcontainers:testcontainers:1.15.2
|
||||
org.threeten:threetenbp:1.5.1
|
||||
org.threeten:threetenbp:1.5.2
|
||||
org.tukaani:xz:1.5
|
||||
org.w3c.css:sac:1.3
|
||||
org.webjars.npm:viz.js-for-graphviz-java:2.1.3
|
||||
org.xerial.snappy:snappy-java:1.1.8.4
|
||||
org.yaml:snakeyaml:1.27
|
||||
org.yaml:snakeyaml:1.28
|
||||
us.fatehi:schemacrawler-api:16.10.1
|
||||
us.fatehi:schemacrawler-diagram:16.10.1
|
||||
us.fatehi:schemacrawler-tools:16.10.1
|
||||
|
||||
@@ -7,12 +7,13 @@ 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.12.4
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.4
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.12.4
|
||||
com.fasterxml.jackson:jackson-bom:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-core:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-databind:2.13.0
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.13.0
|
||||
com.fasterxml.jackson:jackson-bom:2.13.0
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.ben-manes.caffeine:caffeine:2.9.3
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
com.github.docker-java:docker-java-transport:3.2.7
|
||||
@@ -26,61 +27,63 @@ com.github.jnr:jnr-unixsocket:0.38.5
|
||||
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.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.32.2
|
||||
com.google.api-client:google-api-client-java6:1.31.3
|
||||
com.google.api-client:google-api-client-servlet:1.31.3
|
||||
com.google.api-client:google-api-client:1.32.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api-client:google-api-client:1.32.2
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-common-protos:2.3.2
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.91.3
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:grpc-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.93.2
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.10
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2:1.33.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.89.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.89.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.5.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.1.0
|
||||
com.google.api:api-common:2.0.2
|
||||
com.google.api:gax-grpc:2.4.1
|
||||
com.google.api:gax-httpjson:0.88.0
|
||||
com.google.api:gax:2.4.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.2.0
|
||||
com.google.api:api-common:2.1.2
|
||||
com.google.api:gax-grpc:2.8.1
|
||||
com.google.api:gax-httpjson:0.93.1
|
||||
com.google.api:gax:2.8.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev118-1.25.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev130-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20211129-1.32.1
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev108-1.25.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20210815-1.32.1
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20211017-1.32.1
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20210818-1.32.1
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev99-1.25.0
|
||||
com.google.apis:google-api-services-drive:v2-rev393-1.25.0
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev82-1.25.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20210806-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.31.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20211016-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1
|
||||
com.google.apis:google-api-services-monitoring:v3-rev540-1.25.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20210809-1.32.1
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1
|
||||
com.google.apis:google-api-services-sheets:v4-rev612-1.25.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20210119-1.31.0
|
||||
com.google.apis:google-api-services-storage:v1-rev20210127-1.32.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20211201-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
|
||||
@@ -88,54 +91,53 @@ com.google.appengine:appengine-api-1.0-sdk:1.9.86
|
||||
com.google.appengine:appengine-api-stubs:1.9.86
|
||||
com.google.appengine:appengine-remote-api:1.9.86
|
||||
com.google.appengine:appengine-testing:1.9.86
|
||||
com.google.auth:google-auth-library-credentials:1.1.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.1.0
|
||||
com.google.auth:google-auth-library-credentials:1.3.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.3.0
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.8.2
|
||||
com.google.auto.value:auto-value-annotations:1.9
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.2
|
||||
com.google.cloud.bigdataoss:util:2.2.2
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.23.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.23.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.4
|
||||
com.google.cloud.bigdataoss:util:2.2.4
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.25.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.25.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:2.1.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.2.1
|
||||
com.google.cloud:google-cloud-bigquery:2.1.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.1.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.8.1
|
||||
com.google.cloud:google-cloud-bigtable:1.27.1
|
||||
com.google.cloud:google-cloud-core-grpc:2.1.0
|
||||
com.google.cloud:google-cloud-core-http:2.1.0
|
||||
com.google.cloud:google-cloud-core:2.1.0
|
||||
com.google.cloud:google-cloud-firestore:3.0.2
|
||||
com.google.cloud:google-cloud-core-grpc:2.3.5
|
||||
com.google.cloud:google-cloud-core-http:1.95.4
|
||||
com.google.cloud:google-cloud-core:2.3.5
|
||||
com.google.cloud:google-cloud-firestore:3.0.10
|
||||
com.google.cloud:google-cloud-nio:0.123.4
|
||||
com.google.cloud:google-cloud-pubsub:1.114.2
|
||||
com.google.cloud:google-cloud-pubsublite:1.2.0
|
||||
com.google.cloud:google-cloud-pubsub:1.115.1
|
||||
com.google.cloud:google-cloud-pubsublite:1.4.8
|
||||
com.google.cloud:google-cloud-secretmanager:1.4.0
|
||||
com.google.cloud:google-cloud-spanner:6.12.1
|
||||
com.google.cloud:google-cloud-spanner:6.17.4
|
||||
com.google.cloud:google-cloud-storage:1.118.0
|
||||
com.google.cloud:google-cloud-tasks:1.33.2
|
||||
com.google.cloud:grpc-gcp:1.1.0
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.2
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.10
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.8
|
||||
com.google.code.gson:gson:2.8.9
|
||||
com.google.common.html.types:types:1.0.6
|
||||
com.google.dagger:dagger:2.33
|
||||
com.google.errorprone:error_prone_annotations:2.9.0
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
com.google.escapevelocity:escapevelocity:0.9.1
|
||||
com.google.flatbuffers:flatbuffers-java:1.12.0
|
||||
com.google.flogger:flogger-system-backend:0.6
|
||||
com.google.flogger:flogger:0.7.3
|
||||
com.google.flogger:google-extensions:0.6
|
||||
com.google.flogger:flogger-system-backend:0.7.4
|
||||
com.google.flogger:flogger:0.7.4
|
||||
com.google.flogger:google-extensions:0.7.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava-testlib:30.1.1-jre
|
||||
com.google.guava:guava:30.1.1-jre
|
||||
com.google.guava:guava:31.0.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.39.2
|
||||
com.google.http-client:google-http-client-apache-v2:1.40.1
|
||||
com.google.http-client:google-http-client-appengine:1.39.2
|
||||
com.google.http-client:google-http-client-gson:1.40.0
|
||||
com.google.http-client:google-http-client-jackson2:1.39.2
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.40.0
|
||||
com.google.http-client:google-http-client-gson:1.41.0
|
||||
com.google.http-client:google-http-client-jackson2:1.41.0
|
||||
com.google.http-client:google-http-client-protobuf:1.40.1
|
||||
com.google.http-client:google-http-client:1.41.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -147,9 +149,9 @@ com.google.oauth-client:google-oauth-client-appengine:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.31.4
|
||||
com.google.oauth-client:google-oauth-client:1.31.5
|
||||
com.google.protobuf:protobuf-java-util:3.17.3
|
||||
com.google.protobuf:protobuf-java:3.17.3
|
||||
com.google.oauth-client:google-oauth-client:1.32.1
|
||||
com.google.protobuf:protobuf-java-util:3.19.2
|
||||
com.google.protobuf:protobuf-java:3.19.2
|
||||
com.google.re2j:re2j:1.6
|
||||
com.google.template:soy:2021-02-01
|
||||
com.google.truth.extensions:truth-java8-extension:1.1.2
|
||||
@@ -174,31 +176,34 @@ io.confluent:kafka-avro-serializer:5.3.2
|
||||
io.confluent:kafka-schema-registry-client:5.3.2
|
||||
io.dropwizard.metrics:metrics-core:3.1.2
|
||||
io.github.classgraph:classgraph:4.8.104
|
||||
io.grpc:grpc-alts:1.40.1
|
||||
io.grpc:grpc-api:1.40.1
|
||||
io.grpc:grpc-auth:1.40.1
|
||||
io.grpc:grpc-context:1.40.1
|
||||
io.grpc:grpc-core:1.40.1
|
||||
io.grpc:grpc-grpclb:1.40.1
|
||||
io.grpc:grpc-netty-shaded:1.40.1
|
||||
io.grpc:grpc-netty:1.40.0
|
||||
io.grpc:grpc-protobuf-lite:1.40.1
|
||||
io.grpc:grpc-protobuf:1.40.1
|
||||
io.grpc:grpc-stub:1.40.1
|
||||
io.netty:netty-buffer:4.1.52.Final
|
||||
io.netty:netty-codec-http2:4.1.52.Final
|
||||
io.netty:netty-codec-http:4.1.52.Final
|
||||
io.netty:netty-codec-socks:4.1.52.Final
|
||||
io.netty:netty-codec:4.1.52.Final
|
||||
io.netty:netty-common:4.1.52.Final
|
||||
io.netty:netty-handler-proxy:4.1.52.Final
|
||||
io.netty:netty-handler:4.1.52.Final
|
||||
io.netty:netty-resolver:4.1.52.Final
|
||||
io.grpc:grpc-alts:1.43.2
|
||||
io.grpc:grpc-api:1.43.2
|
||||
io.grpc:grpc-auth:1.43.2
|
||||
io.grpc:grpc-context:1.43.2
|
||||
io.grpc:grpc-core:1.43.2
|
||||
io.grpc:grpc-grpclb:1.43.2
|
||||
io.grpc:grpc-netty-shaded:1.43.2
|
||||
io.grpc:grpc-netty:1.43.2
|
||||
io.grpc:grpc-protobuf-lite:1.43.2
|
||||
io.grpc:grpc-protobuf:1.43.2
|
||||
io.grpc:grpc-services:1.43.2
|
||||
io.grpc:grpc-stub:1.43.2
|
||||
io.grpc:grpc-xds:1.43.2
|
||||
io.netty:netty-buffer:4.1.63.Final
|
||||
io.netty:netty-codec-http2:4.1.63.Final
|
||||
io.netty:netty-codec-http:4.1.63.Final
|
||||
io.netty:netty-codec-socks:4.1.63.Final
|
||||
io.netty:netty-codec:4.1.63.Final
|
||||
io.netty:netty-common:4.1.63.Final
|
||||
io.netty:netty-handler-proxy:4.1.63.Final
|
||||
io.netty:netty-handler:4.1.63.Final
|
||||
io.netty:netty-resolver:4.1.63.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.52.Final
|
||||
io.opencensus:opencensus-api:0.28.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.28.0
|
||||
io.netty:netty-transport:4.1.63.Final
|
||||
io.opencensus:opencensus-api:0.30.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.30.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.28.0
|
||||
io.opencensus:opencensus-proto:0.2.0
|
||||
io.perfmark:perfmark-api:0.23.0
|
||||
it.unimi.dsi:fastutil:6.5.16
|
||||
javax.activation:activation:1.1
|
||||
@@ -223,24 +228,24 @@ org.apache.arrow:arrow-format:5.0.0
|
||||
org.apache.arrow:arrow-memory-core:5.0.0
|
||||
org.apache.arrow:arrow-vector:5.0.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.34.0
|
||||
org.apache.beam:beam-model-job-management:2.34.0
|
||||
org.apache.beam:beam-model-pipeline:2.34.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.34.0
|
||||
org.apache.beam:beam-runners-core-java:2.34.0
|
||||
org.apache.beam:beam-runners-direct-java:2.34.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.34.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.34.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.34.0
|
||||
org.apache.beam:beam-model-fn-execution:2.37.0
|
||||
org.apache.beam:beam-model-job-management:2.37.0
|
||||
org.apache.beam:beam-model-pipeline:2.37.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.37.0
|
||||
org.apache.beam:beam-runners-core-java:2.37.0
|
||||
org.apache.beam:beam-runners-direct-java:2.37.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.37.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.37.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.37.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_11_0:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_36_0:0.2
|
||||
org.apache.beam:beam-vendor-grpc-1_43_2:0.1
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-exec:1.3
|
||||
@@ -249,18 +254,18 @@ org.apache.commons:commons-text:1.6
|
||||
org.apache.ftpserver:ftplet-api:1.0.6
|
||||
org.apache.ftpserver:ftpserver-core:1.0.6
|
||||
org.apache.httpcomponents:httpclient:4.5.13
|
||||
org.apache.httpcomponents:httpcore:4.4.14
|
||||
org.apache.httpcomponents:httpcore:4.4.15
|
||||
org.apache.mina:mina-core:2.0.4
|
||||
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:8.0.5
|
||||
org.apiguardian:apiguardian-api:1.1.0
|
||||
org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.bouncycastle:bcpg-jdk15on:1.67
|
||||
org.bouncycastle:bcpkix-jdk15on:1.67
|
||||
org.bouncycastle:bcprov-jdk15on:1.67
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.18.0
|
||||
org.checkerframework:checker-qual:3.21.0
|
||||
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.20
|
||||
@@ -328,11 +333,11 @@ org.testcontainers:junit-jupiter:1.15.2
|
||||
org.testcontainers:postgresql:1.15.2
|
||||
org.testcontainers:selenium:1.15.2
|
||||
org.testcontainers:testcontainers:1.15.2
|
||||
org.threeten:threetenbp:1.5.1
|
||||
org.threeten:threetenbp:1.5.2
|
||||
org.tukaani:xz:1.5
|
||||
org.w3c.css:sac:1.3
|
||||
org.xerial.snappy:snappy-java:1.1.8.4
|
||||
org.yaml:snakeyaml:1.27
|
||||
org.yaml:snakeyaml:1.28
|
||||
us.fatehi:schemacrawler-api:16.10.1
|
||||
us.fatehi:schemacrawler-diagram:16.10.1
|
||||
us.fatehi:schemacrawler-tools:16.10.1
|
||||
|
||||
@@ -7,12 +7,13 @@ 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.12.4
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.4
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.12.4
|
||||
com.fasterxml.jackson:jackson-bom:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-core:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-databind:2.13.0
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.13.0
|
||||
com.fasterxml.jackson:jackson-bom:2.13.0
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.ben-manes.caffeine:caffeine:2.9.3
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
com.github.docker-java:docker-java-transport:3.2.7
|
||||
@@ -25,61 +26,63 @@ com.github.jnr:jnr-posix:3.1.4
|
||||
com.github.jnr:jnr-unixsocket:0.38.5
|
||||
com.github.jnr:jnr-x86asm:1.0.2
|
||||
com.google.api-client:google-api-client-appengine:1.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.32.2
|
||||
com.google.api-client:google-api-client-java6:1.31.3
|
||||
com.google.api-client:google-api-client-servlet:1.31.3
|
||||
com.google.api-client:google-api-client:1.32.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api-client:google-api-client:1.32.2
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-common-protos:2.3.2
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.91.3
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:grpc-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.93.2
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.10
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2:1.33.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.89.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.89.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.5.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.1.0
|
||||
com.google.api:api-common:2.0.2
|
||||
com.google.api:gax-grpc:2.4.1
|
||||
com.google.api:gax-httpjson:0.88.0
|
||||
com.google.api:gax:2.4.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.2.0
|
||||
com.google.api:api-common:2.1.2
|
||||
com.google.api:gax-grpc:2.8.1
|
||||
com.google.api:gax-httpjson:0.93.1
|
||||
com.google.api:gax:2.8.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev118-1.25.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev130-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20211129-1.32.1
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev108-1.25.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20210815-1.32.1
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20211017-1.32.1
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20210818-1.32.1
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev99-1.25.0
|
||||
com.google.apis:google-api-services-drive:v2-rev393-1.25.0
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev82-1.25.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20210806-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.31.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20211016-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1
|
||||
com.google.apis:google-api-services-monitoring:v3-rev540-1.25.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20210809-1.32.1
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1
|
||||
com.google.apis:google-api-services-sheets:v4-rev612-1.25.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20210119-1.31.0
|
||||
com.google.apis:google-api-services-storage:v1-rev20210127-1.32.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20211201-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
|
||||
@@ -87,54 +90,53 @@ com.google.appengine:appengine-api-1.0-sdk:1.9.86
|
||||
com.google.appengine:appengine-api-stubs:1.9.86
|
||||
com.google.appengine:appengine-remote-api:1.9.86
|
||||
com.google.appengine:appengine-testing:1.9.86
|
||||
com.google.auth:google-auth-library-credentials:1.1.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.1.0
|
||||
com.google.auth:google-auth-library-credentials:1.3.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.3.0
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.8.2
|
||||
com.google.auto.value:auto-value-annotations:1.9
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.2
|
||||
com.google.cloud.bigdataoss:util:2.2.2
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.23.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.23.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.4
|
||||
com.google.cloud.bigdataoss:util:2.2.4
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.25.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.25.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:2.1.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.2.1
|
||||
com.google.cloud:google-cloud-bigquery:2.1.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.1.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.8.1
|
||||
com.google.cloud:google-cloud-bigtable:1.27.1
|
||||
com.google.cloud:google-cloud-core-grpc:2.1.0
|
||||
com.google.cloud:google-cloud-core-http:2.1.0
|
||||
com.google.cloud:google-cloud-core:2.1.0
|
||||
com.google.cloud:google-cloud-firestore:3.0.2
|
||||
com.google.cloud:google-cloud-core-grpc:2.3.5
|
||||
com.google.cloud:google-cloud-core-http:1.95.4
|
||||
com.google.cloud:google-cloud-core:2.3.5
|
||||
com.google.cloud:google-cloud-firestore:3.0.10
|
||||
com.google.cloud:google-cloud-nio:0.123.4
|
||||
com.google.cloud:google-cloud-pubsub:1.114.2
|
||||
com.google.cloud:google-cloud-pubsublite:1.2.0
|
||||
com.google.cloud:google-cloud-pubsub:1.115.1
|
||||
com.google.cloud:google-cloud-pubsublite:1.4.8
|
||||
com.google.cloud:google-cloud-secretmanager:1.4.0
|
||||
com.google.cloud:google-cloud-spanner:6.12.1
|
||||
com.google.cloud:google-cloud-spanner:6.17.4
|
||||
com.google.cloud:google-cloud-storage:1.118.0
|
||||
com.google.cloud:google-cloud-tasks:1.33.2
|
||||
com.google.cloud:grpc-gcp:1.1.0
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.2
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.10
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.8
|
||||
com.google.code.gson:gson:2.8.9
|
||||
com.google.common.html.types:types:1.0.6
|
||||
com.google.dagger:dagger:2.33
|
||||
com.google.errorprone:error_prone_annotations:2.9.0
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
com.google.escapevelocity:escapevelocity:0.9.1
|
||||
com.google.flatbuffers:flatbuffers-java:1.12.0
|
||||
com.google.flogger:flogger-system-backend:0.6
|
||||
com.google.flogger:flogger:0.7.3
|
||||
com.google.flogger:google-extensions:0.6
|
||||
com.google.flogger:flogger-system-backend:0.7.4
|
||||
com.google.flogger:flogger:0.7.4
|
||||
com.google.flogger:google-extensions:0.7.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava-testlib:30.1.1-jre
|
||||
com.google.guava:guava:30.1.1-jre
|
||||
com.google.guava:guava:31.0.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.39.2
|
||||
com.google.http-client:google-http-client-apache-v2:1.40.1
|
||||
com.google.http-client:google-http-client-appengine:1.39.2
|
||||
com.google.http-client:google-http-client-gson:1.40.0
|
||||
com.google.http-client:google-http-client-jackson2:1.39.2
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.40.0
|
||||
com.google.http-client:google-http-client-gson:1.41.0
|
||||
com.google.http-client:google-http-client-jackson2:1.41.0
|
||||
com.google.http-client:google-http-client-protobuf:1.40.1
|
||||
com.google.http-client:google-http-client:1.41.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -146,9 +148,9 @@ com.google.oauth-client:google-oauth-client-appengine:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.31.4
|
||||
com.google.oauth-client:google-oauth-client:1.31.5
|
||||
com.google.protobuf:protobuf-java-util:3.17.3
|
||||
com.google.protobuf:protobuf-java:3.17.3
|
||||
com.google.oauth-client:google-oauth-client:1.32.1
|
||||
com.google.protobuf:protobuf-java-util:3.19.2
|
||||
com.google.protobuf:protobuf-java:3.19.2
|
||||
com.google.re2j:re2j:1.6
|
||||
com.google.template:soy:2021-02-01
|
||||
com.google.truth.extensions:truth-java8-extension:1.1.2
|
||||
@@ -173,28 +175,28 @@ io.confluent:kafka-avro-serializer:5.3.2
|
||||
io.confluent:kafka-schema-registry-client:5.3.2
|
||||
io.dropwizard.metrics:metrics-core:3.1.2
|
||||
io.github.classgraph:classgraph:4.8.104
|
||||
io.grpc:grpc-alts:1.40.1
|
||||
io.grpc:grpc-api:1.40.1
|
||||
io.grpc:grpc-auth:1.40.1
|
||||
io.grpc:grpc-context:1.40.1
|
||||
io.grpc:grpc-core:1.40.1
|
||||
io.grpc:grpc-grpclb:1.40.1
|
||||
io.grpc:grpc-netty-shaded:1.40.1
|
||||
io.grpc:grpc-netty:1.40.0
|
||||
io.grpc:grpc-protobuf-lite:1.40.1
|
||||
io.grpc:grpc-protobuf:1.40.1
|
||||
io.grpc:grpc-stub:1.40.1
|
||||
io.netty:netty-buffer:4.1.52.Final
|
||||
io.netty:netty-codec-http2:4.1.52.Final
|
||||
io.netty:netty-codec-http:4.1.52.Final
|
||||
io.netty:netty-codec:4.1.52.Final
|
||||
io.netty:netty-common:4.1.52.Final
|
||||
io.netty:netty-handler:4.1.52.Final
|
||||
io.netty:netty-resolver:4.1.52.Final
|
||||
io.grpc:grpc-alts:1.43.2
|
||||
io.grpc:grpc-api:1.43.2
|
||||
io.grpc:grpc-auth:1.43.2
|
||||
io.grpc:grpc-context:1.43.2
|
||||
io.grpc:grpc-core:1.43.2
|
||||
io.grpc:grpc-grpclb:1.43.2
|
||||
io.grpc:grpc-netty-shaded:1.43.2
|
||||
io.grpc:grpc-netty:1.43.2
|
||||
io.grpc:grpc-protobuf-lite:1.43.2
|
||||
io.grpc:grpc-protobuf:1.43.2
|
||||
io.grpc:grpc-stub:1.43.2
|
||||
io.netty:netty-buffer:4.1.63.Final
|
||||
io.netty:netty-codec-http2:4.1.63.Final
|
||||
io.netty:netty-codec-http:4.1.63.Final
|
||||
io.netty:netty-codec:4.1.63.Final
|
||||
io.netty:netty-common:4.1.63.Final
|
||||
io.netty:netty-handler:4.1.63.Final
|
||||
io.netty:netty-resolver:4.1.63.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.52.Final
|
||||
io.opencensus:opencensus-api:0.28.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.28.0
|
||||
io.netty:netty-transport:4.1.63.Final
|
||||
io.opencensus:opencensus-api:0.30.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.30.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.28.0
|
||||
it.unimi.dsi:fastutil:6.5.16
|
||||
javax.activation:activation:1.1
|
||||
@@ -219,24 +221,24 @@ org.apache.arrow:arrow-format:5.0.0
|
||||
org.apache.arrow:arrow-memory-core:5.0.0
|
||||
org.apache.arrow:arrow-vector:5.0.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.34.0
|
||||
org.apache.beam:beam-model-job-management:2.34.0
|
||||
org.apache.beam:beam-model-pipeline:2.34.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.34.0
|
||||
org.apache.beam:beam-runners-core-java:2.34.0
|
||||
org.apache.beam:beam-runners-direct-java:2.34.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.34.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.34.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.34.0
|
||||
org.apache.beam:beam-model-fn-execution:2.37.0
|
||||
org.apache.beam:beam-model-job-management:2.37.0
|
||||
org.apache.beam:beam-model-pipeline:2.37.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.37.0
|
||||
org.apache.beam:beam-runners-core-java:2.37.0
|
||||
org.apache.beam:beam-runners-direct-java:2.37.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.37.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.37.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.37.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_11_0:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_36_0:0.2
|
||||
org.apache.beam:beam-vendor-grpc-1_43_2:0.1
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-exec:1.3
|
||||
@@ -245,18 +247,18 @@ org.apache.commons:commons-text:1.6
|
||||
org.apache.ftpserver:ftplet-api:1.0.6
|
||||
org.apache.ftpserver:ftpserver-core:1.0.6
|
||||
org.apache.httpcomponents:httpclient:4.5.13
|
||||
org.apache.httpcomponents:httpcore:4.4.14
|
||||
org.apache.httpcomponents:httpcore:4.4.15
|
||||
org.apache.mina:mina-core:2.0.4
|
||||
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:8.0.5
|
||||
org.apiguardian:apiguardian-api:1.1.0
|
||||
org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.bouncycastle:bcpg-jdk15on:1.67
|
||||
org.bouncycastle:bcpkix-jdk15on:1.67
|
||||
org.bouncycastle:bcprov-jdk15on:1.67
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.18.0
|
||||
org.checkerframework:checker-qual:3.21.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
|
||||
@@ -323,11 +325,11 @@ org.testcontainers:junit-jupiter:1.15.2
|
||||
org.testcontainers:postgresql:1.15.2
|
||||
org.testcontainers:selenium:1.15.2
|
||||
org.testcontainers:testcontainers:1.15.2
|
||||
org.threeten:threetenbp:1.5.1
|
||||
org.threeten:threetenbp:1.5.2
|
||||
org.tukaani:xz:1.5
|
||||
org.w3c.css:sac:1.3
|
||||
org.xerial.snappy:snappy-java:1.1.8.4
|
||||
org.yaml:snakeyaml:1.27
|
||||
org.yaml:snakeyaml:1.28
|
||||
us.fatehi:schemacrawler-api:16.10.1
|
||||
us.fatehi:schemacrawler-diagram:16.10.1
|
||||
us.fatehi:schemacrawler-tools:16.10.1
|
||||
|
||||
@@ -11,12 +11,13 @@ com.eclipsesource.j2v8:j2v8_linux_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_macosx_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86_64:4.6.0
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.4
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.12.4
|
||||
com.fasterxml.jackson:jackson-bom:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-core:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-databind:2.13.0
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.13.0
|
||||
com.fasterxml.jackson:jackson-bom:2.13.0
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.ben-manes.caffeine:caffeine:2.9.3
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
com.github.docker-java:docker-java-transport:3.2.7
|
||||
@@ -30,61 +31,63 @@ com.github.jnr:jnr-unixsocket:0.38.5
|
||||
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.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.32.2
|
||||
com.google.api-client:google-api-client-java6:1.31.3
|
||||
com.google.api-client:google-api-client-servlet:1.31.3
|
||||
com.google.api-client:google-api-client:1.32.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api-client:google-api-client:1.32.2
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-common-protos:2.3.2
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.91.3
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:grpc-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.93.2
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.10
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2:1.33.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.89.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.89.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.5.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.1.0
|
||||
com.google.api:api-common:2.0.2
|
||||
com.google.api:gax-grpc:2.4.1
|
||||
com.google.api:gax-httpjson:0.88.0
|
||||
com.google.api:gax:2.4.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.2.0
|
||||
com.google.api:api-common:2.1.2
|
||||
com.google.api:gax-grpc:2.8.1
|
||||
com.google.api:gax-httpjson:0.93.1
|
||||
com.google.api:gax:2.8.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev118-1.25.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev130-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20211129-1.32.1
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev108-1.25.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20210815-1.32.1
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20211017-1.32.1
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20210818-1.32.1
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev99-1.25.0
|
||||
com.google.apis:google-api-services-drive:v2-rev393-1.25.0
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev82-1.25.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20210806-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.31.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20211016-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1
|
||||
com.google.apis:google-api-services-monitoring:v3-rev540-1.25.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20210809-1.32.1
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1
|
||||
com.google.apis:google-api-services-sheets:v4-rev612-1.25.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20210119-1.31.0
|
||||
com.google.apis:google-api-services-storage:v1-rev20210127-1.32.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20211201-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
|
||||
@@ -92,55 +95,54 @@ com.google.appengine:appengine-api-1.0-sdk:1.9.86
|
||||
com.google.appengine:appengine-api-stubs:1.9.86
|
||||
com.google.appengine:appengine-remote-api:1.9.86
|
||||
com.google.appengine:appengine-testing:1.9.86
|
||||
com.google.auth:google-auth-library-credentials:1.1.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.1.0
|
||||
com.google.auth:google-auth-library-credentials:1.3.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.3.0
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.8.2
|
||||
com.google.auto.value:auto-value-annotations:1.9
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.2
|
||||
com.google.cloud.bigdataoss:util:2.2.2
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.23.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.23.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.4
|
||||
com.google.cloud.bigdataoss:util:2.2.4
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.25.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.25.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:2.1.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.2.1
|
||||
com.google.cloud.sql:postgres-socket-factory:1.2.1
|
||||
com.google.cloud:google-cloud-bigquery:2.1.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.1.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.8.1
|
||||
com.google.cloud:google-cloud-bigtable:1.27.1
|
||||
com.google.cloud:google-cloud-core-grpc:2.1.0
|
||||
com.google.cloud:google-cloud-core-http:2.1.0
|
||||
com.google.cloud:google-cloud-core:2.1.0
|
||||
com.google.cloud:google-cloud-firestore:3.0.2
|
||||
com.google.cloud:google-cloud-core-grpc:2.3.5
|
||||
com.google.cloud:google-cloud-core-http:1.95.4
|
||||
com.google.cloud:google-cloud-core:2.3.5
|
||||
com.google.cloud:google-cloud-firestore:3.0.10
|
||||
com.google.cloud:google-cloud-nio:0.123.4
|
||||
com.google.cloud:google-cloud-pubsub:1.114.2
|
||||
com.google.cloud:google-cloud-pubsublite:1.2.0
|
||||
com.google.cloud:google-cloud-pubsub:1.115.1
|
||||
com.google.cloud:google-cloud-pubsublite:1.4.8
|
||||
com.google.cloud:google-cloud-secretmanager:1.4.0
|
||||
com.google.cloud:google-cloud-spanner:6.12.1
|
||||
com.google.cloud:google-cloud-spanner:6.17.4
|
||||
com.google.cloud:google-cloud-storage:1.118.0
|
||||
com.google.cloud:google-cloud-tasks:1.33.2
|
||||
com.google.cloud:grpc-gcp:1.1.0
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.2
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.10
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.8
|
||||
com.google.code.gson:gson:2.8.9
|
||||
com.google.common.html.types:types:1.0.6
|
||||
com.google.dagger:dagger:2.33
|
||||
com.google.errorprone:error_prone_annotations:2.9.0
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
com.google.escapevelocity:escapevelocity:0.9.1
|
||||
com.google.flatbuffers:flatbuffers-java:1.12.0
|
||||
com.google.flogger:flogger-system-backend:0.7.3
|
||||
com.google.flogger:flogger:0.7.3
|
||||
com.google.flogger:google-extensions:0.6
|
||||
com.google.flogger:flogger-system-backend:0.7.4
|
||||
com.google.flogger:flogger:0.7.4
|
||||
com.google.flogger:google-extensions:0.7.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava-testlib:30.1.1-jre
|
||||
com.google.guava:guava:30.1.1-jre
|
||||
com.google.guava:guava:31.0.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.39.2
|
||||
com.google.http-client:google-http-client-apache-v2:1.40.1
|
||||
com.google.http-client:google-http-client-appengine:1.39.2
|
||||
com.google.http-client:google-http-client-gson:1.40.0
|
||||
com.google.http-client:google-http-client-jackson2:1.39.2
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.40.0
|
||||
com.google.http-client:google-http-client-gson:1.41.0
|
||||
com.google.http-client:google-http-client-jackson2:1.41.0
|
||||
com.google.http-client:google-http-client-protobuf:1.40.1
|
||||
com.google.http-client:google-http-client:1.41.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -152,9 +154,9 @@ com.google.oauth-client:google-oauth-client-appengine:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.31.4
|
||||
com.google.oauth-client:google-oauth-client:1.31.5
|
||||
com.google.protobuf:protobuf-java-util:3.17.3
|
||||
com.google.protobuf:protobuf-java:3.17.3
|
||||
com.google.oauth-client:google-oauth-client:1.32.1
|
||||
com.google.protobuf:protobuf-java-util:3.19.2
|
||||
com.google.protobuf:protobuf-java:3.19.2
|
||||
com.google.re2j:re2j:1.6
|
||||
com.google.template:soy:2021-02-01
|
||||
com.google.truth.extensions:truth-java8-extension:1.1.2
|
||||
@@ -183,31 +185,34 @@ io.confluent:kafka-schema-registry-client:5.3.2
|
||||
io.dropwizard.metrics:metrics-core:3.1.2
|
||||
io.github.classgraph:classgraph:4.8.104
|
||||
io.github.java-diff-utils:java-diff-utils:4.9
|
||||
io.grpc:grpc-alts:1.40.1
|
||||
io.grpc:grpc-api:1.40.1
|
||||
io.grpc:grpc-auth:1.40.1
|
||||
io.grpc:grpc-context:1.40.1
|
||||
io.grpc:grpc-core:1.40.1
|
||||
io.grpc:grpc-grpclb:1.40.1
|
||||
io.grpc:grpc-netty-shaded:1.40.1
|
||||
io.grpc:grpc-netty:1.40.0
|
||||
io.grpc:grpc-protobuf-lite:1.40.1
|
||||
io.grpc:grpc-protobuf:1.40.1
|
||||
io.grpc:grpc-stub:1.40.1
|
||||
io.netty:netty-buffer:4.1.52.Final
|
||||
io.netty:netty-codec-http2:4.1.52.Final
|
||||
io.netty:netty-codec-http:4.1.52.Final
|
||||
io.netty:netty-codec-socks:4.1.52.Final
|
||||
io.netty:netty-codec:4.1.52.Final
|
||||
io.netty:netty-common:4.1.52.Final
|
||||
io.netty:netty-handler-proxy:4.1.52.Final
|
||||
io.netty:netty-handler:4.1.52.Final
|
||||
io.netty:netty-resolver:4.1.52.Final
|
||||
io.grpc:grpc-alts:1.43.2
|
||||
io.grpc:grpc-api:1.43.2
|
||||
io.grpc:grpc-auth:1.43.2
|
||||
io.grpc:grpc-context:1.43.2
|
||||
io.grpc:grpc-core:1.43.2
|
||||
io.grpc:grpc-grpclb:1.43.2
|
||||
io.grpc:grpc-netty-shaded:1.43.2
|
||||
io.grpc:grpc-netty:1.43.2
|
||||
io.grpc:grpc-protobuf-lite:1.43.2
|
||||
io.grpc:grpc-protobuf:1.43.2
|
||||
io.grpc:grpc-services:1.43.2
|
||||
io.grpc:grpc-stub:1.43.2
|
||||
io.grpc:grpc-xds:1.43.2
|
||||
io.netty:netty-buffer:4.1.63.Final
|
||||
io.netty:netty-codec-http2:4.1.63.Final
|
||||
io.netty:netty-codec-http:4.1.63.Final
|
||||
io.netty:netty-codec-socks:4.1.63.Final
|
||||
io.netty:netty-codec:4.1.63.Final
|
||||
io.netty:netty-common:4.1.63.Final
|
||||
io.netty:netty-handler-proxy:4.1.63.Final
|
||||
io.netty:netty-handler:4.1.63.Final
|
||||
io.netty:netty-resolver:4.1.63.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.52.Final
|
||||
io.opencensus:opencensus-api:0.28.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.28.0
|
||||
io.netty:netty-transport:4.1.63.Final
|
||||
io.opencensus:opencensus-api:0.30.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.30.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.28.0
|
||||
io.opencensus:opencensus-proto:0.2.0
|
||||
io.perfmark:perfmark-api:0.23.0
|
||||
it.unimi.dsi:fastutil:6.5.16
|
||||
javax.activation:activation:1.1
|
||||
@@ -233,24 +238,24 @@ org.apache.arrow:arrow-format:5.0.0
|
||||
org.apache.arrow:arrow-memory-core:5.0.0
|
||||
org.apache.arrow:arrow-vector:5.0.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.34.0
|
||||
org.apache.beam:beam-model-job-management:2.34.0
|
||||
org.apache.beam:beam-model-pipeline:2.34.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.34.0
|
||||
org.apache.beam:beam-runners-core-java:2.34.0
|
||||
org.apache.beam:beam-runners-direct-java:2.34.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.34.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.34.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.34.0
|
||||
org.apache.beam:beam-model-fn-execution:2.37.0
|
||||
org.apache.beam:beam-model-job-management:2.37.0
|
||||
org.apache.beam:beam-model-pipeline:2.37.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.37.0
|
||||
org.apache.beam:beam-runners-core-java:2.37.0
|
||||
org.apache.beam:beam-runners-direct-java:2.37.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.37.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.37.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.37.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_11_0:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_36_0:0.2
|
||||
org.apache.beam:beam-vendor-grpc-1_43_2:0.1
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-exec:1.3
|
||||
@@ -259,18 +264,18 @@ org.apache.commons:commons-text:1.6
|
||||
org.apache.ftpserver:ftplet-api:1.0.6
|
||||
org.apache.ftpserver:ftpserver-core:1.0.6
|
||||
org.apache.httpcomponents:httpclient:4.5.13
|
||||
org.apache.httpcomponents:httpcore:4.4.14
|
||||
org.apache.httpcomponents:httpcore:4.4.15
|
||||
org.apache.mina:mina-core:2.0.4
|
||||
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:8.0.5
|
||||
org.apiguardian:apiguardian-api:1.1.0
|
||||
org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.bouncycastle:bcpg-jdk15on:1.67
|
||||
org.bouncycastle:bcpkix-jdk15on:1.67
|
||||
org.bouncycastle:bcprov-jdk15on:1.67
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.18.0
|
||||
org.checkerframework:checker-qual:3.21.0
|
||||
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.20
|
||||
@@ -340,12 +345,12 @@ org.testcontainers:junit-jupiter:1.15.2
|
||||
org.testcontainers:postgresql:1.15.2
|
||||
org.testcontainers:selenium:1.15.2
|
||||
org.testcontainers:testcontainers:1.15.2
|
||||
org.threeten:threetenbp:1.5.1
|
||||
org.threeten:threetenbp:1.5.2
|
||||
org.tukaani:xz:1.5
|
||||
org.w3c.css:sac:1.3
|
||||
org.webjars.npm:viz.js-for-graphviz-java:2.1.3
|
||||
org.xerial.snappy:snappy-java:1.1.8.4
|
||||
org.yaml:snakeyaml:1.27
|
||||
org.yaml:snakeyaml:1.28
|
||||
us.fatehi:schemacrawler-api:16.10.1
|
||||
us.fatehi:schemacrawler-diagram:16.10.1
|
||||
us.fatehi:schemacrawler-tools:16.10.1
|
||||
|
||||
@@ -11,12 +11,13 @@ com.eclipsesource.j2v8:j2v8_linux_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_macosx_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86_64:4.6.0
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.4
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.12.4
|
||||
com.fasterxml.jackson:jackson-bom:2.12.4
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-core:2.13.0
|
||||
com.fasterxml.jackson.core:jackson-databind:2.13.0
|
||||
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.13.0
|
||||
com.fasterxml.jackson:jackson-bom:2.13.0
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.ben-manes.caffeine:caffeine:2.9.3
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
com.github.docker-java:docker-java-transport:3.2.7
|
||||
@@ -30,61 +31,63 @@ com.github.jnr:jnr-unixsocket:0.38.5
|
||||
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.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.31.3
|
||||
com.google.api-client:google-api-client-jackson2:1.32.2
|
||||
com.google.api-client:google-api-client-java6:1.31.3
|
||||
com.google.api-client:google-api-client-servlet:1.31.3
|
||||
com.google.api-client:google-api-client:1.32.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api-client:google-api-client:1.32.2
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.27.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:grpc-google-common-protos:2.3.2
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.125.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.1.0
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.91.3
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.96.2
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.2.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:grpc-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:grpc-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:2.8.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.132.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.5.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.93.2
|
||||
com.google.api.grpc:proto-google-cloud-firestore-v1:3.0.10
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.97.1
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:1.4.8
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.4.0
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.12.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:6.17.4
|
||||
com.google.api.grpc:proto-google-cloud-storage-v2:2.0.1-alpha
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2:1.33.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta2:0.89.2
|
||||
com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.89.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.5.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.1.0
|
||||
com.google.api:api-common:2.0.2
|
||||
com.google.api:gax-grpc:2.4.1
|
||||
com.google.api:gax-httpjson:0.88.0
|
||||
com.google.api:gax:2.4.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.7.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.2.0
|
||||
com.google.api:api-common:2.1.2
|
||||
com.google.api:gax-grpc:2.8.1
|
||||
com.google.api:gax-httpjson:0.93.1
|
||||
com.google.api:gax:2.8.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev118-1.25.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev130-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20211129-1.32.1
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20210813-1.32.1
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev108-1.25.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20210815-1.32.1
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20211017-1.32.1
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20210818-1.32.1
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev99-1.25.0
|
||||
com.google.apis:google-api-services-drive:v2-rev393-1.25.0
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev82-1.25.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20210806-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.31.0
|
||||
com.google.apis:google-api-services-healthcare:v1-rev20211016-1.32.1
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20210326-1.32.1
|
||||
com.google.apis:google-api-services-monitoring:v3-rev540-1.25.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20210809-1.32.1
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20211130-1.32.1
|
||||
com.google.apis:google-api-services-sheets:v4-rev612-1.25.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20210119-1.31.0
|
||||
com.google.apis:google-api-services-storage:v1-rev20210127-1.32.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20211201-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
|
||||
@@ -92,55 +95,54 @@ com.google.appengine:appengine-api-1.0-sdk:1.9.86
|
||||
com.google.appengine:appengine-api-stubs:1.9.86
|
||||
com.google.appengine:appengine-remote-api:1.9.86
|
||||
com.google.appengine:appengine-testing:1.9.86
|
||||
com.google.auth:google-auth-library-credentials:1.1.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.1.0
|
||||
com.google.auth:google-auth-library-credentials:1.3.0
|
||||
com.google.auth:google-auth-library-oauth2-http:1.3.0
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.8.2
|
||||
com.google.auto.value:auto-value-annotations:1.9
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.2
|
||||
com.google.cloud.bigdataoss:util:2.2.2
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.23.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.23.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.2.4
|
||||
com.google.cloud.bigdataoss:util:2.2.4
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.25.1
|
||||
com.google.cloud.bigtable:bigtable-metrics-api:1.25.1
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:2.1.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.2.1
|
||||
com.google.cloud.sql:postgres-socket-factory:1.2.1
|
||||
com.google.cloud:google-cloud-bigquery:2.1.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.1.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:2.8.1
|
||||
com.google.cloud:google-cloud-bigtable:1.27.1
|
||||
com.google.cloud:google-cloud-core-grpc:2.1.0
|
||||
com.google.cloud:google-cloud-core-http:2.1.0
|
||||
com.google.cloud:google-cloud-core:2.1.0
|
||||
com.google.cloud:google-cloud-firestore:3.0.2
|
||||
com.google.cloud:google-cloud-core-grpc:2.3.5
|
||||
com.google.cloud:google-cloud-core-http:1.95.4
|
||||
com.google.cloud:google-cloud-core:2.3.5
|
||||
com.google.cloud:google-cloud-firestore:3.0.10
|
||||
com.google.cloud:google-cloud-nio:0.123.4
|
||||
com.google.cloud:google-cloud-pubsub:1.114.2
|
||||
com.google.cloud:google-cloud-pubsublite:1.2.0
|
||||
com.google.cloud:google-cloud-pubsub:1.115.1
|
||||
com.google.cloud:google-cloud-pubsublite:1.4.8
|
||||
com.google.cloud:google-cloud-secretmanager:1.4.0
|
||||
com.google.cloud:google-cloud-spanner:6.12.1
|
||||
com.google.cloud:google-cloud-spanner:6.17.4
|
||||
com.google.cloud:google-cloud-storage:1.118.0
|
||||
com.google.cloud:google-cloud-tasks:1.33.2
|
||||
com.google.cloud:grpc-gcp:1.1.0
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.2
|
||||
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.0.10
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.8
|
||||
com.google.code.gson:gson:2.8.9
|
||||
com.google.common.html.types:types:1.0.6
|
||||
com.google.dagger:dagger:2.33
|
||||
com.google.errorprone:error_prone_annotations:2.9.0
|
||||
com.google.errorprone:error_prone_annotations:2.10.0
|
||||
com.google.escapevelocity:escapevelocity:0.9.1
|
||||
com.google.flatbuffers:flatbuffers-java:1.12.0
|
||||
com.google.flogger:flogger-system-backend:0.7.3
|
||||
com.google.flogger:flogger:0.7.3
|
||||
com.google.flogger:google-extensions:0.6
|
||||
com.google.flogger:flogger-system-backend:0.7.4
|
||||
com.google.flogger:flogger:0.7.4
|
||||
com.google.flogger:google-extensions:0.7.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava-testlib:30.1.1-jre
|
||||
com.google.guava:guava:30.1.1-jre
|
||||
com.google.guava:guava:31.0.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.39.2
|
||||
com.google.http-client:google-http-client-apache-v2:1.40.1
|
||||
com.google.http-client:google-http-client-appengine:1.39.2
|
||||
com.google.http-client:google-http-client-gson:1.40.0
|
||||
com.google.http-client:google-http-client-jackson2:1.39.2
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.40.0
|
||||
com.google.http-client:google-http-client-gson:1.41.0
|
||||
com.google.http-client:google-http-client-jackson2:1.41.0
|
||||
com.google.http-client:google-http-client-protobuf:1.40.1
|
||||
com.google.http-client:google-http-client:1.41.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -152,9 +154,9 @@ com.google.oauth-client:google-oauth-client-appengine:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.31.4
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.31.4
|
||||
com.google.oauth-client:google-oauth-client:1.31.5
|
||||
com.google.protobuf:protobuf-java-util:3.17.3
|
||||
com.google.protobuf:protobuf-java:3.17.3
|
||||
com.google.oauth-client:google-oauth-client:1.32.1
|
||||
com.google.protobuf:protobuf-java-util:3.19.2
|
||||
com.google.protobuf:protobuf-java:3.19.2
|
||||
com.google.re2j:re2j:1.6
|
||||
com.google.template:soy:2021-02-01
|
||||
com.google.truth.extensions:truth-java8-extension:1.1.2
|
||||
@@ -183,31 +185,34 @@ io.confluent:kafka-schema-registry-client:5.3.2
|
||||
io.dropwizard.metrics:metrics-core:3.1.2
|
||||
io.github.classgraph:classgraph:4.8.104
|
||||
io.github.java-diff-utils:java-diff-utils:4.9
|
||||
io.grpc:grpc-alts:1.40.1
|
||||
io.grpc:grpc-api:1.40.1
|
||||
io.grpc:grpc-auth:1.40.1
|
||||
io.grpc:grpc-context:1.40.1
|
||||
io.grpc:grpc-core:1.40.1
|
||||
io.grpc:grpc-grpclb:1.40.1
|
||||
io.grpc:grpc-netty-shaded:1.40.1
|
||||
io.grpc:grpc-netty:1.40.0
|
||||
io.grpc:grpc-protobuf-lite:1.40.1
|
||||
io.grpc:grpc-protobuf:1.40.1
|
||||
io.grpc:grpc-stub:1.40.1
|
||||
io.netty:netty-buffer:4.1.52.Final
|
||||
io.netty:netty-codec-http2:4.1.52.Final
|
||||
io.netty:netty-codec-http:4.1.52.Final
|
||||
io.netty:netty-codec-socks:4.1.52.Final
|
||||
io.netty:netty-codec:4.1.52.Final
|
||||
io.netty:netty-common:4.1.52.Final
|
||||
io.netty:netty-handler-proxy:4.1.52.Final
|
||||
io.netty:netty-handler:4.1.52.Final
|
||||
io.netty:netty-resolver:4.1.52.Final
|
||||
io.grpc:grpc-alts:1.43.2
|
||||
io.grpc:grpc-api:1.43.2
|
||||
io.grpc:grpc-auth:1.43.2
|
||||
io.grpc:grpc-context:1.43.2
|
||||
io.grpc:grpc-core:1.43.2
|
||||
io.grpc:grpc-grpclb:1.43.2
|
||||
io.grpc:grpc-netty-shaded:1.43.2
|
||||
io.grpc:grpc-netty:1.43.2
|
||||
io.grpc:grpc-protobuf-lite:1.43.2
|
||||
io.grpc:grpc-protobuf:1.43.2
|
||||
io.grpc:grpc-services:1.43.2
|
||||
io.grpc:grpc-stub:1.43.2
|
||||
io.grpc:grpc-xds:1.43.2
|
||||
io.netty:netty-buffer:4.1.63.Final
|
||||
io.netty:netty-codec-http2:4.1.63.Final
|
||||
io.netty:netty-codec-http:4.1.63.Final
|
||||
io.netty:netty-codec-socks:4.1.63.Final
|
||||
io.netty:netty-codec:4.1.63.Final
|
||||
io.netty:netty-common:4.1.63.Final
|
||||
io.netty:netty-handler-proxy:4.1.63.Final
|
||||
io.netty:netty-handler:4.1.63.Final
|
||||
io.netty:netty-resolver:4.1.63.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.52.Final
|
||||
io.opencensus:opencensus-api:0.28.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.28.0
|
||||
io.netty:netty-transport:4.1.63.Final
|
||||
io.opencensus:opencensus-api:0.30.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.30.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.28.0
|
||||
io.opencensus:opencensus-proto:0.2.0
|
||||
io.perfmark:perfmark-api:0.23.0
|
||||
it.unimi.dsi:fastutil:6.5.16
|
||||
javax.activation:activation:1.1
|
||||
@@ -233,24 +238,24 @@ org.apache.arrow:arrow-format:5.0.0
|
||||
org.apache.arrow:arrow-memory-core:5.0.0
|
||||
org.apache.arrow:arrow-vector:5.0.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.34.0
|
||||
org.apache.beam:beam-model-job-management:2.34.0
|
||||
org.apache.beam:beam-model-pipeline:2.34.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.34.0
|
||||
org.apache.beam:beam-runners-core-java:2.34.0
|
||||
org.apache.beam:beam-runners-direct-java:2.34.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.34.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.34.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.34.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.34.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.34.0
|
||||
org.apache.beam:beam-model-fn-execution:2.37.0
|
||||
org.apache.beam:beam-model-job-management:2.37.0
|
||||
org.apache.beam:beam-model-pipeline:2.37.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.37.0
|
||||
org.apache.beam:beam-runners-core-java:2.37.0
|
||||
org.apache.beam:beam-runners-direct-java:2.37.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.37.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-arrow:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.37.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.37.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.37.0
|
||||
org.apache.beam:beam-sdks-java-io-kafka:2.37.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_11_0:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_36_0:0.2
|
||||
org.apache.beam:beam-vendor-grpc-1_43_2:0.1
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-exec:1.3
|
||||
@@ -259,18 +264,18 @@ org.apache.commons:commons-text:1.6
|
||||
org.apache.ftpserver:ftplet-api:1.0.6
|
||||
org.apache.ftpserver:ftpserver-core:1.0.6
|
||||
org.apache.httpcomponents:httpclient:4.5.13
|
||||
org.apache.httpcomponents:httpcore:4.4.14
|
||||
org.apache.httpcomponents:httpcore:4.4.15
|
||||
org.apache.mina:mina-core:2.0.4
|
||||
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:8.0.5
|
||||
org.apiguardian:apiguardian-api:1.1.0
|
||||
org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.bouncycastle:bcpg-jdk15on:1.67
|
||||
org.bouncycastle:bcpkix-jdk15on:1.67
|
||||
org.bouncycastle:bcprov-jdk15on:1.67
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.18.0
|
||||
org.checkerframework:checker-qual:3.21.0
|
||||
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.20
|
||||
@@ -341,12 +346,12 @@ org.testcontainers:junit-jupiter:1.15.2
|
||||
org.testcontainers:postgresql:1.15.2
|
||||
org.testcontainers:selenium:1.15.2
|
||||
org.testcontainers:testcontainers:1.15.2
|
||||
org.threeten:threetenbp:1.5.1
|
||||
org.threeten:threetenbp:1.5.2
|
||||
org.tukaani:xz:1.5
|
||||
org.w3c.css:sac:1.3
|
||||
org.webjars.npm:viz.js-for-graphviz-java:2.1.3
|
||||
org.xerial.snappy:snappy-java:1.1.8.4
|
||||
org.yaml:snakeyaml:1.27
|
||||
org.yaml:snakeyaml:1.28
|
||||
us.fatehi:schemacrawler-api:16.10.1
|
||||
us.fatehi:schemacrawler-diagram:16.10.1
|
||||
us.fatehi:schemacrawler-tools:16.10.1
|
||||
|
||||
@@ -21,6 +21,7 @@ import static google.registry.backup.ExportCommitLogDiffAction.UPPER_CHECKPOINT_
|
||||
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.backup.SyncDatastoreToSqlSnapshotAction.SQL_SNAPSHOT_ID_PARAM;
|
||||
import static google.registry.request.RequestParameters.extractOptionalParameter;
|
||||
import static google.registry.request.RequestParameters.extractRequiredDatetimeParameter;
|
||||
import static google.registry.request.RequestParameters.extractRequiredParameter;
|
||||
@@ -98,6 +99,12 @@ public final class BackupModule {
|
||||
return extractRequiredDatetimeParameter(req, TO_TIME_PARAM);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Parameter(SQL_SNAPSHOT_ID_PARAM)
|
||||
static String provideSqlSnapshotId(HttpServletRequest req) {
|
||||
return extractRequiredParameter(req, SQL_SNAPSHOT_ID_PARAM);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Backups
|
||||
static ListeningExecutorService provideListeningExecutorService() {
|
||||
|
||||
@@ -28,10 +28,11 @@ 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.Clock;
|
||||
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.
|
||||
@@ -56,7 +57,22 @@ public final class CommitLogCheckpointAction implements Runnable {
|
||||
|
||||
private static final String QUEUE_NAME = "export-commits";
|
||||
|
||||
@Inject Clock clock;
|
||||
/**
|
||||
* The amount of time enqueueing should be delayed.
|
||||
*
|
||||
* <p>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}.
|
||||
*
|
||||
* <p>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;
|
||||
|
||||
@@ -64,33 +80,48 @@ public final class CommitLogCheckpointAction implements Runnable {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
createCheckPointAndStartAsyncExport();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link CommitLogCheckpoint} and initiates an asynchronous export task.
|
||||
*
|
||||
* @return the {@code CommitLogCheckpoint} to be exported
|
||||
*/
|
||||
public Optional<CommitLogCheckpoint> createCheckPointAndStartAsyncExport() {
|
||||
final CommitLogCheckpoint checkpoint = strategy.computeCheckpoint();
|
||||
logger.atInfo().log(
|
||||
"Generated candidate checkpoint for time: %s", checkpoint.getCheckpointTime());
|
||||
ofyTm()
|
||||
.transact(
|
||||
() -> {
|
||||
DateTime lastWrittenTime = CommitLogCheckpointRoot.loadRoot().getLastWrittenTime();
|
||||
if (isBeforeOrAt(checkpoint.getCheckpointTime(), lastWrittenTime)) {
|
||||
logger.atInfo().log(
|
||||
"Newer checkpoint already written at time: %s", lastWrittenTime);
|
||||
return;
|
||||
}
|
||||
auditedOfy()
|
||||
.saveIgnoringReadOnlyWithoutBackup()
|
||||
.entities(
|
||||
checkpoint, CommitLogCheckpointRoot.create(checkpoint.getCheckpointTime()));
|
||||
// Enqueue a diff task between previous and current checkpoints.
|
||||
cloudTasksUtils.enqueue(
|
||||
QUEUE_NAME,
|
||||
CloudTasksUtils.createPostTask(
|
||||
ExportCommitLogDiffAction.PATH,
|
||||
Service.BACKEND.toString(),
|
||||
ImmutableMultimap.of(
|
||||
LOWER_CHECKPOINT_TIME_PARAM,
|
||||
lastWrittenTime.toString(),
|
||||
UPPER_CHECKPOINT_TIME_PARAM,
|
||||
checkpoint.getCheckpointTime().toString())));
|
||||
});
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,7 +76,10 @@ public class ReplayCommitLogsToSqlAction implements Runnable {
|
||||
|
||||
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
|
||||
|
||||
private static final Duration LEASE_LENGTH = standardHours(1);
|
||||
public static final String REPLAY_TO_SQL_LOCK_NAME =
|
||||
ReplayCommitLogsToSqlAction.class.getSimpleName();
|
||||
|
||||
public static final Duration REPLAY_TO_SQL_LOCK_LEASE_LENGTH = standardHours(1);
|
||||
// Stop / pause where we are if we've been replaying for more than five minutes to avoid GAE
|
||||
// request timeouts
|
||||
private static final Duration REPLAY_TIMEOUT_DURATION = Duration.standardMinutes(5);
|
||||
@@ -115,7 +118,11 @@ public class ReplayCommitLogsToSqlAction implements Runnable {
|
||||
}
|
||||
Optional<Lock> lock =
|
||||
Lock.acquireSql(
|
||||
this.getClass().getSimpleName(), null, LEASE_LENGTH, requestStatusChecker, false);
|
||||
REPLAY_TO_SQL_LOCK_NAME,
|
||||
null,
|
||||
REPLAY_TO_SQL_LOCK_LEASE_LENGTH,
|
||||
requestStatusChecker,
|
||||
false);
|
||||
if (!lock.isPresent()) {
|
||||
String message = "Can't acquire SQL commit log replay lock, aborting.";
|
||||
logger.atSevere().log(message);
|
||||
|
||||
@@ -0,0 +1,187 @@
|
||||
// Copyright 2022 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 javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_OK;
|
||||
|
||||
import com.google.common.flogger.FluentLogger;
|
||||
import google.registry.beam.comparedb.LatestDatastoreSnapshotFinder;
|
||||
import google.registry.config.RegistryConfig.Config;
|
||||
import google.registry.model.annotations.DeleteAfterMigration;
|
||||
import google.registry.model.ofy.CommitLogCheckpoint;
|
||||
import google.registry.model.replay.ReplicateToDatastoreAction;
|
||||
import google.registry.request.Action;
|
||||
import google.registry.request.Action.Service;
|
||||
import google.registry.request.Parameter;
|
||||
import google.registry.request.Response;
|
||||
import google.registry.request.auth.Auth;
|
||||
import google.registry.util.Sleeper;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.PrintStream;
|
||||
import java.util.Optional;
|
||||
import javax.inject.Inject;
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.Duration;
|
||||
|
||||
/**
|
||||
* Synchronizes Datastore to a given SQL snapshot when SQL is the primary database.
|
||||
*
|
||||
* <p>The caller takes the responsibility for:
|
||||
*
|
||||
* <ul>
|
||||
* <li>verifying the current migration stage
|
||||
* <li>acquiring the {@link ReplicateToDatastoreAction#REPLICATE_TO_DATASTORE_LOCK_NAME
|
||||
* replication lock}, and
|
||||
* <li>while holding the lock, creating an SQL snapshot and invoking this action with the snapshot
|
||||
* id
|
||||
* </ul>
|
||||
*
|
||||
* The caller may release the replication lock upon receiving the response from this action. Please
|
||||
* refer to {@link google.registry.tools.ValidateDatastoreCommand} for more information on usage.
|
||||
*
|
||||
* <p>This action plays SQL transactions up to the user-specified snapshot, creates a new CommitLog
|
||||
* checkpoint, and exports all CommitLogs to GCS up to this checkpoint. The timestamp of this
|
||||
* checkpoint can be used to recreate a Datastore snapshot that is equivalent to the given SQL
|
||||
* snapshot. If this action succeeds, the checkpoint timestamp is included in the response (the
|
||||
* format of which is defined by {@link #SUCCESS_RESPONSE_TEMPLATE}).
|
||||
*/
|
||||
@Action(
|
||||
service = Service.BACKEND,
|
||||
path = SyncDatastoreToSqlSnapshotAction.PATH,
|
||||
method = Action.Method.POST,
|
||||
auth = Auth.AUTH_INTERNAL_OR_ADMIN)
|
||||
@DeleteAfterMigration
|
||||
public class SyncDatastoreToSqlSnapshotAction implements Runnable {
|
||||
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
|
||||
|
||||
public static final String PATH = "/_dr/task/syncDatastoreToSqlSnapshot";
|
||||
|
||||
public static final String SUCCESS_RESPONSE_TEMPLATE =
|
||||
"Datastore is up-to-date with provided SQL snapshot (%s). CommitLog timestamp is (%s).";
|
||||
|
||||
static final String SQL_SNAPSHOT_ID_PARAM = "sqlSnapshotId";
|
||||
|
||||
private static final int COMMITLOGS_PRESENCE_CHECK_ATTEMPTS = 10;
|
||||
private static final Duration COMMITLOGS_PRESENCE_CHECK_DELAY = Duration.standardSeconds(6);
|
||||
|
||||
private final Response response;
|
||||
private final Sleeper sleeper;
|
||||
|
||||
@Config("commitLogGcsBucket")
|
||||
private final String gcsBucket;
|
||||
|
||||
private final GcsDiffFileLister gcsDiffFileLister;
|
||||
private final LatestDatastoreSnapshotFinder datastoreSnapshotFinder;
|
||||
private final CommitLogCheckpointAction commitLogCheckpointAction;
|
||||
private final String sqlSnapshotId;
|
||||
|
||||
@Inject
|
||||
SyncDatastoreToSqlSnapshotAction(
|
||||
Response response,
|
||||
Sleeper sleeper,
|
||||
@Config("commitLogGcsBucket") String gcsBucket,
|
||||
GcsDiffFileLister gcsDiffFileLister,
|
||||
LatestDatastoreSnapshotFinder datastoreSnapshotFinder,
|
||||
CommitLogCheckpointAction commitLogCheckpointAction,
|
||||
@Parameter(SQL_SNAPSHOT_ID_PARAM) String sqlSnapshotId) {
|
||||
this.response = response;
|
||||
this.sleeper = sleeper;
|
||||
this.gcsBucket = gcsBucket;
|
||||
this.gcsDiffFileLister = gcsDiffFileLister;
|
||||
this.datastoreSnapshotFinder = datastoreSnapshotFinder;
|
||||
this.commitLogCheckpointAction = commitLogCheckpointAction;
|
||||
this.sqlSnapshotId = sqlSnapshotId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
logger.atInfo().log("Datastore validation invoked. SqlSnapshotId is %s.", sqlSnapshotId);
|
||||
|
||||
try {
|
||||
CommitLogCheckpoint checkpoint = ensureDatabasesComparable(sqlSnapshotId);
|
||||
response.setStatus(SC_OK);
|
||||
response.setPayload(
|
||||
String.format(SUCCESS_RESPONSE_TEMPLATE, sqlSnapshotId, checkpoint.getCheckpointTime()));
|
||||
return;
|
||||
} catch (Throwable e) {
|
||||
logger.atSevere().withCause(e).log("Failed to sync Datastore to SQL.");
|
||||
response.setStatus(SC_INTERNAL_SERVER_ERROR);
|
||||
response.setPayload(getStackTrace(e));
|
||||
}
|
||||
}
|
||||
|
||||
private static String getStackTrace(Throwable e) {
|
||||
try {
|
||||
ByteArrayOutputStream bis = new ByteArrayOutputStream();
|
||||
PrintStream printStream = new PrintStream(bis);
|
||||
e.printStackTrace(printStream);
|
||||
printStream.close();
|
||||
return bis.toString();
|
||||
} catch (RuntimeException re) {
|
||||
return re.getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
private CommitLogCheckpoint ensureDatabasesComparable(String sqlSnapshotId) {
|
||||
// Replicate SQL transaction to Datastore, up to when this snapshot is taken.
|
||||
int playbacks = ReplicateToDatastoreAction.replayAllTransactions(Optional.of(sqlSnapshotId));
|
||||
logger.atInfo().log("Played %s SQL transactions.", playbacks);
|
||||
|
||||
Optional<CommitLogCheckpoint> checkpoint = exportCommitLogs();
|
||||
if (!checkpoint.isPresent()) {
|
||||
throw new RuntimeException("Cannot create CommitLog checkpoint");
|
||||
}
|
||||
logger.atInfo().log(
|
||||
"CommitLog checkpoint created at %s.", checkpoint.get().getCheckpointTime());
|
||||
verifyCommitLogsPersisted(checkpoint.get());
|
||||
return checkpoint.get();
|
||||
}
|
||||
|
||||
private Optional<CommitLogCheckpoint> exportCommitLogs() {
|
||||
// Trigger an async CommitLog export to GCS. Will check file availability later.
|
||||
// Although we can add support to synchronous execution, it can disrupt the export cadence
|
||||
// when the system is busy
|
||||
Optional<CommitLogCheckpoint> checkpoint =
|
||||
commitLogCheckpointAction.createCheckPointAndStartAsyncExport();
|
||||
|
||||
// Failure to create checkpoint most likely caused by race with cron-triggered checkpointing.
|
||||
// Retry once.
|
||||
if (!checkpoint.isPresent()) {
|
||||
commitLogCheckpointAction.createCheckPointAndStartAsyncExport();
|
||||
}
|
||||
return checkpoint;
|
||||
}
|
||||
|
||||
private void verifyCommitLogsPersisted(CommitLogCheckpoint checkpoint) {
|
||||
DateTime exportStartTime =
|
||||
datastoreSnapshotFinder
|
||||
.getSnapshotInfo(checkpoint.getCheckpointTime().toInstant())
|
||||
.exportInterval()
|
||||
.getStart();
|
||||
logger.atInfo().log("Found Datastore export at %s", exportStartTime);
|
||||
for (int attempts = 0; attempts < COMMITLOGS_PRESENCE_CHECK_ATTEMPTS; attempts++) {
|
||||
try {
|
||||
gcsDiffFileLister.listDiffFiles(gcsBucket, exportStartTime, checkpoint.getCheckpointTime());
|
||||
return;
|
||||
} catch (IllegalStateException e) {
|
||||
// Gap in commitlog files. Fall through to sleep and retry.
|
||||
logger.atInfo().log("Commitlog files not yet found on GCS.");
|
||||
}
|
||||
sleeper.sleepInterruptibly(COMMITLOGS_PRESENCE_CHECK_DELAY);
|
||||
}
|
||||
throw new RuntimeException("Cannot find all commitlog files.");
|
||||
}
|
||||
}
|
||||
@@ -22,15 +22,17 @@ import com.google.appengine.api.taskqueue.TaskOptions;
|
||||
import com.google.appengine.api.taskqueue.TaskOptions.Method;
|
||||
import com.google.appengine.api.taskqueue.TransientFailureException;
|
||||
import com.google.common.base.Joiner;
|
||||
import com.google.common.collect.ArrayListMultimap;
|
||||
import com.google.common.collect.ImmutableSortedSet;
|
||||
import com.google.common.collect.Multimap;
|
||||
import com.google.common.flogger.FluentLogger;
|
||||
import google.registry.config.RegistryConfig.Config;
|
||||
import google.registry.model.EppResource;
|
||||
import google.registry.model.domain.RegistryLock;
|
||||
import google.registry.model.eppcommon.Trid;
|
||||
import google.registry.model.host.HostResource;
|
||||
import google.registry.persistence.VKey;
|
||||
import google.registry.util.AppEngineServiceUtils;
|
||||
import google.registry.request.Action.Service;
|
||||
import google.registry.util.CloudTasksUtils;
|
||||
import google.registry.util.Retrier;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
@@ -59,25 +61,23 @@ public final class AsyncTaskEnqueuer {
|
||||
private static final Duration MAX_ASYNC_ETA = Duration.standardDays(30);
|
||||
|
||||
private final Duration asyncDeleteDelay;
|
||||
private final Queue asyncActionsPushQueue;
|
||||
private final Queue asyncDeletePullQueue;
|
||||
private final Queue asyncDnsRefreshPullQueue;
|
||||
private final AppEngineServiceUtils appEngineServiceUtils;
|
||||
private final Retrier retrier;
|
||||
|
||||
private CloudTasksUtils cloudTasksUtils;
|
||||
|
||||
@Inject
|
||||
public AsyncTaskEnqueuer(
|
||||
@Named(QUEUE_ASYNC_ACTIONS) Queue asyncActionsPushQueue,
|
||||
@Named(QUEUE_ASYNC_DELETE) Queue asyncDeletePullQueue,
|
||||
@Named(QUEUE_ASYNC_HOST_RENAME) Queue asyncDnsRefreshPullQueue,
|
||||
@Config("asyncDeleteFlowMapreduceDelay") Duration asyncDeleteDelay,
|
||||
AppEngineServiceUtils appEngineServiceUtils,
|
||||
CloudTasksUtils cloudTasksUtils,
|
||||
Retrier retrier) {
|
||||
this.asyncActionsPushQueue = asyncActionsPushQueue;
|
||||
this.asyncDeletePullQueue = asyncDeletePullQueue;
|
||||
this.asyncDnsRefreshPullQueue = asyncDnsRefreshPullQueue;
|
||||
this.asyncDeleteDelay = asyncDeleteDelay;
|
||||
this.appEngineServiceUtils = appEngineServiceUtils;
|
||||
this.cloudTasksUtils = cloudTasksUtils;
|
||||
this.retrier = retrier;
|
||||
}
|
||||
|
||||
@@ -103,19 +103,17 @@ public final class AsyncTaskEnqueuer {
|
||||
entityKey, firstResave, MAX_ASYNC_ETA);
|
||||
return;
|
||||
}
|
||||
logger.atInfo().log("Enqueuing async re-save of %s to run at %s.", entityKey, whenToResave);
|
||||
String backendHostname = appEngineServiceUtils.getServiceHostname("backend");
|
||||
TaskOptions task =
|
||||
TaskOptions.Builder.withUrl(ResaveEntityAction.PATH)
|
||||
.method(Method.POST)
|
||||
.header("Host", backendHostname)
|
||||
.countdownMillis(etaDuration.getMillis())
|
||||
.param(PARAM_RESOURCE_KEY, entityKey.stringify())
|
||||
.param(PARAM_REQUESTED_TIME, now.toString());
|
||||
Multimap<String, String> params = ArrayListMultimap.create();
|
||||
params.put(PARAM_RESOURCE_KEY, entityKey.stringify());
|
||||
params.put(PARAM_REQUESTED_TIME, now.toString());
|
||||
if (whenToResave.size() > 1) {
|
||||
task.param(PARAM_RESAVE_TIMES, Joiner.on(',').join(whenToResave.tailSet(firstResave, false)));
|
||||
params.put(PARAM_RESAVE_TIMES, Joiner.on(',').join(whenToResave.tailSet(firstResave, false)));
|
||||
}
|
||||
addTaskToQueueWithRetry(asyncActionsPushQueue, task);
|
||||
logger.atInfo().log("Enqueuing async re-save of %s to run at %s.", entityKey, whenToResave);
|
||||
cloudTasksUtils.enqueue(
|
||||
QUEUE_ASYNC_ACTIONS,
|
||||
cloudTasksUtils.createPostTaskWithDelay(
|
||||
ResaveEntityAction.PATH, Service.BACKEND.toString(), params, etaDuration));
|
||||
}
|
||||
|
||||
/** Enqueues a task to asynchronously delete a contact or host, by key. */
|
||||
@@ -152,32 +150,6 @@ public final class AsyncTaskEnqueuer {
|
||||
.param(PARAM_REQUESTED_TIME, now.toString()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Enqueues a task to asynchronously re-lock a registry-locked domain after it was unlocked.
|
||||
*
|
||||
* <p>Note: the relockDuration must be present on the lock object.
|
||||
*/
|
||||
public void enqueueDomainRelock(RegistryLock lock) {
|
||||
checkArgument(
|
||||
lock.getRelockDuration().isPresent(),
|
||||
"Lock with ID %s not configured for relock",
|
||||
lock.getRevisionId());
|
||||
enqueueDomainRelock(lock.getRelockDuration().get(), lock.getRevisionId(), 0);
|
||||
}
|
||||
|
||||
/** Enqueues a task to asynchronously re-lock a registry-locked domain after it was unlocked. */
|
||||
void enqueueDomainRelock(Duration countdown, long lockRevisionId, int previousAttempts) {
|
||||
String backendHostname = appEngineServiceUtils.getServiceHostname("backend");
|
||||
addTaskToQueueWithRetry(
|
||||
asyncActionsPushQueue,
|
||||
TaskOptions.Builder.withUrl(RelockDomainAction.PATH)
|
||||
.method(Method.POST)
|
||||
.header("Host", backendHostname)
|
||||
.param(RelockDomainAction.OLD_UNLOCK_REVISION_ID_PARAM, String.valueOf(lockRevisionId))
|
||||
.param(RelockDomainAction.PREVIOUS_ATTEMPTS_PARAM, String.valueOf(previousAttempts))
|
||||
.countdownMillis(countdown.getMillis()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a task to a queue with retrying, to avoid aborting the entire flow over a transient issue
|
||||
* enqueuing a task.
|
||||
|
||||
@@ -112,6 +112,12 @@ public class BatchModule {
|
||||
req, ExpandRecurringBillingEventsAction.PARAM_CURSOR_TIME);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Parameter(ResaveAllEppResourcesPipelineAction.PARAM_FAST)
|
||||
static Optional<Boolean> provideIsFast(HttpServletRequest req) {
|
||||
return extractOptionalBooleanParameter(req, ResaveAllEppResourcesPipelineAction.PARAM_FAST);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Named(QUEUE_ASYNC_ACTIONS)
|
||||
static Queue provideAsyncActionsPushQueue() {
|
||||
|
||||
@@ -88,7 +88,6 @@ public class RelockDomainAction implements Runnable {
|
||||
private final SendEmailService sendEmailService;
|
||||
private final DomainLockUtils domainLockUtils;
|
||||
private final Response response;
|
||||
private final AsyncTaskEnqueuer asyncTaskEnqueuer;
|
||||
|
||||
@Inject
|
||||
public RelockDomainAction(
|
||||
@@ -99,8 +98,7 @@ public class RelockDomainAction implements Runnable {
|
||||
@Config("supportEmail") String supportEmail,
|
||||
SendEmailService sendEmailService,
|
||||
DomainLockUtils domainLockUtils,
|
||||
Response response,
|
||||
AsyncTaskEnqueuer asyncTaskEnqueuer) {
|
||||
Response response) {
|
||||
this.oldUnlockRevisionId = oldUnlockRevisionId;
|
||||
this.previousAttempts = previousAttempts;
|
||||
this.alertRecipientAddress = alertRecipientAddress;
|
||||
@@ -109,7 +107,6 @@ public class RelockDomainAction implements Runnable {
|
||||
this.sendEmailService = sendEmailService;
|
||||
this.domainLockUtils = domainLockUtils;
|
||||
this.response = response;
|
||||
this.asyncTaskEnqueuer = asyncTaskEnqueuer;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -245,8 +242,7 @@ public class RelockDomainAction implements Runnable {
|
||||
}
|
||||
}
|
||||
Duration timeBeforeRetry = previousAttempts < ATTEMPTS_BEFORE_SLOWDOWN ? TEN_MINUTES : ONE_HOUR;
|
||||
asyncTaskEnqueuer.enqueueDomainRelock(
|
||||
timeBeforeRetry, oldUnlockRevisionId, previousAttempts + 1);
|
||||
domainLockUtils.enqueueDomainRelock(timeBeforeRetry, oldUnlockRevisionId, previousAttempts + 1);
|
||||
}
|
||||
|
||||
private void sendSuccessEmail(RegistryLock oldLock) {
|
||||
|
||||
@@ -0,0 +1,129 @@
|
||||
// Copyright 2022 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.beam.BeamUtils.createJobName;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_OK;
|
||||
|
||||
import com.google.api.services.dataflow.Dataflow;
|
||||
import com.google.api.services.dataflow.model.LaunchFlexTemplateParameter;
|
||||
import com.google.api.services.dataflow.model.LaunchFlexTemplateRequest;
|
||||
import com.google.api.services.dataflow.model.LaunchFlexTemplateResponse;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.flogger.FluentLogger;
|
||||
import com.google.common.net.MediaType;
|
||||
import google.registry.config.RegistryConfig.Config;
|
||||
import google.registry.config.RegistryEnvironment;
|
||||
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.Optional;
|
||||
import javax.inject.Inject;
|
||||
|
||||
/**
|
||||
* Starts a Dataflow pipeline that resaves all EPP resources projected to the current time.
|
||||
*
|
||||
* <p>This is useful for a few situations. First, as a fallback option for resource transfers that
|
||||
* have expired pending transfers (this will resolve them), just in case the enqueued action fails.
|
||||
* Second, it will reflect domain autorenews that have happened. Third, it will remove any expired
|
||||
* grace periods.
|
||||
*
|
||||
* <p>There's also the general principle that it's good to have the data in the database remain as
|
||||
* current as is reasonably possible.
|
||||
*
|
||||
* <p>If the <code>?isFast=true</code> query string parameter is passed as true, the pipeline will
|
||||
* only attempt to load, project, and resave entities where we expect one of the previous situations
|
||||
* has occurred. Otherwise, we will load, project, and resave all EPP resources.
|
||||
*
|
||||
* <p>This runs the {@link google.registry.beam.resave.ResaveAllEppResourcesPipeline}.
|
||||
*/
|
||||
@Action(
|
||||
service = Action.Service.BACKEND,
|
||||
path = ResaveAllEppResourcesPipelineAction.PATH,
|
||||
auth = Auth.AUTH_INTERNAL_OR_ADMIN)
|
||||
public class ResaveAllEppResourcesPipelineAction implements Runnable {
|
||||
|
||||
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
|
||||
|
||||
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;
|
||||
private final boolean fast;
|
||||
private final Clock clock;
|
||||
private final Response response;
|
||||
private final Dataflow dataflow;
|
||||
|
||||
@Inject
|
||||
ResaveAllEppResourcesPipelineAction(
|
||||
@Config("projectId") String projectId,
|
||||
@Config("defaultJobRegion") String jobRegion,
|
||||
@Config("beamStagingBucketUrl") String stagingBucketUrl,
|
||||
@Parameter(PARAM_FAST) Optional<Boolean> fast,
|
||||
Clock clock,
|
||||
Response response,
|
||||
Dataflow dataflow) {
|
||||
this.projectId = projectId;
|
||||
this.jobRegion = jobRegion;
|
||||
this.stagingBucketUrl = stagingBucketUrl;
|
||||
this.fast = fast.orElse(false);
|
||||
this.clock = clock;
|
||||
this.response = response;
|
||||
this.dataflow = dataflow;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
response.setContentType(MediaType.PLAIN_TEXT_UTF_8);
|
||||
logger.atInfo().log("Launching ResaveAllEppResourcesPipeline");
|
||||
try {
|
||||
LaunchFlexTemplateParameter parameter =
|
||||
new LaunchFlexTemplateParameter()
|
||||
.setJobName(createJobName("resave-all-epp-resources", clock))
|
||||
.setContainerSpecGcsPath(
|
||||
String.format("%s/%s_metadata.json", stagingBucketUrl, PIPELINE_NAME))
|
||||
.setParameters(
|
||||
new ImmutableMap.Builder<String, String>()
|
||||
.put(PARAM_FAST, Boolean.toString(fast))
|
||||
.put("registryEnvironment", RegistryEnvironment.get().name())
|
||||
.build());
|
||||
LaunchFlexTemplateResponse launchResponse =
|
||||
dataflow
|
||||
.projects()
|
||||
.locations()
|
||||
.flexTemplates()
|
||||
.launch(
|
||||
projectId,
|
||||
jobRegion,
|
||||
new LaunchFlexTemplateRequest().setLaunchParameter(parameter))
|
||||
.execute();
|
||||
logger.atInfo().log("Got response: %s", launchResponse.getJob().toPrettyString());
|
||||
String jobId = launchResponse.getJob().getId();
|
||||
response.setStatus(SC_OK);
|
||||
response.setPayload(String.format("Launched resaveAllEppResources pipeline: %s", jobId));
|
||||
} catch (Exception e) {
|
||||
logger.atSevere().withCause(e).log("Template Launch failed.");
|
||||
response.setStatus(SC_INTERNAL_SERVER_ERROR);
|
||||
response.setPayload(String.format("Pipeline launch failed: %s", e.getMessage()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -23,6 +23,7 @@ import com.google.common.collect.Streams;
|
||||
import google.registry.beam.common.RegistryQuery.CriteriaQuerySupplier;
|
||||
import google.registry.model.UpdateAutoTimestamp;
|
||||
import google.registry.model.UpdateAutoTimestamp.DisableAutoUpdateResource;
|
||||
import google.registry.model.common.DatabaseMigrationStateSchedule;
|
||||
import google.registry.model.replay.SqlEntity;
|
||||
import google.registry.persistence.transaction.JpaTransactionManager;
|
||||
import google.registry.persistence.transaction.TransactionManagerFactory;
|
||||
@@ -234,6 +235,10 @@ public final class RegistryJpaIO {
|
||||
|
||||
@ProcessElement
|
||||
public void processElement(OutputReceiver<T> outputReceiver) {
|
||||
// Preload the migration schedule into cache, otherwise the cache loading query may happen
|
||||
// before the setDatabaseSnapshot call in the transaction below, causing it to fail.
|
||||
DatabaseMigrationStateSchedule.get();
|
||||
|
||||
jpaTm()
|
||||
.transactNoRetry(
|
||||
() -> {
|
||||
|
||||
@@ -66,7 +66,7 @@ public class LatestDatastoreSnapshotFinder {
|
||||
* "2021-11-19T06:00:00_76493/2021-11-19T06:00:00_76493.overall_export_metadata".
|
||||
*/
|
||||
Optional<String> metaFilePathOptional =
|
||||
findNewestExportMetadataFileBeforeTime(bucketName, exportEndTimeUpperBound, 2);
|
||||
findNewestExportMetadataFileBeforeTime(bucketName, exportEndTimeUpperBound, 5);
|
||||
if (!metaFilePathOptional.isPresent()) {
|
||||
throw new NoSuchElementException("No exports found over the past 2 days.");
|
||||
}
|
||||
@@ -125,12 +125,12 @@ public class LatestDatastoreSnapshotFinder {
|
||||
|
||||
/** Holds information about a Datastore snapshot. */
|
||||
@AutoValue
|
||||
abstract static class DatastoreSnapshotInfo {
|
||||
abstract String exportDir();
|
||||
public abstract static class DatastoreSnapshotInfo {
|
||||
public abstract String exportDir();
|
||||
|
||||
abstract String commitLogDir();
|
||||
public abstract String commitLogDir();
|
||||
|
||||
abstract Interval exportInterval();
|
||||
public abstract Interval exportInterval();
|
||||
|
||||
static DatastoreSnapshotInfo create(
|
||||
String exportDir, String commitLogDir, Interval exportOperationInterval) {
|
||||
|
||||
@@ -0,0 +1,206 @@
|
||||
// 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.beam.comparedb;
|
||||
|
||||
import static com.google.common.base.Verify.verify;
|
||||
import static org.apache.beam.sdk.values.TypeDescriptors.strings;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.common.flogger.FluentLogger;
|
||||
import google.registry.beam.common.RegistryPipelineOptions;
|
||||
import google.registry.beam.common.RegistryPipelineWorkerInitializer;
|
||||
import google.registry.beam.comparedb.LatestDatastoreSnapshotFinder.DatastoreSnapshotInfo;
|
||||
import google.registry.beam.comparedb.ValidateSqlUtils.CompareSqlEntity;
|
||||
import google.registry.model.annotations.DeleteAfterMigration;
|
||||
import google.registry.model.domain.DomainBase;
|
||||
import google.registry.model.domain.DomainHistory;
|
||||
import google.registry.model.replay.SqlEntity;
|
||||
import google.registry.persistence.PersistenceModule.JpaTransactionManagerType;
|
||||
import google.registry.persistence.PersistenceModule.TransactionIsolationLevel;
|
||||
import google.registry.util.SystemClock;
|
||||
import java.io.Serializable;
|
||||
import java.util.Optional;
|
||||
import org.apache.beam.sdk.Pipeline;
|
||||
import org.apache.beam.sdk.coders.SerializableCoder;
|
||||
import org.apache.beam.sdk.io.TextIO;
|
||||
import org.apache.beam.sdk.options.PipelineOptionsFactory;
|
||||
import org.apache.beam.sdk.transforms.Flatten;
|
||||
import org.apache.beam.sdk.transforms.GroupByKey;
|
||||
import org.apache.beam.sdk.transforms.ParDo;
|
||||
import org.apache.beam.sdk.transforms.WithKeys;
|
||||
import org.apache.beam.sdk.values.PCollectionList;
|
||||
import org.apache.beam.sdk.values.PCollectionTuple;
|
||||
import org.apache.beam.sdk.values.TupleTag;
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.Duration;
|
||||
|
||||
/**
|
||||
* Validates the asynchronous data replication process between Datastore and Cloud SQL.
|
||||
*
|
||||
* <p>This pipeline is to be launched by {@link google.registry.tools.ValidateDatastoreCommand} or
|
||||
* {@link google.registry.tools.ValidateSqlCommand}.
|
||||
*/
|
||||
@DeleteAfterMigration
|
||||
public class ValidateDatabasePipeline {
|
||||
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
|
||||
|
||||
/** Specifies the extra CommitLogs to load before the start of a Database export. */
|
||||
private static final Duration COMMITLOG_START_TIME_MARGIN = Duration.standardMinutes(10);
|
||||
|
||||
private final ValidateDatabasePipelineOptions options;
|
||||
private final LatestDatastoreSnapshotFinder datastoreSnapshotFinder;
|
||||
|
||||
public ValidateDatabasePipeline(
|
||||
ValidateDatabasePipelineOptions options,
|
||||
LatestDatastoreSnapshotFinder datastoreSnapshotFinder) {
|
||||
this.options = options;
|
||||
this.datastoreSnapshotFinder = datastoreSnapshotFinder;
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
void run(Pipeline pipeline) {
|
||||
DateTime latestCommitLogTime = DateTime.parse(options.getLatestCommitLogTimestamp());
|
||||
DatastoreSnapshotInfo mostRecentExport =
|
||||
datastoreSnapshotFinder.getSnapshotInfo(latestCommitLogTime.toInstant());
|
||||
|
||||
logger.atInfo().log(
|
||||
"Comparing datastore export at %s and commitlog timestamp %s.",
|
||||
mostRecentExport.exportDir(), latestCommitLogTime);
|
||||
|
||||
Optional<String> outputPath =
|
||||
Optional.ofNullable(options.getDiffOutputGcsBucket())
|
||||
.map(
|
||||
bucket ->
|
||||
String.format(
|
||||
"gs://%s/validate_database/%s/diffs.txt",
|
||||
bucket, new SystemClock().nowUtc()));
|
||||
outputPath.ifPresent(path -> logger.atInfo().log("Discrepancies will be logged to %s", path));
|
||||
|
||||
setupPipeline(
|
||||
pipeline,
|
||||
Optional.ofNullable(options.getSqlSnapshotId()),
|
||||
mostRecentExport,
|
||||
latestCommitLogTime,
|
||||
Optional.ofNullable(options.getComparisonStartTimestamp()).map(DateTime::parse),
|
||||
outputPath);
|
||||
|
||||
pipeline.run();
|
||||
}
|
||||
|
||||
static void setupPipeline(
|
||||
Pipeline pipeline,
|
||||
Optional<String> sqlSnapshotId,
|
||||
DatastoreSnapshotInfo mostRecentExport,
|
||||
DateTime latestCommitLogTime,
|
||||
Optional<DateTime> compareStartTime,
|
||||
Optional<String> diffOutputPath) {
|
||||
pipeline
|
||||
.getCoderRegistry()
|
||||
.registerCoderForClass(SqlEntity.class, SerializableCoder.of(Serializable.class));
|
||||
|
||||
PCollectionTuple datastoreSnapshot =
|
||||
DatastoreSnapshots.loadDatastoreSnapshotByKind(
|
||||
pipeline,
|
||||
mostRecentExport.exportDir(),
|
||||
mostRecentExport.commitLogDir(),
|
||||
mostRecentExport.exportInterval().getStart().minus(COMMITLOG_START_TIME_MARGIN),
|
||||
// Increase by 1ms since we want to include commitLogs latestCommitLogTime but
|
||||
// this parameter is exclusive.
|
||||
latestCommitLogTime.plusMillis(1),
|
||||
DatastoreSnapshots.ALL_DATASTORE_KINDS,
|
||||
compareStartTime);
|
||||
|
||||
PCollectionTuple cloudSqlSnapshot =
|
||||
SqlSnapshots.loadCloudSqlSnapshotByType(
|
||||
pipeline, SqlSnapshots.ALL_SQL_ENTITIES, sqlSnapshotId, compareStartTime);
|
||||
|
||||
verify(
|
||||
datastoreSnapshot.getAll().keySet().equals(cloudSqlSnapshot.getAll().keySet()),
|
||||
"Expecting the same set of types in both snapshots.");
|
||||
|
||||
PCollectionList<String> diffLogs = PCollectionList.empty(pipeline);
|
||||
|
||||
for (Class<? extends SqlEntity> clazz : SqlSnapshots.ALL_SQL_ENTITIES) {
|
||||
TupleTag<SqlEntity> tag = ValidateSqlUtils.createSqlEntityTupleTag(clazz);
|
||||
verify(
|
||||
datastoreSnapshot.has(tag), "Missing %s in Datastore snapshot.", clazz.getSimpleName());
|
||||
verify(cloudSqlSnapshot.has(tag), "Missing %s in Cloud SQL snapshot.", clazz.getSimpleName());
|
||||
diffLogs =
|
||||
diffLogs.and(
|
||||
PCollectionList.of(datastoreSnapshot.get(tag))
|
||||
.and(cloudSqlSnapshot.get(tag))
|
||||
.apply(
|
||||
"Combine from both snapshots: " + clazz.getSimpleName(),
|
||||
Flatten.pCollections())
|
||||
.apply(
|
||||
"Assign primary key to merged " + clazz.getSimpleName(),
|
||||
WithKeys.of(ValidateDatabasePipeline::getPrimaryKeyString)
|
||||
.withKeyType(strings()))
|
||||
.apply("Group by primary key " + clazz.getSimpleName(), GroupByKey.create())
|
||||
.apply("Compare " + clazz.getSimpleName(), ParDo.of(new CompareSqlEntity())));
|
||||
}
|
||||
if (diffOutputPath.isPresent()) {
|
||||
diffLogs
|
||||
.apply("Gather diff logs", Flatten.pCollections())
|
||||
.apply(
|
||||
"Output diffs",
|
||||
TextIO.write()
|
||||
.to(diffOutputPath.get())
|
||||
/**
|
||||
* Output to a single file for ease of use since diffs should be few. If this
|
||||
* assumption turns out not to be false, user should abort the pipeline and
|
||||
* investigate why.
|
||||
*/
|
||||
.withoutSharding()
|
||||
.withDelimiter((Strings.repeat("-", 80) + "\n").toCharArray()));
|
||||
}
|
||||
}
|
||||
|
||||
private static String getPrimaryKeyString(SqlEntity sqlEntity) {
|
||||
// SqlEntity.getPrimaryKeyString only works with entities registered with Hibernate.
|
||||
// We are using the BulkQueryJpaTransactionManager, which does not recognize DomainBase and
|
||||
// DomainHistory. See BulkQueryEntities.java for more information.
|
||||
if (sqlEntity instanceof DomainBase) {
|
||||
return "DomainBase_" + ((DomainBase) sqlEntity).getRepoId();
|
||||
}
|
||||
if (sqlEntity instanceof DomainHistory) {
|
||||
return "DomainHistory_" + ((DomainHistory) sqlEntity).getDomainHistoryId().toString();
|
||||
}
|
||||
return sqlEntity.getPrimaryKeyString();
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
ValidateDatabasePipelineOptions options =
|
||||
PipelineOptionsFactory.fromArgs(args)
|
||||
.withValidation()
|
||||
.as(ValidateDatabasePipelineOptions.class);
|
||||
RegistryPipelineOptions.validateRegistryPipelineOptions(options);
|
||||
|
||||
// Defensively set important options.
|
||||
options.setIsolationOverride(TransactionIsolationLevel.TRANSACTION_REPEATABLE_READ);
|
||||
options.setJpaTransactionManagerType(JpaTransactionManagerType.BULK_QUERY);
|
||||
|
||||
// Set up JPA in the pipeline harness (the locally executed part of the main() method). Reuse
|
||||
// code in RegistryPipelineWorkerInitializer, which only applies to pipeline worker VMs.
|
||||
new RegistryPipelineWorkerInitializer().beforeProcessing(options);
|
||||
|
||||
LatestDatastoreSnapshotFinder datastoreSnapshotFinder =
|
||||
DaggerLatestDatastoreSnapshotFinder_LatestDatastoreSnapshotFinderFinderComponent.create()
|
||||
.datastoreSnapshotInfoFinder();
|
||||
|
||||
new ValidateDatabasePipeline(options, datastoreSnapshotFinder).run(Pipeline.create(options));
|
||||
}
|
||||
}
|
||||
@@ -14,14 +14,15 @@
|
||||
|
||||
package google.registry.beam.comparedb;
|
||||
|
||||
import google.registry.beam.common.RegistryPipelineOptions;
|
||||
import google.registry.model.annotations.DeleteAfterMigration;
|
||||
import javax.annotation.Nullable;
|
||||
import org.apache.beam.sdk.options.Description;
|
||||
import org.apache.beam.sdk.options.Validation;
|
||||
|
||||
/** BEAM pipeline options for {@link ValidateDatastorePipelineOptions}. */
|
||||
/** BEAM pipeline options for {@link ValidateDatabasePipeline}. */
|
||||
@DeleteAfterMigration
|
||||
public interface ValidateDatastorePipelineOptions extends ValidateSqlPipelineOptions {
|
||||
public interface ValidateDatabasePipelineOptions extends RegistryPipelineOptions {
|
||||
|
||||
@Description(
|
||||
"The id of the SQL snapshot to be compared with Datastore. "
|
||||
@@ -36,4 +37,19 @@ public interface ValidateDatastorePipelineOptions extends ValidateSqlPipelineOpt
|
||||
String getLatestCommitLogTimestamp();
|
||||
|
||||
void setLatestCommitLogTimestamp(String commitLogEndTimestamp);
|
||||
|
||||
@Description(
|
||||
"For history entries and EPP resources, only those modified strictly after this time are "
|
||||
+ "included in comparison. Value is in ISO8601 format. "
|
||||
+ "Other entity types are not affected.")
|
||||
@Nullable
|
||||
String getComparisonStartTimestamp();
|
||||
|
||||
void setComparisonStartTimestamp(String comparisonStartTimestamp);
|
||||
|
||||
@Description("The GCS bucket where discrepancies found during comparison should be logged.")
|
||||
@Nullable
|
||||
String getDiffOutputGcsBucket();
|
||||
|
||||
void setDiffOutputGcsBucket(String gcsBucket);
|
||||
}
|
||||
@@ -1,83 +0,0 @@
|
||||
// Copyright 2022 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.beam.comparedb;
|
||||
|
||||
import google.registry.beam.common.RegistryPipelineOptions;
|
||||
import google.registry.beam.common.RegistryPipelineWorkerInitializer;
|
||||
import google.registry.beam.comparedb.LatestDatastoreSnapshotFinder.DatastoreSnapshotInfo;
|
||||
import google.registry.model.annotations.DeleteAfterMigration;
|
||||
import google.registry.persistence.PersistenceModule.JpaTransactionManagerType;
|
||||
import google.registry.persistence.PersistenceModule.TransactionIsolationLevel;
|
||||
import java.util.Optional;
|
||||
import org.apache.beam.sdk.Pipeline;
|
||||
import org.apache.beam.sdk.options.PipelineOptionsFactory;
|
||||
import org.joda.time.DateTime;
|
||||
|
||||
/**
|
||||
* Validates the asynchronous data replication process from Cloud SQL (primary) to Datastore
|
||||
* (secondary).
|
||||
*
|
||||
* <p>This pipeline simply compares the snapshots provided by an invoker, which is responsible for
|
||||
* obtaining two consistent snapshots for the same point of time.
|
||||
*/
|
||||
// TODO(weiminyu): Implement the invoker action in a followup PR.
|
||||
@DeleteAfterMigration
|
||||
public class ValidateDatastorePipeline {
|
||||
|
||||
private final ValidateDatastorePipelineOptions options;
|
||||
private final LatestDatastoreSnapshotFinder datastoreSnapshotFinder;
|
||||
|
||||
public ValidateDatastorePipeline(
|
||||
ValidateDatastorePipelineOptions options,
|
||||
LatestDatastoreSnapshotFinder datastoreSnapshotFinder) {
|
||||
this.options = options;
|
||||
this.datastoreSnapshotFinder = datastoreSnapshotFinder;
|
||||
}
|
||||
|
||||
void run(Pipeline pipeline) {
|
||||
DateTime latestCommitLogTime = DateTime.parse(options.getLatestCommitLogTimestamp());
|
||||
DatastoreSnapshotInfo mostRecentExport =
|
||||
datastoreSnapshotFinder.getSnapshotInfo(latestCommitLogTime.toInstant());
|
||||
|
||||
ValidateSqlPipeline.setupPipeline(
|
||||
pipeline,
|
||||
Optional.ofNullable(options.getSqlSnapshotId()),
|
||||
mostRecentExport,
|
||||
latestCommitLogTime,
|
||||
Optional.ofNullable(options.getComparisonStartTimestamp()).map(DateTime::parse));
|
||||
|
||||
pipeline.run();
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
ValidateDatastorePipelineOptions options =
|
||||
PipelineOptionsFactory.fromArgs(args)
|
||||
.withValidation()
|
||||
.as(ValidateDatastorePipelineOptions.class);
|
||||
RegistryPipelineOptions.validateRegistryPipelineOptions(options);
|
||||
|
||||
// Defensively set important options.
|
||||
options.setIsolationOverride(TransactionIsolationLevel.TRANSACTION_REPEATABLE_READ);
|
||||
options.setJpaTransactionManagerType(JpaTransactionManagerType.BULK_QUERY);
|
||||
|
||||
// Reuse Dataflow worker initialization code to set up JPA in the pipeline harness.
|
||||
new RegistryPipelineWorkerInitializer().beforeProcessing(options);
|
||||
|
||||
LatestDatastoreSnapshotFinder datastoreSnapshotFinder =
|
||||
DaggerLatestDatastoreSnapshotFinder_LatestDatastoreSnapshotFinderFinderComponent.create()
|
||||
.datastoreSnapshotInfoFinder();
|
||||
new ValidateDatastorePipeline(options, datastoreSnapshotFinder).run(Pipeline.create(options));
|
||||
}
|
||||
}
|
||||
@@ -1,264 +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.beam.comparedb;
|
||||
|
||||
import static com.google.common.base.Verify.verify;
|
||||
import static org.apache.beam.sdk.values.TypeDescriptors.strings;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.common.base.Stopwatch;
|
||||
import com.google.common.flogger.FluentLogger;
|
||||
import google.registry.beam.common.DatabaseSnapshot;
|
||||
import google.registry.beam.common.RegistryPipelineWorkerInitializer;
|
||||
import google.registry.beam.comparedb.LatestDatastoreSnapshotFinder.DatastoreSnapshotInfo;
|
||||
import google.registry.beam.comparedb.ValidateSqlUtils.CompareSqlEntity;
|
||||
import google.registry.model.annotations.DeleteAfterMigration;
|
||||
import google.registry.model.common.DatabaseMigrationStateSchedule;
|
||||
import google.registry.model.common.DatabaseMigrationStateSchedule.MigrationState;
|
||||
import google.registry.model.common.DatabaseMigrationStateSchedule.ReplayDirection;
|
||||
import google.registry.model.domain.DomainBase;
|
||||
import google.registry.model.domain.DomainHistory;
|
||||
import google.registry.model.replay.SqlEntity;
|
||||
import google.registry.model.replay.SqlReplayCheckpoint;
|
||||
import google.registry.model.server.Lock;
|
||||
import google.registry.persistence.PersistenceModule.JpaTransactionManagerType;
|
||||
import google.registry.persistence.PersistenceModule.TransactionIsolationLevel;
|
||||
import google.registry.persistence.transaction.TransactionManagerFactory;
|
||||
import google.registry.util.RequestStatusChecker;
|
||||
import google.registry.util.SystemClock;
|
||||
import java.io.Serializable;
|
||||
import java.util.Optional;
|
||||
import org.apache.beam.sdk.Pipeline;
|
||||
import org.apache.beam.sdk.PipelineResult.State;
|
||||
import org.apache.beam.sdk.coders.SerializableCoder;
|
||||
import org.apache.beam.sdk.options.PipelineOptionsFactory;
|
||||
import org.apache.beam.sdk.transforms.Flatten;
|
||||
import org.apache.beam.sdk.transforms.GroupByKey;
|
||||
import org.apache.beam.sdk.transforms.ParDo;
|
||||
import org.apache.beam.sdk.transforms.WithKeys;
|
||||
import org.apache.beam.sdk.values.PCollectionList;
|
||||
import org.apache.beam.sdk.values.PCollectionTuple;
|
||||
import org.apache.beam.sdk.values.TupleTag;
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.Duration;
|
||||
|
||||
/**
|
||||
* Validates the asynchronous data replication process from Datastore (primary storage) to Cloud SQL
|
||||
* (secondary storage).
|
||||
*/
|
||||
@DeleteAfterMigration
|
||||
public class ValidateSqlPipeline {
|
||||
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
|
||||
|
||||
/** Specifies the extra CommitLogs to load before the start of a Database export. */
|
||||
private static final Duration COMMITLOG_START_TIME_MARGIN = Duration.standardMinutes(10);
|
||||
|
||||
/**
|
||||
* Name of the lock used by the commitlog replay process.
|
||||
*
|
||||
* <p>See {@link google.registry.backup.ReplayCommitLogsToSqlAction} for more information.
|
||||
*/
|
||||
private static final String COMMITLOG_REPLAY_LOCK_NAME = "ReplayCommitLogsToSqlAction";
|
||||
|
||||
private static final Duration REPLAY_LOCK_LEASE_LENGTH = Duration.standardHours(1);
|
||||
private static final java.time.Duration REPLAY_LOCK_ACQUIRE_TIMEOUT =
|
||||
java.time.Duration.ofMinutes(6);
|
||||
private static final java.time.Duration REPLAY_LOCK_ACQUIRE_DELAY =
|
||||
java.time.Duration.ofSeconds(30);
|
||||
|
||||
private final ValidateSqlPipelineOptions options;
|
||||
private final LatestDatastoreSnapshotFinder datastoreSnapshotFinder;
|
||||
|
||||
public ValidateSqlPipeline(
|
||||
ValidateSqlPipelineOptions options, LatestDatastoreSnapshotFinder datastoreSnapshotFinder) {
|
||||
this.options = options;
|
||||
this.datastoreSnapshotFinder = datastoreSnapshotFinder;
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
void run(Pipeline pipeline) {
|
||||
Optional<Lock> lock = acquireCommitLogReplayLock();
|
||||
if (lock.isPresent()) {
|
||||
logger.atInfo().log("Acquired CommitLog Replay lock.");
|
||||
} else {
|
||||
throw new RuntimeException("Failed to acquire CommitLog Replay lock.");
|
||||
}
|
||||
|
||||
try {
|
||||
DateTime latestCommitLogTime =
|
||||
TransactionManagerFactory.jpaTm().transact(() -> SqlReplayCheckpoint.get());
|
||||
DatastoreSnapshotInfo mostRecentExport =
|
||||
datastoreSnapshotFinder.getSnapshotInfo(latestCommitLogTime.toInstant());
|
||||
Preconditions.checkState(
|
||||
latestCommitLogTime.isAfter(mostRecentExport.exportInterval().getEnd()),
|
||||
"Cannot recreate Datastore snapshot since target time is in the middle of an export.");
|
||||
try (DatabaseSnapshot databaseSnapshot = DatabaseSnapshot.createSnapshot()) {
|
||||
// Eagerly release the commitlog replay lock so that replay can resume.
|
||||
lock.ifPresent(Lock::releaseSql);
|
||||
lock = Optional.empty();
|
||||
|
||||
logger.atInfo().log(
|
||||
"Starting comparison with export at %s and latestCommitLogTime at %s",
|
||||
mostRecentExport.exportDir(), latestCommitLogTime);
|
||||
|
||||
setupPipeline(
|
||||
pipeline,
|
||||
Optional.of(databaseSnapshot.getSnapshotId()),
|
||||
mostRecentExport,
|
||||
latestCommitLogTime,
|
||||
Optional.ofNullable(options.getComparisonStartTimestamp()).map(DateTime::parse));
|
||||
State state = pipeline.run().waitUntilFinish();
|
||||
if (!State.DONE.equals(state)) {
|
||||
throw new IllegalStateException("Unexpected pipeline state: " + state);
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
lock.ifPresent(Lock::releaseSql);
|
||||
}
|
||||
}
|
||||
|
||||
static void setupPipeline(
|
||||
Pipeline pipeline,
|
||||
Optional<String> sqlSnapshotId,
|
||||
DatastoreSnapshotInfo mostRecentExport,
|
||||
DateTime latestCommitLogTime,
|
||||
Optional<DateTime> compareStartTime) {
|
||||
pipeline
|
||||
.getCoderRegistry()
|
||||
.registerCoderForClass(SqlEntity.class, SerializableCoder.of(Serializable.class));
|
||||
|
||||
PCollectionTuple datastoreSnapshot =
|
||||
DatastoreSnapshots.loadDatastoreSnapshotByKind(
|
||||
pipeline,
|
||||
mostRecentExport.exportDir(),
|
||||
mostRecentExport.commitLogDir(),
|
||||
mostRecentExport.exportInterval().getStart().minus(COMMITLOG_START_TIME_MARGIN),
|
||||
// Increase by 1ms since we want to include commitLogs latestCommitLogTime but
|
||||
// this parameter is exclusive.
|
||||
latestCommitLogTime.plusMillis(1),
|
||||
DatastoreSnapshots.ALL_DATASTORE_KINDS,
|
||||
compareStartTime);
|
||||
|
||||
PCollectionTuple cloudSqlSnapshot =
|
||||
SqlSnapshots.loadCloudSqlSnapshotByType(
|
||||
pipeline, SqlSnapshots.ALL_SQL_ENTITIES, sqlSnapshotId, compareStartTime);
|
||||
|
||||
verify(
|
||||
datastoreSnapshot.getAll().keySet().equals(cloudSqlSnapshot.getAll().keySet()),
|
||||
"Expecting the same set of types in both snapshots.");
|
||||
|
||||
for (Class<? extends SqlEntity> clazz : SqlSnapshots.ALL_SQL_ENTITIES) {
|
||||
TupleTag<SqlEntity> tag = ValidateSqlUtils.createSqlEntityTupleTag(clazz);
|
||||
verify(
|
||||
datastoreSnapshot.has(tag), "Missing %s in Datastore snapshot.", clazz.getSimpleName());
|
||||
verify(cloudSqlSnapshot.has(tag), "Missing %s in Cloud SQL snapshot.", clazz.getSimpleName());
|
||||
PCollectionList.of(datastoreSnapshot.get(tag))
|
||||
.and(cloudSqlSnapshot.get(tag))
|
||||
.apply("Combine from both snapshots: " + clazz.getSimpleName(), Flatten.pCollections())
|
||||
.apply(
|
||||
"Assign primary key to merged " + clazz.getSimpleName(),
|
||||
WithKeys.of(ValidateSqlPipeline::getPrimaryKeyString).withKeyType(strings()))
|
||||
.apply("Group by primary key " + clazz.getSimpleName(), GroupByKey.create())
|
||||
.apply("Compare " + clazz.getSimpleName(), ParDo.of(new CompareSqlEntity()));
|
||||
}
|
||||
}
|
||||
|
||||
private static String getPrimaryKeyString(SqlEntity sqlEntity) {
|
||||
// SqlEntity.getPrimaryKeyString only works with entities registered with Hibernate.
|
||||
// We are using the BulkQueryJpaTransactionManager, which does not recognize DomainBase and
|
||||
// DomainHistory. See BulkQueryEntities.java for more information.
|
||||
if (sqlEntity instanceof DomainBase) {
|
||||
return "DomainBase_" + ((DomainBase) sqlEntity).getRepoId();
|
||||
}
|
||||
if (sqlEntity instanceof DomainHistory) {
|
||||
return "DomainHistory_" + ((DomainHistory) sqlEntity).getDomainHistoryId().toString();
|
||||
}
|
||||
return sqlEntity.getPrimaryKeyString();
|
||||
}
|
||||
|
||||
private static Optional<Lock> acquireCommitLogReplayLock() {
|
||||
Stopwatch stopwatch = Stopwatch.createStarted();
|
||||
while (stopwatch.elapsed().minus(REPLAY_LOCK_ACQUIRE_TIMEOUT).isNegative()) {
|
||||
Optional<Lock> lock = tryAcquireCommitLogReplayLock();
|
||||
if (lock.isPresent()) {
|
||||
return lock;
|
||||
}
|
||||
logger.atInfo().log("Failed to acquired CommitLog Replay lock. Will retry...");
|
||||
try {
|
||||
Thread.sleep(REPLAY_LOCK_ACQUIRE_DELAY.toMillis());
|
||||
} catch (InterruptedException e) {
|
||||
Thread.currentThread().interrupt();
|
||||
throw new RuntimeException("Interrupted.");
|
||||
}
|
||||
}
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
private static Optional<Lock> tryAcquireCommitLogReplayLock() {
|
||||
return Lock.acquireSql(
|
||||
COMMITLOG_REPLAY_LOCK_NAME,
|
||||
null,
|
||||
REPLAY_LOCK_LEASE_LENGTH,
|
||||
getLockingRequestStatusChecker(),
|
||||
false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a fake implementation of {@link RequestStatusChecker} that is required for lock
|
||||
* acquisition. The default implementation is AppEngine-specific and is unusable on GCE.
|
||||
*/
|
||||
private static RequestStatusChecker getLockingRequestStatusChecker() {
|
||||
return new RequestStatusChecker() {
|
||||
@Override
|
||||
public String getLogId() {
|
||||
return "ValidateSqlPipeline";
|
||||
}
|
||||
|
||||
LatestDatastoreSnapshotFinder datastoreSnapshotFinder =
|
||||
DaggerLatestDatastoreSnapshotFinder_LatestDatastoreSnapshotFinderFinderComponent.create()
|
||||
.datastoreSnapshotInfoFinder();
|
||||
|
||||
@Override
|
||||
public boolean isRunning(String requestLogId) {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
ValidateSqlPipelineOptions options =
|
||||
PipelineOptionsFactory.fromArgs(args).withValidation().as(ValidateSqlPipelineOptions.class);
|
||||
|
||||
// Defensively set important options.
|
||||
options.setIsolationOverride(TransactionIsolationLevel.TRANSACTION_REPEATABLE_READ);
|
||||
options.setJpaTransactionManagerType(JpaTransactionManagerType.BULK_QUERY);
|
||||
|
||||
// Reuse Dataflow worker initialization code to set up JPA in the pipeline harness.
|
||||
new RegistryPipelineWorkerInitializer().beforeProcessing(options);
|
||||
|
||||
MigrationState state =
|
||||
DatabaseMigrationStateSchedule.getValueAtTime(new SystemClock().nowUtc());
|
||||
if (!state.getReplayDirection().equals(ReplayDirection.DATASTORE_TO_SQL)) {
|
||||
throw new IllegalStateException("This pipeline is not designed for migration phase " + state);
|
||||
}
|
||||
|
||||
LatestDatastoreSnapshotFinder datastoreSnapshotFinder =
|
||||
DaggerLatestDatastoreSnapshotFinder_LatestDatastoreSnapshotFinderFinderComponent.create()
|
||||
.datastoreSnapshotInfoFinder();
|
||||
|
||||
new ValidateSqlPipeline(options, datastoreSnapshotFinder).run(Pipeline.create(options));
|
||||
}
|
||||
}
|
||||
@@ -1,34 +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.beam.comparedb;
|
||||
|
||||
import google.registry.beam.common.RegistryPipelineOptions;
|
||||
import google.registry.model.annotations.DeleteAfterMigration;
|
||||
import javax.annotation.Nullable;
|
||||
import org.apache.beam.sdk.options.Description;
|
||||
|
||||
/** BEAM pipeline options for {@link ValidateSqlPipeline}. */
|
||||
@DeleteAfterMigration
|
||||
public interface ValidateSqlPipelineOptions extends RegistryPipelineOptions {
|
||||
|
||||
@Description(
|
||||
"For history entries and EPP resources, only those modified strictly after this time are "
|
||||
+ "included in comparison. Value is in ISO8601 format. "
|
||||
+ "Other entity types are not affected.")
|
||||
@Nullable
|
||||
String getComparisonStartTimestamp();
|
||||
|
||||
void setComparisonStartTimestamp(String comparisonStartTimestamp);
|
||||
}
|
||||
@@ -20,10 +20,10 @@ import static google.registry.persistence.transaction.TransactionManagerFactory.
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.flogger.FluentLogger;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Maps.EntryTransformer;
|
||||
import google.registry.beam.initsql.Transforms;
|
||||
import google.registry.config.RegistryEnvironment;
|
||||
import google.registry.model.BackupGroupRoot;
|
||||
import google.registry.model.EppResource;
|
||||
import google.registry.model.ImmutableObject;
|
||||
import google.registry.model.annotations.DeleteAfterMigration;
|
||||
@@ -38,24 +38,29 @@ import google.registry.model.poll.PollMessage;
|
||||
import google.registry.model.registrar.Registrar;
|
||||
import google.registry.model.replay.SqlEntity;
|
||||
import google.registry.model.reporting.HistoryEntry;
|
||||
import google.registry.util.DiffUtils;
|
||||
import java.io.Serializable;
|
||||
import java.lang.reflect.Field;
|
||||
import java.math.BigInteger;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import org.apache.beam.sdk.metrics.Counter;
|
||||
import org.apache.beam.sdk.metrics.Metrics;
|
||||
import org.apache.beam.sdk.transforms.DoFn;
|
||||
import org.apache.beam.sdk.values.KV;
|
||||
import org.apache.beam.sdk.values.TupleTag;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
|
||||
/** Helpers for use by {@link ValidateSqlPipeline}. */
|
||||
/** Helpers for use by {@link ValidateDatabasePipeline}. */
|
||||
@DeleteAfterMigration
|
||||
final class ValidateSqlUtils {
|
||||
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
|
||||
|
||||
private ValidateSqlUtils() {}
|
||||
|
||||
@@ -67,7 +72,7 @@ final class ValidateSqlUtils {
|
||||
* Query template for finding the median value of the {@code history_revision_id} column in one of
|
||||
* the History tables.
|
||||
*
|
||||
* <p>The {@link ValidateSqlPipeline} uses this query to parallelize the query to some of the
|
||||
* <p>The {@link ValidateDatabasePipeline} uses this query to parallelize the query to some of the
|
||||
* history tables. Although the {@code repo_id} column is the leading column in the primary keys
|
||||
* of these tables, in practice and with production data, division by {@code history_revision_id}
|
||||
* works slightly faster for unknown reasons.
|
||||
@@ -99,13 +104,12 @@ final class ValidateSqlUtils {
|
||||
return new TupleTag<SqlEntity>(actualType.getSimpleName()) {};
|
||||
}
|
||||
|
||||
static class CompareSqlEntity extends DoFn<KV<String, Iterable<SqlEntity>>, Void> {
|
||||
static class CompareSqlEntity extends DoFn<KV<String, Iterable<SqlEntity>>, String> {
|
||||
private final HashMap<String, Counter> totalCounters = new HashMap<>();
|
||||
private final HashMap<String, Counter> missingCounters = new HashMap<>();
|
||||
private final HashMap<String, Counter> unequalCounters = new HashMap<>();
|
||||
private final HashMap<String, Counter> badEntityCounters = new HashMap<>();
|
||||
|
||||
private volatile boolean logPrinted = false;
|
||||
private final HashMap<String, Counter> duplicateEntityCounters = new HashMap<>();
|
||||
|
||||
private String getCounterKey(Class<?> clazz) {
|
||||
return PollMessage.class.isAssignableFrom(clazz) ? "PollMessage" : clazz.getSimpleName();
|
||||
@@ -120,84 +124,129 @@ final class ValidateSqlUtils {
|
||||
counterKey, Metrics.counter("CompareDB", "Missing In One DB: " + counterKey));
|
||||
unequalCounters.put(counterKey, Metrics.counter("CompareDB", "Not Equal:" + counterKey));
|
||||
badEntityCounters.put(counterKey, Metrics.counter("CompareDB", "Bad Entities:" + counterKey));
|
||||
duplicateEntityCounters.put(
|
||||
counterKey, Metrics.counter("CompareDB", "Duplicate Entities:" + counterKey));
|
||||
}
|
||||
|
||||
String duplicateEntityLog(String key, ImmutableList<SqlEntity> entities) {
|
||||
return String.format("%s: %d entities.", key, entities.size());
|
||||
}
|
||||
|
||||
String unmatchedEntityLog(String key, SqlEntity entry) {
|
||||
// For a PollMessage only found in Datastore, key is not enough to query for it.
|
||||
return String.format("Missing in one DB:\n%s", entry instanceof PollMessage ? entry : key);
|
||||
}
|
||||
|
||||
/**
|
||||
* A rudimentary debugging helper that prints the first pair of unequal entities in each worker.
|
||||
* This will be removed when we start exporting such entities to GCS.
|
||||
*/
|
||||
void logDiff(String key, Object entry0, Object entry1) {
|
||||
if (logPrinted) {
|
||||
return;
|
||||
}
|
||||
logPrinted = true;
|
||||
String unEqualEntityLog(String key, SqlEntity entry0, SqlEntity entry1) {
|
||||
Map<String, Object> fields0 = ((ImmutableObject) entry0).toDiffableFieldMap();
|
||||
Map<String, Object> fields1 = ((ImmutableObject) entry1).toDiffableFieldMap();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
fields0.forEach(
|
||||
(field, value) -> {
|
||||
if (fields1.containsKey(field)) {
|
||||
if (!Objects.equals(value, fields1.get(field))) {
|
||||
sb.append(field + " not match: " + value + " -> " + fields1.get(field) + "\n");
|
||||
}
|
||||
} else {
|
||||
sb.append(field + "Not found in entity 2\n");
|
||||
}
|
||||
});
|
||||
fields1.forEach(
|
||||
(field, value) -> {
|
||||
if (!fields0.containsKey(field)) {
|
||||
sb.append(field + "Not found in entity 1\n");
|
||||
}
|
||||
});
|
||||
logger.atWarning().log(key + " " + sb.toString());
|
||||
return key + " " + DiffUtils.prettyPrintEntityDeepDiff(fields0, fields1);
|
||||
}
|
||||
|
||||
String badEntitiesLog(String key, SqlEntity entry0, SqlEntity entry1) {
|
||||
Map<String, Object> fields0 = ((ImmutableObject) entry0).toDiffableFieldMap();
|
||||
Map<String, Object> fields1 = ((ImmutableObject) entry1).toDiffableFieldMap();
|
||||
return String.format(
|
||||
"Failed to parse one or both entities for key %s:\n%s\n",
|
||||
key, DiffUtils.prettyPrintEntityDeepDiff(fields0, fields1));
|
||||
}
|
||||
|
||||
@ProcessElement
|
||||
public void processElement(@Element KV<String, Iterable<SqlEntity>> kv) {
|
||||
public void processElement(
|
||||
@Element KV<String, Iterable<SqlEntity>> kv, OutputReceiver<String> out) {
|
||||
ImmutableList<SqlEntity> entities = ImmutableList.copyOf(kv.getValue());
|
||||
|
||||
verify(!entities.isEmpty(), "Can't happen: no value for key %s.", kv.getKey());
|
||||
verify(entities.size() <= 2, "Unexpected duplicates for key %s", kv.getKey());
|
||||
|
||||
String counterKey = getCounterKey(entities.get(0).getClass());
|
||||
ensureCounterExists(counterKey);
|
||||
totalCounters.get(counterKey).inc();
|
||||
|
||||
if (entities.size() > 2) {
|
||||
// Duplicates may happen with Cursors if imported across projects. Its key in Datastore, the
|
||||
// id field, encodes the project name and is not fixed by the importing job.
|
||||
duplicateEntityCounters.get(counterKey).inc();
|
||||
out.output(duplicateEntityLog(kv.getKey(), entities) + "\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (entities.size() == 1) {
|
||||
if (isSpecialCaseProberEntity(entities.get(0))) {
|
||||
return;
|
||||
}
|
||||
missingCounters.get(counterKey).inc();
|
||||
// Temporary debugging help. See logDiff() above.
|
||||
if (!logPrinted) {
|
||||
logPrinted = true;
|
||||
logger.atWarning().log("Unexpected single entity: %s", kv.getKey());
|
||||
}
|
||||
out.output(unmatchedEntityLog(kv.getKey(), entities.get(0)) + "\n");
|
||||
return;
|
||||
}
|
||||
SqlEntity entity0 = entities.get(0);
|
||||
SqlEntity entity1 = entities.get(1);
|
||||
|
||||
if (isSpecialCaseProberEntity(entity0) && isSpecialCaseProberEntity(entity1)) {
|
||||
// Ignore prober-related data: their deletions are not propagated from Datastore to SQL.
|
||||
// When code reaches here, in most cases it involves one soft deleted entity in Datastore
|
||||
// and an SQL entity with its pre-deletion status.
|
||||
return;
|
||||
}
|
||||
SqlEntity entity0;
|
||||
SqlEntity entity1;
|
||||
|
||||
try {
|
||||
entity0 = normalizeEntity(entities.get(0));
|
||||
entity1 = normalizeEntity(entities.get(1));
|
||||
entity0 = normalizeEntity(entity0);
|
||||
entity1 = normalizeEntity(entity1);
|
||||
} catch (Exception e) {
|
||||
// Temporary debugging help. See logDiff() above.
|
||||
if (!logPrinted) {
|
||||
logPrinted = true;
|
||||
badEntityCounters.get(counterKey).inc();
|
||||
}
|
||||
badEntityCounters.get(counterKey).inc();
|
||||
out.output(badEntitiesLog(kv.getKey(), entity0, entity1));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!Objects.equals(entity0, entity1)) {
|
||||
Map<String, Object> fields0 =
|
||||
Maps.transformEntries(
|
||||
((ImmutableObject) entity0).toDiffableFieldMap(), new DiffableFieldNormalizer());
|
||||
Map<String, Object> fields1 =
|
||||
Maps.transformEntries(
|
||||
((ImmutableObject) entity1).toDiffableFieldMap(), new DiffableFieldNormalizer());
|
||||
if (!Objects.equals(fields0, fields1)) {
|
||||
unequalCounters.get(counterKey).inc();
|
||||
logDiff(kv.getKey(), entities.get(0), entities.get(1));
|
||||
out.output(kv.getKey() + " " + DiffUtils.prettyPrintEntityDeepDiff(fields0, fields1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Normalizes trivial differences between objects persisted in Datastore and SQL.
|
||||
*
|
||||
* <p>This class works on a map generated by {@link ImmutableObject#toDiffableFieldMap}, and
|
||||
* performs the following changes:
|
||||
*
|
||||
* <ul>
|
||||
* <li>If a value is an empty {@link Collection}, it is converted to null
|
||||
* <li>For each {@link google.registry.model.eppcommon.Address} object, empty strings are
|
||||
* removed from its {@code string} field, which is a {@link List}.
|
||||
* </ul>
|
||||
*/
|
||||
static class DiffableFieldNormalizer
|
||||
implements EntryTransformer<String, Object, Object>, Serializable {
|
||||
|
||||
@Override
|
||||
public Object transformEntry(String key, @Nullable Object value) {
|
||||
if (value instanceof Collection && ((Collection<?>) value).isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
if (key.equals("street") && value instanceof List) {
|
||||
return ((List<?>) value)
|
||||
.stream().filter(v -> v != null && !Objects.equals("", v)).collect(Collectors.toList());
|
||||
}
|
||||
// Short-term hack: LinkedHashMap<String, ?> represents a child ImmutableObject instance.
|
||||
if (value instanceof LinkedHashMap
|
||||
&& ((LinkedHashMap<?, ?>) value).keySet().stream().anyMatch(e -> e instanceof String)) {
|
||||
return Maps.transformEntries((Map<String, Object>) value, this);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
static SqlEntity normalizeEntity(SqlEntity sqlEntity) {
|
||||
if (sqlEntity instanceof EppResource) {
|
||||
return normalizeEppResource(sqlEntity);
|
||||
@@ -218,15 +267,6 @@ final class ValidateSqlUtils {
|
||||
*/
|
||||
static SqlEntity normalizeEppResource(SqlEntity eppResource) {
|
||||
try {
|
||||
if (isSpecialCaseProberEntity(eppResource)) {
|
||||
// Clearing some timestamps. See isSpecialCaseProberEntity() for reasons.
|
||||
Field lastUpdateTime = BackupGroupRoot.class.getDeclaredField("updateTimestamp");
|
||||
lastUpdateTime.setAccessible(true);
|
||||
lastUpdateTime.set(eppResource, null);
|
||||
Field deletionTime = EppResource.class.getDeclaredField("deletionTime");
|
||||
deletionTime.setAccessible(true);
|
||||
deletionTime.set(eppResource, null);
|
||||
}
|
||||
Field authField =
|
||||
eppResource instanceof DomainContent
|
||||
? DomainContent.class.getDeclaredField("authInfo")
|
||||
|
||||
@@ -158,7 +158,7 @@ public class InitSqlPipeline implements Serializable {
|
||||
.addAll(toKindStrings(PHASE_TWO_ORDERED))
|
||||
.build()));
|
||||
|
||||
// Set up the pipeline to write entity kinds from PHASE_ONE_ORDERED to SQL. Return a object
|
||||
// Set up the pipeline to write entity kinds from PHASE_ONE_ORDERED to SQL. Return an object
|
||||
// that signals the completion of the phase.
|
||||
PCollection<Void> blocker =
|
||||
scheduleOnePhaseWrites(datastoreSnapshot, PHASE_ONE_ORDERED, Optional.empty(), null);
|
||||
|
||||
@@ -22,7 +22,7 @@ import static google.registry.beam.initsql.BackupPaths.getExportFilePatterns;
|
||||
import static google.registry.model.ofy.ObjectifyService.auditedOfy;
|
||||
import static google.registry.util.DateTimeUtils.START_OF_TIME;
|
||||
import static google.registry.util.DateTimeUtils.isBeforeOrAt;
|
||||
import static google.registry.util.DomainNameUtils.canonicalizeDomainName;
|
||||
import static google.registry.util.DomainNameUtils.canonicalizeHostname;
|
||||
import static java.util.Comparator.comparing;
|
||||
import static org.apache.beam.sdk.values.TypeDescriptors.kvs;
|
||||
import static org.apache.beam.sdk.values.TypeDescriptors.strings;
|
||||
@@ -343,11 +343,11 @@ public final class Transforms {
|
||||
// Canonicalize old domain/host names from 2016 and earlier before we were enforcing this.
|
||||
entity.setIndexedProperty(
|
||||
"fullyQualifiedDomainName",
|
||||
canonicalizeDomainName((String) entity.getProperty("fullyQualifiedDomainName")));
|
||||
canonicalizeHostname((String) entity.getProperty("fullyQualifiedDomainName")));
|
||||
} else if (entity.getKind().equals("HostResource")) {
|
||||
entity.setIndexedProperty(
|
||||
"fullyQualifiedHostName",
|
||||
canonicalizeDomainName((String) entity.getProperty("fullyQualifiedHostName")));
|
||||
canonicalizeHostname((String) entity.getProperty("fullyQualifiedHostName")));
|
||||
}
|
||||
return entity;
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ import static com.google.common.collect.ImmutableSet.toImmutableSet;
|
||||
import static google.registry.beam.BeamUtils.getQueryFromFile;
|
||||
import static org.apache.beam.sdk.values.TypeDescriptors.strings;
|
||||
|
||||
import com.google.common.flogger.FluentLogger;
|
||||
import google.registry.beam.common.RegistryJpaIO;
|
||||
import google.registry.beam.common.RegistryJpaIO.Read;
|
||||
import google.registry.beam.invoicing.BillingEvent.InvoiceGroupingKey;
|
||||
@@ -35,6 +36,7 @@ import java.time.LocalTime;
|
||||
import java.time.YearMonth;
|
||||
import java.time.ZoneId;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.regex.Pattern;
|
||||
import org.apache.beam.sdk.Pipeline;
|
||||
@@ -53,6 +55,7 @@ import org.apache.beam.sdk.transforms.PTransform;
|
||||
import org.apache.beam.sdk.values.KV;
|
||||
import org.apache.beam.sdk.values.PCollection;
|
||||
import org.apache.beam.sdk.values.TypeDescriptor;
|
||||
import org.joda.money.CurrencyUnit;
|
||||
|
||||
/**
|
||||
* Definition of a Dataflow Flex pipeline template, which generates a given month's invoices.
|
||||
@@ -73,6 +76,8 @@ public class InvoicingPipeline implements Serializable {
|
||||
private static final Pattern SQL_COMMENT_REGEX =
|
||||
Pattern.compile("^\\s*--.*\\n", Pattern.MULTILINE);
|
||||
|
||||
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
|
||||
|
||||
private final InvoicingPipelineOptions options;
|
||||
|
||||
InvoicingPipeline(InvoicingPipelineOptions options) {
|
||||
@@ -113,31 +118,44 @@ public class InvoicingPipeline implements Serializable {
|
||||
InvoicingPipelineOptions options, Pipeline pipeline) {
|
||||
Read<Object[], BillingEvent> read =
|
||||
RegistryJpaIO.read(
|
||||
makeCloudSqlQuery(options.getYearMonth()), false, InvoicingPipeline::parseRow);
|
||||
makeCloudSqlQuery(options.getYearMonth()), false, row -> parseRow(row).orElse(null));
|
||||
|
||||
return pipeline.apply("Read BillingEvents from Cloud SQL", read);
|
||||
PCollection<BillingEvent> billingEventsWithNulls =
|
||||
pipeline.apply("Read BillingEvents from Cloud SQL", read);
|
||||
|
||||
// Remove null billing events
|
||||
return billingEventsWithNulls.apply(Filter.by(Objects::nonNull));
|
||||
}
|
||||
|
||||
private static BillingEvent parseRow(Object[] row) {
|
||||
private static Optional<BillingEvent> parseRow(Object[] row) {
|
||||
google.registry.model.billing.BillingEvent.OneTime oneTime =
|
||||
(google.registry.model.billing.BillingEvent.OneTime) row[0];
|
||||
Registrar registrar = (Registrar) row[1];
|
||||
return BillingEvent.create(
|
||||
oneTime.getId(),
|
||||
DateTimeUtils.toZonedDateTime(oneTime.getBillingTime(), ZoneId.of("UTC")),
|
||||
DateTimeUtils.toZonedDateTime(oneTime.getEventTime(), ZoneId.of("UTC")),
|
||||
registrar.getRegistrarId(),
|
||||
registrar.getBillingIdentifier().toString(),
|
||||
registrar.getPoNumber().orElse(""),
|
||||
DomainNameUtils.getTldFromDomainName(oneTime.getTargetId()),
|
||||
oneTime.getReason().toString(),
|
||||
oneTime.getTargetId(),
|
||||
oneTime.getDomainRepoId(),
|
||||
Optional.ofNullable(oneTime.getPeriodYears()).orElse(0),
|
||||
oneTime.getCost().getCurrencyUnit().toString(),
|
||||
oneTime.getCost().getAmount().doubleValue(),
|
||||
String.join(
|
||||
" ", oneTime.getFlags().stream().map(Flag::toString).collect(toImmutableSet())));
|
||||
CurrencyUnit currency = oneTime.getCost().getCurrencyUnit();
|
||||
if (!registrar.getBillingAccountMap().containsKey(currency)) {
|
||||
logger.atSevere().log(
|
||||
"Registrar %s does not have a product account key for the currency unit: %s",
|
||||
registrar.getRegistrarId(), currency);
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
return Optional.of(
|
||||
BillingEvent.create(
|
||||
oneTime.getId(),
|
||||
DateTimeUtils.toZonedDateTime(oneTime.getBillingTime(), ZoneId.of("UTC")),
|
||||
DateTimeUtils.toZonedDateTime(oneTime.getEventTime(), ZoneId.of("UTC")),
|
||||
registrar.getRegistrarId(),
|
||||
registrar.getBillingAccountMap().get(currency),
|
||||
registrar.getPoNumber().orElse(""),
|
||||
DomainNameUtils.getTldFromDomainName(oneTime.getTargetId()),
|
||||
oneTime.getReason().toString(),
|
||||
oneTime.getTargetId(),
|
||||
oneTime.getDomainRepoId(),
|
||||
Optional.ofNullable(oneTime.getPeriodYears()).orElse(0),
|
||||
oneTime.getCost().getCurrencyUnit().toString(),
|
||||
oneTime.getCost().getAmount().doubleValue(),
|
||||
String.join(
|
||||
" ", oneTime.getFlags().stream().map(Flag::toString).collect(toImmutableSet()))));
|
||||
}
|
||||
|
||||
/** Transform that converts a {@code BillingEvent} into an invoice CSV row. */
|
||||
|
||||
@@ -68,6 +68,7 @@ import org.apache.beam.sdk.values.PDone;
|
||||
import org.bouncycastle.jce.provider.BouncyCastleProvider;
|
||||
import org.bouncycastle.openpgp.PGPPublicKey;
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.Duration;
|
||||
|
||||
public class RdeIO {
|
||||
|
||||
@@ -261,6 +262,7 @@ public class RdeIO {
|
||||
|
||||
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
|
||||
private static final long serialVersionUID = 5822176227753327224L;
|
||||
private static final Duration ENQUEUE_DELAY = Duration.standardMinutes(1);
|
||||
|
||||
private final CloudTasksUtils cloudTasksUtils;
|
||||
|
||||
@@ -271,10 +273,10 @@ public class RdeIO {
|
||||
@ProcessElement
|
||||
public void processElement(
|
||||
@Element KV<PendingDeposit, Integer> input, PipelineOptions options) {
|
||||
|
||||
tm().transact(
|
||||
() -> {
|
||||
PendingDeposit key = input.getKey();
|
||||
int revision = input.getValue();
|
||||
Registry registry = Registry.get(key.tld());
|
||||
Optional<Cursor> cursor =
|
||||
transactIfJpaTm(
|
||||
@@ -296,22 +298,30 @@ public class RdeIO {
|
||||
tm().put(Cursor.create(key.cursor(), newPosition, registry));
|
||||
logger.atInfo().log(
|
||||
"Rolled forward %s on %s cursor to %s.", key.cursor(), key.tld(), newPosition);
|
||||
RdeRevision.saveRevision(key.tld(), key.watermark(), key.mode(), revision);
|
||||
RdeRevision.saveRevision(key.tld(), key.watermark(), key.mode(), input.getValue());
|
||||
// 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 (key.mode() == RdeMode.FULL) {
|
||||
cloudTasksUtils.enqueue(
|
||||
RDE_UPLOAD_QUEUE,
|
||||
CloudTasksUtils.createPostTask(
|
||||
cloudTasksUtils.createPostTaskWithDelay(
|
||||
RdeUploadAction.PATH,
|
||||
Service.BACKEND.getServiceId(),
|
||||
ImmutableMultimap.of(
|
||||
RequestParameters.PARAM_TLD,
|
||||
key.tld(),
|
||||
RdeModule.PARAM_PREFIX,
|
||||
options.getJobName() + '/')));
|
||||
options.getJobName() + '/'),
|
||||
ENQUEUE_DELAY));
|
||||
} else {
|
||||
cloudTasksUtils.enqueue(
|
||||
BRDA_QUEUE,
|
||||
CloudTasksUtils.createPostTask(
|
||||
cloudTasksUtils.createPostTaskWithDelay(
|
||||
BrdaCopyAction.PATH,
|
||||
Service.BACKEND.getServiceId(),
|
||||
ImmutableMultimap.of(
|
||||
@@ -320,7 +330,8 @@ public class RdeIO {
|
||||
RdeModule.PARAM_WATERMARK,
|
||||
key.watermark().toString(),
|
||||
RdeModule.PARAM_PREFIX,
|
||||
options.getJobName() + '/')));
|
||||
options.getJobName() + '/'),
|
||||
ENQUEUE_DELAY));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
package google.registry.beam.rde;
|
||||
|
||||
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.beam.rde.RdePipeline.TupleTags.DOMAIN_FRAGMENTS;
|
||||
import static google.registry.beam.rde.RdePipeline.TupleTags.EXTERNAL_HOST_FRAGMENTS;
|
||||
@@ -28,10 +29,12 @@ import static google.registry.model.reporting.HistoryEntryDao.RESOURCE_TYPES_TO_
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.jpaTm;
|
||||
import static org.apache.beam.sdk.values.TypeDescriptors.kvs;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.google.common.collect.Streams;
|
||||
import com.google.common.flogger.FluentLogger;
|
||||
import com.google.common.io.BaseEncoding;
|
||||
import dagger.BindsInstance;
|
||||
import dagger.Component;
|
||||
@@ -198,6 +201,8 @@ public class RdePipeline implements Serializable {
|
||||
HostHistory.class,
|
||||
"hostBase");
|
||||
|
||||
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
|
||||
|
||||
@Inject
|
||||
RdePipeline(RdePipelineOptions options, GcsUtils gcsUtils, CloudTasksUtils cloudTasksUtils) {
|
||||
this.options = options;
|
||||
@@ -357,6 +362,33 @@ public class RdePipeline implements Serializable {
|
||||
.setCoder(KvCoder.of(StringUtf8Coder.of(), VarLongCoder.of()));
|
||||
}
|
||||
|
||||
private <T extends HistoryEntry> EppResource loadResourceByHistoryEntryId(
|
||||
Class<T> historyEntryClazz, String repoId, Iterable<Long> revisionIds) {
|
||||
ImmutableList<Long> ids = ImmutableList.copyOf(revisionIds);
|
||||
// The size should always be 1 because we are only getting one repo ID -> revision ID pair per
|
||||
// repo ID from the source transform (the JPA query in the method above). But for some reason
|
||||
// after CoGroupByKey (joining the revision IDs and the pending deposits on repo IDs), in
|
||||
// #removedUnreferencedResources, duplicate revision IDs are sometimes introduced. Here we
|
||||
// attempt to deduplicate the iterable. If it contains multiple revision IDs that are NOT the
|
||||
// same, we have a more serious problem as we cannot be sure which one to use. We should use the
|
||||
// highest revision ID, but we don't even know where it comes from, as the query should
|
||||
// definitively only give us one revision ID per repo ID. In this case we have to abort and
|
||||
// require manual intervention.
|
||||
if (ids.size() != 1) {
|
||||
ImmutableSet<Long> dedupedIds = ImmutableSet.copyOf(ids);
|
||||
checkState(
|
||||
dedupedIds.size() == 1,
|
||||
"Multiple unique revision IDs detected for %s repo ID %s: %s",
|
||||
EPP_RESOURCE_FIELD_NAME.get(historyEntryClazz),
|
||||
repoId,
|
||||
ids);
|
||||
logger.atSevere().log(
|
||||
"Duplicate revision IDs detected for %s repo ID %s: %s",
|
||||
EPP_RESOURCE_FIELD_NAME.get(historyEntryClazz), repoId, ids);
|
||||
}
|
||||
return loadResourceByHistoryEntryId(historyEntryClazz, repoId, ids.get(0));
|
||||
}
|
||||
|
||||
private <T extends HistoryEntry> EppResource loadResourceByHistoryEntryId(
|
||||
Class<T> historyEntryClazz, String repoId, long revisionId) {
|
||||
try {
|
||||
@@ -516,7 +548,7 @@ public class RdePipeline implements Serializable {
|
||||
loadResourceByHistoryEntryId(
|
||||
ContactHistory.class,
|
||||
kv.getKey(),
|
||||
kv.getValue().getOnly(REVISION_ID));
|
||||
kv.getValue().getAll(REVISION_ID));
|
||||
DepositFragment fragment = marshaller.marshalContact(contact);
|
||||
ImmutableSet<KV<PendingDeposit, DepositFragment>> fragments =
|
||||
Streams.stream(kv.getValue().getAll(PENDING_DEPOSIT))
|
||||
@@ -549,8 +581,8 @@ public class RdePipeline implements Serializable {
|
||||
loadResourceByHistoryEntryId(
|
||||
HostHistory.class,
|
||||
kv.getKey(),
|
||||
kv.getValue().getOnly(REVISION_ID));
|
||||
// When a host is subordinate, we need to find it's superordinate domain and
|
||||
kv.getValue().getAll(REVISION_ID));
|
||||
// When a host is subordinate, we need to find its superordinate domain and
|
||||
// include it in the deposit as well.
|
||||
if (host.isSubordinate()) {
|
||||
subordinateHostCounter.inc();
|
||||
@@ -627,7 +659,7 @@ public class RdePipeline implements Serializable {
|
||||
loadResourceByHistoryEntryId(
|
||||
DomainHistory.class,
|
||||
kv.getKey(),
|
||||
kv.getValue().getOnly(REVISION_ID));
|
||||
kv.getValue().getAll(REVISION_ID));
|
||||
ImmutableSet.Builder<KV<PendingDeposit, DepositFragment>> results =
|
||||
new ImmutableSet.Builder<>();
|
||||
for (KV<String, CoGbkResult> hostToPendingDeposits :
|
||||
@@ -637,7 +669,7 @@ public class RdePipeline implements Serializable {
|
||||
loadResourceByHistoryEntryId(
|
||||
HostHistory.class,
|
||||
hostToPendingDeposits.getKey(),
|
||||
hostToPendingDeposits.getValue().getOnly(REVISION_ID));
|
||||
hostToPendingDeposits.getValue().getAll(REVISION_ID));
|
||||
DepositFragment fragment =
|
||||
marshaller.marshalSubordinateHost(host, superordinateDomain);
|
||||
Streams.stream(hostToPendingDeposits.getValue().getAll(PENDING_DEPOSIT))
|
||||
@@ -696,6 +728,7 @@ public class RdePipeline implements Serializable {
|
||||
* CoGbkResult}s are used.
|
||||
*/
|
||||
protected abstract static class TupleTags {
|
||||
|
||||
protected static final TupleTag<KV<PendingDeposit, DepositFragment>> DOMAIN_FRAGMENTS =
|
||||
new TupleTag<KV<PendingDeposit, DepositFragment>>() {};
|
||||
|
||||
@@ -729,10 +762,12 @@ public class RdePipeline implements Serializable {
|
||||
UtilsModule.class
|
||||
})
|
||||
interface RdePipelineComponent {
|
||||
|
||||
RdePipeline rdePipeline();
|
||||
|
||||
@Component.Builder
|
||||
interface Builder {
|
||||
|
||||
@BindsInstance
|
||||
Builder options(RdePipelineOptions options);
|
||||
|
||||
|
||||
@@ -0,0 +1,174 @@
|
||||
// Copyright 2022 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.beam.resave;
|
||||
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.jpaTm;
|
||||
import static org.apache.beam.sdk.values.TypeDescriptors.integers;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import google.registry.beam.common.RegistryJpaIO;
|
||||
import google.registry.beam.common.RegistryJpaIO.Read;
|
||||
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.persistence.PersistenceModule.TransactionIsolationLevel;
|
||||
import google.registry.persistence.transaction.CriteriaQueryBuilder;
|
||||
import google.registry.util.DateTimeUtils;
|
||||
import java.io.Serializable;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
import org.apache.beam.sdk.Pipeline;
|
||||
import org.apache.beam.sdk.PipelineResult;
|
||||
import org.apache.beam.sdk.transforms.DoFn;
|
||||
import org.apache.beam.sdk.transforms.GroupIntoBatches;
|
||||
import org.apache.beam.sdk.transforms.ParDo;
|
||||
import org.apache.beam.sdk.transforms.WithKeys;
|
||||
import org.apache.beam.sdk.util.ShardedKey;
|
||||
import org.apache.beam.sdk.values.KV;
|
||||
import org.joda.time.DateTime;
|
||||
|
||||
/**
|
||||
* A Dataflow Flex pipeline that resaves changed EPP resources in SQL.
|
||||
*
|
||||
* <p>Due to the way that Hibernate works, if an entity is unchanged by {@link
|
||||
* EppResource#cloneProjectedAtTime(DateTime)} it will not actually be re-persisted to the database.
|
||||
* Thus, the only actual changes occur when objects are changed by projecting them to now, such as
|
||||
* when a pending transfer is resolved.
|
||||
*/
|
||||
public class ResaveAllEppResourcesPipeline implements Serializable {
|
||||
|
||||
private static final ImmutableSet<Class<? extends EppResource>> EPP_RESOURCE_CLASSES =
|
||||
ImmutableSet.of(ContactResource.class, DomainBase.class, HostResource.class);
|
||||
|
||||
/**
|
||||
* There exist three possible situations where we know we'll want to project domains to the
|
||||
* current point in time:
|
||||
*
|
||||
* <ul>
|
||||
* <li>A pending domain transfer has expired.
|
||||
* <li>A domain is past its expiration time without being deleted (this means it autorenewed).
|
||||
* <li>A domain has expired grace periods.
|
||||
* </ul>
|
||||
*
|
||||
* <p>This command contains all three scenarios so that we can avoid querying the Domain table
|
||||
* multiple times, and to avoid projecting and resaving the same domain multiple times.
|
||||
*/
|
||||
private static final String DOMAINS_TO_PROJECT_QUERY =
|
||||
"FROM Domain d WHERE (d.transferData.transferStatus = 'PENDING' AND"
|
||||
+ " d.transferData.pendingTransferExpirationTime < current_timestamp()) OR"
|
||||
+ " (d.registrationExpirationTime < current_timestamp() AND d.deletionTime ="
|
||||
+ " (:END_OF_TIME)) OR (EXISTS (SELECT 1 FROM GracePeriod gp WHERE gp.domainRepoId ="
|
||||
+ " d.repoId AND gp.expirationTime < current_timestamp()))";
|
||||
|
||||
private final ResaveAllEppResourcesPipelineOptions options;
|
||||
|
||||
ResaveAllEppResourcesPipeline(ResaveAllEppResourcesPipelineOptions options) {
|
||||
this.options = options;
|
||||
}
|
||||
|
||||
PipelineResult run() {
|
||||
Pipeline pipeline = Pipeline.create(options);
|
||||
setupPipeline(pipeline);
|
||||
return pipeline.run();
|
||||
}
|
||||
|
||||
void setupPipeline(Pipeline pipeline) {
|
||||
options.setIsolationOverride(TransactionIsolationLevel.TRANSACTION_READ_COMMITTED);
|
||||
if (options.getFast()) {
|
||||
fastResaveContacts(pipeline);
|
||||
fastResaveDomains(pipeline);
|
||||
} else {
|
||||
EPP_RESOURCE_CLASSES.forEach(clazz -> forceResaveAllResources(pipeline, clazz));
|
||||
}
|
||||
}
|
||||
|
||||
/** Projects to the current time and saves any contacts with expired transfers. */
|
||||
private void fastResaveContacts(Pipeline pipeline) {
|
||||
Read<ContactResource, ContactResource> read =
|
||||
RegistryJpaIO.read(
|
||||
"FROM Contact WHERE transferData.transferStatus = 'PENDING' AND"
|
||||
+ " transferData.pendingTransferExpirationTime < current_timestamp()",
|
||||
ContactResource.class,
|
||||
c -> c);
|
||||
projectAndResaveResources(pipeline, ContactResource.class, read);
|
||||
}
|
||||
|
||||
/**
|
||||
* Projects to the current time and saves any domains with expired pending actions (e.g.
|
||||
* transfers, grace periods).
|
||||
*
|
||||
* <p>The logic of what might have changed is paraphrased from {@link
|
||||
* google.registry.model.domain.DomainContent#cloneProjectedAtTime(DateTime)}.
|
||||
*/
|
||||
private void fastResaveDomains(Pipeline pipeline) {
|
||||
Read<DomainBase, DomainBase> read =
|
||||
RegistryJpaIO.read(
|
||||
DOMAINS_TO_PROJECT_QUERY,
|
||||
ImmutableMap.of("END_OF_TIME", DateTimeUtils.END_OF_TIME),
|
||||
DomainBase.class,
|
||||
d -> d);
|
||||
projectAndResaveResources(pipeline, DomainBase.class, read);
|
||||
}
|
||||
|
||||
/** Projects all resources to the current time and saves them. */
|
||||
private <T extends EppResource> void forceResaveAllResources(Pipeline pipeline, Class<T> clazz) {
|
||||
Read<T, T> read = RegistryJpaIO.read(() -> CriteriaQueryBuilder.create(clazz).build());
|
||||
projectAndResaveResources(pipeline, clazz, read);
|
||||
}
|
||||
|
||||
/** Projects and re-saves the result of the provided {@link Read}. */
|
||||
private <T extends EppResource> void projectAndResaveResources(
|
||||
Pipeline pipeline, Class<T> clazz, Read<?, T> read) {
|
||||
int numShards = options.getSqlWriteShards();
|
||||
int batchSize = options.getSqlWriteBatchSize();
|
||||
String className = clazz.getSimpleName();
|
||||
pipeline
|
||||
.apply("Read " + className, read)
|
||||
.apply(
|
||||
"Shard data for class" + className,
|
||||
WithKeys.<Integer, T>of(e -> ThreadLocalRandom.current().nextInt(numShards))
|
||||
.withKeyType(integers()))
|
||||
.apply(
|
||||
"Group into batches for class" + className,
|
||||
GroupIntoBatches.<Integer, T>ofSize(batchSize).withShardedKey())
|
||||
.apply("Map " + className + " to now", ParDo.of(new BatchedProjectionFunction<>()))
|
||||
.apply(
|
||||
"Write transformed " + className,
|
||||
RegistryJpaIO.<EppResource>write()
|
||||
.withName("Write transformed " + className)
|
||||
.withBatchSize(batchSize)
|
||||
.withShards(numShards));
|
||||
}
|
||||
|
||||
private static class BatchedProjectionFunction<T extends EppResource>
|
||||
extends DoFn<KV<ShardedKey<Integer>, Iterable<T>>, EppResource> {
|
||||
|
||||
@ProcessElement
|
||||
public void processElement(
|
||||
@Element KV<ShardedKey<Integer>, Iterable<T>> element,
|
||||
OutputReceiver<EppResource> outputReceiver) {
|
||||
jpaTm()
|
||||
.transact(
|
||||
() ->
|
||||
element
|
||||
.getValue()
|
||||
.forEach(
|
||||
resource ->
|
||||
outputReceiver.output(
|
||||
resource.cloneProjectedAtTime(jpaTm().getTransactionTime()))));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
// Copyright 2022 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.beam.resave;
|
||||
|
||||
import google.registry.beam.common.RegistryPipelineOptions;
|
||||
import org.apache.beam.sdk.options.Description;
|
||||
|
||||
public interface ResaveAllEppResourcesPipelineOptions extends RegistryPipelineOptions {
|
||||
|
||||
@Description("True if we should attempt to run only over potentially out-of-date EPP resources")
|
||||
boolean getFast();
|
||||
|
||||
void setFast(boolean fast);
|
||||
}
|
||||
@@ -21,6 +21,7 @@ import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import google.registry.config.CredentialModule.DefaultCredential;
|
||||
import google.registry.config.RegistryConfig.Config;
|
||||
import google.registry.util.Clock;
|
||||
import google.registry.util.CloudTasksUtils;
|
||||
import google.registry.util.CloudTasksUtils.GcpCloudTasksClient;
|
||||
import google.registry.util.CloudTasksUtils.SerializableCloudTasksClient;
|
||||
@@ -46,8 +47,9 @@ public abstract class CloudTasksUtilsModule {
|
||||
@Config("projectId") String projectId,
|
||||
@Config("locationId") String locationId,
|
||||
SerializableCloudTasksClient client,
|
||||
Retrier retrier) {
|
||||
return new CloudTasksUtils(retrier, projectId, locationId, client);
|
||||
Retrier retrier,
|
||||
Clock clock) {
|
||||
return new CloudTasksUtils(retrier, clock, projectId, locationId, client);
|
||||
}
|
||||
|
||||
// Provides a supplier instead of using a Dagger @Provider because the latter is not serializable.
|
||||
|
||||
@@ -576,6 +576,19 @@ public final class RegistryConfig {
|
||||
return config.beam.highPerformanceMachineType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns initial number of workers used for a Beam pipeline. Autoscaling can still in effect.
|
||||
*
|
||||
* @see <a
|
||||
* href=https://cloud.google.com/dataflow/docs/guides/deploying-a-pipeline#horizontal-autoscaling>
|
||||
* Horizontal Autoscaling </a>
|
||||
*/
|
||||
@Provides
|
||||
@Config("initialWorkerCount")
|
||||
public static int provideInitialWorkerCount(RegistryConfigSettings config) {
|
||||
return config.beam.initialWorkerCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the default job region to run Apache Beam (Cloud Dataflow) jobs in.
|
||||
*
|
||||
@@ -1425,8 +1438,8 @@ public final class RegistryConfig {
|
||||
}
|
||||
|
||||
/** Returns the amount of time a singleton should be cached, before expiring. */
|
||||
public static Duration getSingletonCacheRefreshDuration() {
|
||||
return Duration.standardSeconds(CONFIG_SETTINGS.get().caching.singletonCacheRefreshSeconds);
|
||||
public static java.time.Duration getSingletonCacheRefreshDuration() {
|
||||
return java.time.Duration.ofSeconds(CONFIG_SETTINGS.get().caching.singletonCacheRefreshSeconds);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -137,6 +137,7 @@ public class RegistryConfigSettings {
|
||||
public static class Beam {
|
||||
public String defaultJobRegion;
|
||||
public String highPerformanceMachineType;
|
||||
public int initialWorkerCount;
|
||||
public String stagingBucketUrl;
|
||||
}
|
||||
|
||||
|
||||
@@ -442,6 +442,11 @@ beam:
|
||||
# core count per machine may be preferable in order to preserve IP addresses.
|
||||
# See: https://cloud.google.com/compute/quotas#cpu_quota
|
||||
highPerformanceMachineType: n2-standard-4
|
||||
# The initial number of workers requested. This can help speed up the pipeline
|
||||
# which otherwise would take some time to spin up the necessary number of
|
||||
# works. Autoscaling is still in effect to reduce the number of workers if
|
||||
# not in use.
|
||||
initialWorkerCount: 24
|
||||
stagingBucketUrl: gcs-bucket-with-staged-templates
|
||||
|
||||
keyring:
|
||||
@@ -486,9 +491,9 @@ sslCertificateValidation:
|
||||
# The minimum number of days between two successive expiring notification emails.
|
||||
expirationWarningIntervalDays: 15
|
||||
# Text for expiring certificate notification email subject.
|
||||
expirationWarningEmailSubjectText: "[Important] Expiring SSL certificate for Google Registry EPP connection"
|
||||
# Text for expiring certificate notification email body that accepts 3 parameters:
|
||||
# registrar name, certificate type, and expiration date, respectively.
|
||||
expirationWarningEmailSubjectText: "Expiring SSL certificate for Example Registry EPP connection"
|
||||
# Text for expiring certificate notification email body that accepts 4 parameters:
|
||||
# registrar name, certificate type, expiration date and registrar id, respectively.
|
||||
expirationWarningEmailBodyText: |
|
||||
Dear %1$s,
|
||||
|
||||
@@ -496,25 +501,15 @@ sslCertificateValidation:
|
||||
|
||||
Kindly update your production account certificate within the support console using the following steps:
|
||||
|
||||
1. Navigate to support.registry.google and login using your %4$s@registry.google credentials.
|
||||
* If this is your first time logging in, you will be prompted to reset your password, so please keep your new password safe.
|
||||
* If you are already logged in with some other Google account(s) but not your %4$s@registry.google account, you need to click on
|
||||
“Add Account” and login using your %4$s@registry.google credentials.
|
||||
1. Navigate to support.registry.example and login using your %4$s@registry.example credentials.
|
||||
2. Select “Settings > Security” from the left navigation bar.
|
||||
3. Click “Edit” on the top left corner.
|
||||
4. Enter your full certificate string (including lines -----BEGIN CERTIFICATE----- and -----END CERTIFICATE-----) in the box.
|
||||
5. Click “Save”. If there are validation issues with the form, you will be prompted to fix them and click “Save” again.
|
||||
4. Enter your full certificate string in the box.
|
||||
5. Click “Save”.
|
||||
|
||||
A failover SSL certificate can also be added in order to prevent connection issues once your main certificate expires. Connecting with either of the certificates will work with our production EPP server.
|
||||
|
||||
Further information about our EPP connection requirements can be found in section 9.2 in the updated Technical Guide in your Google Drive folder.
|
||||
|
||||
Note that account certificate changes take a few minutes to become effective and that the existing connections will remain unaffected by the change.
|
||||
|
||||
If you also would like to update your OT&E account certificate, please send an email from your primary or technical contact to registry-support@google.com and include the full certificate string (including lines -----BEGIN CERTIFICATE----- and -----END CERTIFICATE-----).
|
||||
|
||||
Regards,
|
||||
Google Registry
|
||||
Example Registry
|
||||
|
||||
# The minimum number of bits an RSA key must contain.
|
||||
minimumRsaKeyLength: 2048
|
||||
|
||||
@@ -20,7 +20,6 @@ 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.Clock;
|
||||
import google.registry.util.CloudTasksUtils;
|
||||
import java.util.Optional;
|
||||
import javax.inject.Inject;
|
||||
@@ -35,7 +34,6 @@ public final class CommitLogFanoutAction implements Runnable {
|
||||
|
||||
public static final String BUCKET_PARAM = "bucket";
|
||||
|
||||
@Inject Clock clock;
|
||||
@Inject CloudTasksUtils cloudTasksUtils;
|
||||
|
||||
@Inject @Parameter("endpoint") String endpoint;
|
||||
@@ -43,18 +41,15 @@ public final class CommitLogFanoutAction implements Runnable {
|
||||
@Inject @Parameter("jitterSeconds") Optional<Integer> jitterSeconds;
|
||||
@Inject CommitLogFanoutAction() {}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
for (int bucketId : CommitLogBucket.getBucketIds()) {
|
||||
cloudTasksUtils.enqueue(
|
||||
queue,
|
||||
CloudTasksUtils.createPostTask(
|
||||
cloudTasksUtils.createPostTaskWithJitter(
|
||||
endpoint,
|
||||
Service.BACKEND.toString(),
|
||||
ImmutableMultimap.of(BUCKET_PARAM, Integer.toString(bucketId)),
|
||||
clock,
|
||||
jitterSeconds));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,7 +45,6 @@ import google.registry.request.ParameterMap;
|
||||
import google.registry.request.RequestParameters;
|
||||
import google.registry.request.Response;
|
||||
import google.registry.request.auth.Auth;
|
||||
import google.registry.util.Clock;
|
||||
import google.registry.util.CloudTasksUtils;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Stream;
|
||||
@@ -98,7 +97,6 @@ public final class TldFanoutAction implements Runnable {
|
||||
|
||||
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
|
||||
|
||||
@Inject Clock clock;
|
||||
@Inject CloudTasksUtils cloudTasksUtils;
|
||||
@Inject Response response;
|
||||
@Inject @Parameter(ENDPOINT_PARAM) String endpoint;
|
||||
@@ -159,7 +157,7 @@ public final class TldFanoutAction implements Runnable {
|
||||
params = ArrayListMultimap.create(params);
|
||||
params.put(RequestParameters.PARAM_TLD, tld);
|
||||
}
|
||||
return CloudTasksUtils.createPostTask(
|
||||
endpoint, Service.BACKEND.toString(), params, clock, jitterSeconds);
|
||||
return cloudTasksUtils.createPostTaskWithJitter(
|
||||
endpoint, Service.BACKEND.toString(), params, jitterSeconds);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -316,6 +316,12 @@
|
||||
<url-pattern>/_dr/task/resaveAllEppResources</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<!-- Dataflow pipeline to re-save all EPP resources. -->
|
||||
<servlet-mapping>
|
||||
<servlet-name>backend-servlet</servlet-name>
|
||||
<url-pattern>/_dr/task/resaveAllEppResourcesPipeline</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<!-- Reread all Registrar RDAP Base Urls from the ICANN endpoint. -->
|
||||
<servlet-mapping>
|
||||
<servlet-name>backend-servlet</servlet-name>
|
||||
@@ -422,6 +428,12 @@ have been in the database for a certain period of time. -->
|
||||
<url-pattern>/_dr/task/createSyntheticHistoryEntries</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<!-- Action to sync Datastore to a snapshot of the primary SQL database. -->
|
||||
<servlet-mapping>
|
||||
<servlet-name>backend-servlet</servlet-name>
|
||||
<url-pattern>/_dr/task/syncDatastoreToSqlSnapshot</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<!-- Security config -->
|
||||
<security-constraint>
|
||||
<web-resource-collection>
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<blacklistentries>
|
||||
|
||||
<!-- Example IPv4 CIDR Subnet
|
||||
<blacklist>
|
||||
<subnet>1.2.3.4/24</subnet>
|
||||
<description>An IPv4 subnet</description>
|
||||
</blacklist> -->
|
||||
|
||||
<!-- Example IPv6 CIDR Subnet
|
||||
<blacklist>
|
||||
<subnet>abcd::123:4567/48</subnet>
|
||||
<description>An IPv6 subnet</description>
|
||||
</blacklist> -->
|
||||
|
||||
</blacklistentries>
|
||||
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<blacklistentries>
|
||||
|
||||
<!-- Example IPv4 CIDR Subnet
|
||||
<blacklist>
|
||||
<subnet>1.2.3.4/24</subnet>
|
||||
<description>An IPv4 subnet</description>
|
||||
</blacklist> -->
|
||||
|
||||
<!-- Example IPv6 CIDR Subnet
|
||||
<blacklist>
|
||||
<subnet>abcd::123:4567/48</subnet>
|
||||
<description>An IPv6 subnet</description>
|
||||
</blacklist> -->
|
||||
|
||||
</blacklistentries>
|
||||
@@ -36,19 +36,6 @@
|
||||
<target>backend</target>
|
||||
</cron>
|
||||
|
||||
<cron>
|
||||
<url>/_dr/task/rdeStaging?beam=true</url>
|
||||
<description>
|
||||
This job generates a full RDE escrow deposit as a single gigantic XML
|
||||
document using the Beam pipeline regardless of the current TM
|
||||
configuration and streams it to cloud storage. It does not trigger the
|
||||
subsequent upload tasks and is meant to run parallel with the main cron
|
||||
job in order to compare the results from both runs.
|
||||
</description>
|
||||
<schedule>every 8 hours from 00:07 to 20:00</schedule>
|
||||
<target>backend</target>
|
||||
</cron>
|
||||
|
||||
<cron>
|
||||
<url><![CDATA[/_dr/cron/fanout?queue=rde-upload&endpoint=/_dr/task/rdeUpload&forEachRealTld]]></url>
|
||||
<description>
|
||||
@@ -253,16 +240,6 @@
|
||||
<target>backend</target>
|
||||
</cron>
|
||||
|
||||
<cron>
|
||||
<url><![CDATA[/_dr/cron/fanout?queue=retryable-cron-tasks&endpoint=/_dr/task/deleteProberData&runInEmpty]]></url>
|
||||
<description>
|
||||
This job clears out data from probers and runs once a week.
|
||||
</description>
|
||||
<schedule>every monday 14:00</schedule>
|
||||
<timezone>UTC</timezone>
|
||||
<target>backend</target>
|
||||
</cron>
|
||||
|
||||
<cron>
|
||||
<url><![CDATA[/_dr/cron/fanout?queue=retryable-cron-tasks&endpoint=/_dr/task/exportReservedTerms&forEachRealTld]]></url>
|
||||
<description>
|
||||
|
||||
@@ -168,15 +168,6 @@
|
||||
<target>backend</target>
|
||||
</cron>
|
||||
|
||||
<cron>
|
||||
<url><![CDATA[/_dr/task/sendExpiringCertificateNotificationEmail]]></url>
|
||||
<description>
|
||||
This job runs an action that sends emails to partners if their certificates are expiring soon.
|
||||
</description>
|
||||
<schedule>every day 04:30</schedule>
|
||||
<target>backend</target>
|
||||
</cron>
|
||||
|
||||
<cron>
|
||||
<url><![CDATA[/_dr/cron/fanout?queue=export-snapshot&endpoint=/_dr/task/backupDatastore&runInEmpty]]></url>
|
||||
<description>
|
||||
@@ -191,16 +182,6 @@
|
||||
<target>backend</target>
|
||||
</cron>
|
||||
|
||||
<cron>
|
||||
<url><![CDATA[/_dr/cron/fanout?queue=retryable-cron-tasks&endpoint=/_dr/task/deleteProberData&runInEmpty]]></url>
|
||||
<description>
|
||||
This job clears out data from probers and runs once a week.
|
||||
</description>
|
||||
<schedule>every monday 14:00</schedule>
|
||||
<timezone>UTC</timezone>
|
||||
<target>backend</target>
|
||||
</cron>
|
||||
|
||||
<cron>
|
||||
<url><![CDATA[/_dr/cron/fanout?queue=retryable-cron-tasks&endpoint=/_dr/task/exportReservedTerms&forEachRealTld]]></url>
|
||||
<description>
|
||||
|
||||
@@ -14,18 +14,22 @@
|
||||
|
||||
package google.registry.export;
|
||||
|
||||
import static google.registry.export.CheckBackupAction.enqueuePollTask;
|
||||
import static google.registry.request.Action.Method.POST;
|
||||
|
||||
import com.google.common.base.Joiner;
|
||||
import com.google.common.collect.ImmutableMultimap;
|
||||
import com.google.common.flogger.FluentLogger;
|
||||
import google.registry.config.RegistryConfig;
|
||||
import google.registry.export.datastore.DatastoreAdmin;
|
||||
import google.registry.export.datastore.Operation;
|
||||
import google.registry.model.annotations.DeleteAfterMigration;
|
||||
import google.registry.request.Action;
|
||||
import google.registry.request.Action.Service;
|
||||
import google.registry.request.HttpException.InternalServerErrorException;
|
||||
import google.registry.request.Response;
|
||||
import google.registry.request.auth.Auth;
|
||||
import google.registry.util.Clock;
|
||||
import google.registry.util.CloudTasksUtils;
|
||||
import javax.inject.Inject;
|
||||
|
||||
/**
|
||||
@@ -59,6 +63,8 @@ public class BackupDatastoreAction implements Runnable {
|
||||
|
||||
@Inject DatastoreAdmin datastoreAdmin;
|
||||
@Inject Response response;
|
||||
@Inject Clock clock;
|
||||
@Inject CloudTasksUtils cloudTasksUtils;
|
||||
|
||||
@Inject
|
||||
BackupDatastoreAction() {}
|
||||
@@ -73,8 +79,19 @@ public class BackupDatastoreAction implements Runnable {
|
||||
.execute();
|
||||
|
||||
String backupName = backup.getName();
|
||||
// Enqueue a poll task to monitor the backup and load REPORTING-related kinds into bigquery.
|
||||
enqueuePollTask(backupName, AnnotatedEntities.getReportingKinds());
|
||||
// Enqueue a poll task to monitor the backup for completion and load reporting-related kinds
|
||||
// into bigquery.
|
||||
cloudTasksUtils.enqueue(
|
||||
CheckBackupAction.QUEUE,
|
||||
cloudTasksUtils.createPostTaskWithDelay(
|
||||
CheckBackupAction.PATH,
|
||||
Service.BACKEND.toString(),
|
||||
ImmutableMultimap.of(
|
||||
CheckBackupAction.CHECK_BACKUP_NAME_PARAM,
|
||||
backupName,
|
||||
CheckBackupAction.CHECK_BACKUP_KINDS_TO_LOAD_PARAM,
|
||||
Joiner.on(',').join(AnnotatedEntities.getReportingKinds())),
|
||||
CheckBackupAction.POLL_COUNTDOWN));
|
||||
String message =
|
||||
String.format(
|
||||
"Datastore backup started with name: %s\nSaving to %s",
|
||||
|
||||
@@ -14,18 +14,14 @@
|
||||
|
||||
package google.registry.export;
|
||||
|
||||
import static com.google.appengine.api.taskqueue.QueueFactory.getQueue;
|
||||
import static com.google.appengine.api.taskqueue.TaskOptions.Builder.withUrl;
|
||||
import static google.registry.bigquery.BigqueryUtils.toJobReferenceString;
|
||||
|
||||
import com.google.api.services.bigquery.Bigquery;
|
||||
import com.google.api.services.bigquery.model.Job;
|
||||
import com.google.api.services.bigquery.model.JobReference;
|
||||
import com.google.appengine.api.taskqueue.Queue;
|
||||
import com.google.appengine.api.taskqueue.TaskHandle;
|
||||
import com.google.appengine.api.taskqueue.TaskOptions;
|
||||
import com.google.appengine.api.taskqueue.TaskOptions.Method;
|
||||
import com.google.cloud.tasks.v2.Task;
|
||||
import com.google.common.flogger.FluentLogger;
|
||||
import com.google.protobuf.ByteString;
|
||||
import dagger.Lazy;
|
||||
import google.registry.request.Action;
|
||||
import google.registry.request.Header;
|
||||
@@ -33,12 +29,10 @@ import google.registry.request.HttpException.BadRequestException;
|
||||
import google.registry.request.HttpException.NotModifiedException;
|
||||
import google.registry.request.Payload;
|
||||
import google.registry.request.auth.Auth;
|
||||
import google.registry.util.TaskQueueUtils;
|
||||
import google.registry.util.CloudTasksUtils;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.ObjectOutputStream;
|
||||
import javax.inject.Inject;
|
||||
import org.joda.time.Duration;
|
||||
|
||||
@@ -67,11 +61,14 @@ public class BigqueryPollJobAction implements Runnable {
|
||||
static final Duration POLL_COUNTDOWN = Duration.standardSeconds(20);
|
||||
|
||||
@Inject Bigquery bigquery;
|
||||
@Inject TaskQueueUtils taskQueueUtils;
|
||||
@Inject CloudTasksUtils cloudTasksUtils;
|
||||
|
||||
@Inject @Header(CHAINED_TASK_QUEUE_HEADER) Lazy<String> chainedQueueName;
|
||||
@Inject @Header(PROJECT_ID_HEADER) String projectId;
|
||||
@Inject @Header(JOB_ID_HEADER) String jobId;
|
||||
@Inject @Payload byte[] payload;
|
||||
|
||||
@Inject @Payload ByteString payload;
|
||||
|
||||
@Inject BigqueryPollJobAction() {}
|
||||
|
||||
@Override
|
||||
@@ -79,20 +76,25 @@ public class BigqueryPollJobAction implements Runnable {
|
||||
boolean jobOutcome =
|
||||
checkJobOutcome(); // Throws a NotModifiedException if the job hasn't completed.
|
||||
// If the job failed, do not enqueue the next step.
|
||||
if (!jobOutcome || payload == null || payload.length == 0) {
|
||||
if (!jobOutcome || payload == null || payload.size() == 0) {
|
||||
return;
|
||||
}
|
||||
// If there is a payload, it's a chained task, so enqueue it.
|
||||
TaskOptions task;
|
||||
Task task;
|
||||
try {
|
||||
task = (TaskOptions) new ObjectInputStream(new ByteArrayInputStream(payload)).readObject();
|
||||
task =
|
||||
(Task)
|
||||
new ObjectInputStream(new ByteArrayInputStream(payload.toByteArray())).readObject();
|
||||
} catch (ClassNotFoundException | IOException e) {
|
||||
throw new BadRequestException("Cannot deserialize task from payload", e);
|
||||
}
|
||||
String taskName = taskQueueUtils.enqueue(getQueue(chainedQueueName.get()), task).getName();
|
||||
Task enqueuedTask = cloudTasksUtils.enqueue(chainedQueueName.get(), task);
|
||||
logger.atInfo().log(
|
||||
"Added chained task %s for %s to queue %s: %s",
|
||||
taskName, task.getUrl(), chainedQueueName.get(), task);
|
||||
enqueuedTask.getName(),
|
||||
enqueuedTask.getAppEngineHttpRequest().getRelativeUri(),
|
||||
chainedQueueName.get(),
|
||||
enqueuedTask);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -124,51 +126,4 @@ public class BigqueryPollJobAction implements Runnable {
|
||||
logger.atInfo().log("Bigquery job succeeded - %s.", jobRefString);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/** Helper class to enqueue a bigquery poll job. */
|
||||
public static class BigqueryPollJobEnqueuer {
|
||||
|
||||
private final TaskQueueUtils taskQueueUtils;
|
||||
|
||||
@Inject
|
||||
BigqueryPollJobEnqueuer(TaskQueueUtils taskQueueUtils) {
|
||||
this.taskQueueUtils = taskQueueUtils;
|
||||
}
|
||||
|
||||
/** Enqueue a task to poll for the success or failure of the referenced BigQuery job. */
|
||||
public TaskHandle enqueuePollTask(JobReference jobRef) {
|
||||
return taskQueueUtils.enqueue(
|
||||
getQueue(QUEUE), createCommonPollTask(jobRef).method(Method.GET));
|
||||
}
|
||||
|
||||
/**
|
||||
* Enqueue a task to poll for the success or failure of the referenced BigQuery job and to
|
||||
* launch the provided task in the specified queue if the job succeeds.
|
||||
*/
|
||||
public TaskHandle enqueuePollTask(
|
||||
JobReference jobRef, TaskOptions chainedTask, Queue chainedTaskQueue) throws IOException {
|
||||
// Serialize the chainedTask into a byte array to put in the task payload.
|
||||
ByteArrayOutputStream taskBytes = new ByteArrayOutputStream();
|
||||
new ObjectOutputStream(taskBytes).writeObject(chainedTask);
|
||||
return taskQueueUtils.enqueue(
|
||||
getQueue(QUEUE),
|
||||
createCommonPollTask(jobRef)
|
||||
.method(Method.POST)
|
||||
.header(CHAINED_TASK_QUEUE_HEADER, chainedTaskQueue.getQueueName())
|
||||
.payload(taskBytes.toByteArray()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Enqueue a task to poll for the success or failure of the referenced BigQuery job and to
|
||||
* launch the provided task in the specified queue if the job succeeds.
|
||||
*/
|
||||
private static TaskOptions createCommonPollTask(JobReference jobRef) {
|
||||
// Omit host header so that task will be run on the current backend/module.
|
||||
return withUrl(PATH)
|
||||
.countdownMillis(POLL_COUNTDOWN.getMillis())
|
||||
.header(PROJECT_ID_HEADER, jobRef.getProjectId())
|
||||
.header(JOB_ID_HEADER, jobRef.getJobId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,18 +16,14 @@ package google.registry.export;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.collect.Sets.intersection;
|
||||
import static google.registry.export.UploadDatastoreBackupAction.enqueueUploadBackupTask;
|
||||
import static google.registry.request.Action.Method.GET;
|
||||
import static google.registry.request.Action.Method.POST;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_NOT_FOUND;
|
||||
|
||||
import com.google.api.client.googleapis.json.GoogleJsonResponseException;
|
||||
import com.google.appengine.api.taskqueue.QueueFactory;
|
||||
import com.google.appengine.api.taskqueue.TaskHandle;
|
||||
import com.google.appengine.api.taskqueue.TaskOptions;
|
||||
import com.google.appengine.api.taskqueue.TaskOptions.Method;
|
||||
import com.google.common.base.Joiner;
|
||||
import com.google.common.base.Splitter;
|
||||
import com.google.common.collect.ImmutableMultimap;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.google.common.flogger.FluentLogger;
|
||||
@@ -35,6 +31,7 @@ import google.registry.export.datastore.DatastoreAdmin;
|
||||
import google.registry.export.datastore.Operation;
|
||||
import google.registry.model.annotations.DeleteAfterMigration;
|
||||
import google.registry.request.Action;
|
||||
import google.registry.request.Action.Service;
|
||||
import google.registry.request.HttpException;
|
||||
import google.registry.request.HttpException.BadRequestException;
|
||||
import google.registry.request.HttpException.InternalServerErrorException;
|
||||
@@ -45,6 +42,7 @@ import google.registry.request.RequestMethod;
|
||||
import google.registry.request.Response;
|
||||
import google.registry.request.auth.Auth;
|
||||
import google.registry.util.Clock;
|
||||
import google.registry.util.CloudTasksUtils;
|
||||
import java.io.IOException;
|
||||
import java.util.Set;
|
||||
import javax.inject.Inject;
|
||||
@@ -83,6 +81,7 @@ public class CheckBackupAction implements Runnable {
|
||||
@Inject DatastoreAdmin datastoreAdmin;
|
||||
@Inject Clock clock;
|
||||
@Inject Response response;
|
||||
@Inject CloudTasksUtils cloudTasksUtils;
|
||||
@Inject @RequestMethod Action.Method requestMethod;
|
||||
|
||||
@Inject
|
||||
@@ -175,21 +174,22 @@ public class CheckBackupAction implements Runnable {
|
||||
if (exportedKindsToLoad.isEmpty()) {
|
||||
message += "no kinds to load into BigQuery.";
|
||||
} else {
|
||||
enqueueUploadBackupTask(backupId, backup.getExportFolderUrl(), exportedKindsToLoad);
|
||||
/** Enqueue a task for starting a backup load. */
|
||||
cloudTasksUtils.enqueue(
|
||||
UploadDatastoreBackupAction.QUEUE,
|
||||
cloudTasksUtils.createPostTask(
|
||||
UploadDatastoreBackupAction.PATH,
|
||||
Service.BACKEND.toString(),
|
||||
ImmutableMultimap.of(
|
||||
UploadDatastoreBackupAction.UPLOAD_BACKUP_ID_PARAM,
|
||||
backupId,
|
||||
UploadDatastoreBackupAction.UPLOAD_BACKUP_FOLDER_PARAM,
|
||||
backup.getExportFolderUrl(),
|
||||
UploadDatastoreBackupAction.UPLOAD_BACKUP_KINDS_PARAM,
|
||||
Joiner.on(',').join(exportedKindsToLoad))));
|
||||
message += "BigQuery load task enqueued.";
|
||||
}
|
||||
logger.atInfo().log(message);
|
||||
response.setPayload(message);
|
||||
}
|
||||
|
||||
/** Enqueue a poll task to monitor the named backup for completion. */
|
||||
static TaskHandle enqueuePollTask(String backupId, ImmutableSet<String> kindsToLoad) {
|
||||
return QueueFactory.getQueue(QUEUE)
|
||||
.add(
|
||||
TaskOptions.Builder.withUrl(PATH)
|
||||
.method(Method.POST)
|
||||
.countdownMillis(POLL_COUNTDOWN.getMillis())
|
||||
.param(CHECK_BACKUP_NAME_PARAM, backupId)
|
||||
.param(CHECK_BACKUP_KINDS_TO_LOAD_PARAM, Joiner.on(',').join(kindsToLoad)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,8 +21,6 @@ import com.google.api.services.bigquery.Bigquery;
|
||||
import com.google.api.services.bigquery.model.Table;
|
||||
import com.google.api.services.bigquery.model.TableReference;
|
||||
import com.google.api.services.bigquery.model.ViewDefinition;
|
||||
import com.google.appengine.api.taskqueue.TaskOptions;
|
||||
import com.google.appengine.api.taskqueue.TaskOptions.Method;
|
||||
import com.google.common.flogger.FluentLogger;
|
||||
import google.registry.bigquery.CheckedBigquery;
|
||||
import google.registry.config.RegistryConfig.Config;
|
||||
@@ -85,17 +83,6 @@ public class UpdateSnapshotViewAction implements Runnable {
|
||||
@Inject
|
||||
UpdateSnapshotViewAction() {}
|
||||
|
||||
/** Create a task for updating a snapshot view. */
|
||||
static TaskOptions createViewUpdateTask(
|
||||
String datasetId, String tableId, String kindName, String viewName) {
|
||||
return TaskOptions.Builder.withUrl(PATH)
|
||||
.method(Method.POST)
|
||||
.param(UPDATE_SNAPSHOT_DATASET_ID_PARAM, datasetId)
|
||||
.param(UPDATE_SNAPSHOT_TABLE_ID_PARAM, tableId)
|
||||
.param(UPDATE_SNAPSHOT_KIND_PARAM, kindName)
|
||||
.param(UPDATE_SNAPSHOT_VIEWNAME_PARAM, viewName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
|
||||
@@ -14,9 +14,7 @@
|
||||
|
||||
package google.registry.export;
|
||||
|
||||
import static com.google.appengine.api.taskqueue.QueueFactory.getQueue;
|
||||
import static com.google.common.base.MoreObjects.firstNonNull;
|
||||
import static google.registry.export.UpdateSnapshotViewAction.createViewUpdateTask;
|
||||
import static google.registry.request.Action.Method.POST;
|
||||
|
||||
import com.google.api.services.bigquery.Bigquery;
|
||||
@@ -25,27 +23,33 @@ import com.google.api.services.bigquery.model.JobConfiguration;
|
||||
import com.google.api.services.bigquery.model.JobConfigurationLoad;
|
||||
import com.google.api.services.bigquery.model.JobReference;
|
||||
import com.google.api.services.bigquery.model.TableReference;
|
||||
import com.google.appengine.api.taskqueue.TaskHandle;
|
||||
import com.google.appengine.api.taskqueue.TaskOptions;
|
||||
import com.google.appengine.api.taskqueue.TaskOptions.Method;
|
||||
import com.google.cloud.tasks.v2.Task;
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.base.Joiner;
|
||||
import com.google.common.base.Splitter;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.ImmutableMultimap;
|
||||
import com.google.common.flogger.FluentLogger;
|
||||
import com.google.common.net.HttpHeaders;
|
||||
import com.google.common.net.MediaType;
|
||||
import com.google.protobuf.ByteString;
|
||||
import com.google.protobuf.util.Timestamps;
|
||||
import google.registry.bigquery.BigqueryUtils.SourceFormat;
|
||||
import google.registry.bigquery.BigqueryUtils.WriteDisposition;
|
||||
import google.registry.bigquery.CheckedBigquery;
|
||||
import google.registry.config.RegistryConfig.Config;
|
||||
import google.registry.export.BigqueryPollJobAction.BigqueryPollJobEnqueuer;
|
||||
import google.registry.model.annotations.DeleteAfterMigration;
|
||||
import google.registry.request.Action;
|
||||
import google.registry.request.Action.Service;
|
||||
import google.registry.request.HttpException.BadRequestException;
|
||||
import google.registry.request.HttpException.InternalServerErrorException;
|
||||
import google.registry.request.Parameter;
|
||||
import google.registry.request.auth.Auth;
|
||||
import google.registry.util.Clock;
|
||||
import google.registry.util.CloudTasksUtils;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectOutputStream;
|
||||
import javax.inject.Inject;
|
||||
|
||||
/** Action to load a Datastore backup from Google Cloud Storage into BigQuery. */
|
||||
@@ -75,7 +79,9 @@ public class UploadDatastoreBackupAction implements Runnable {
|
||||
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
|
||||
|
||||
@Inject CheckedBigquery checkedBigquery;
|
||||
@Inject BigqueryPollJobEnqueuer bigqueryPollEnqueuer;
|
||||
@Inject CloudTasksUtils cloudTasksUtils;
|
||||
@Inject Clock clock;
|
||||
|
||||
@Inject @Config("projectId") String projectId;
|
||||
|
||||
@Inject
|
||||
@@ -93,18 +99,6 @@ public class UploadDatastoreBackupAction implements Runnable {
|
||||
@Inject
|
||||
UploadDatastoreBackupAction() {}
|
||||
|
||||
/** Enqueue a task for starting a backup load. */
|
||||
public static TaskHandle enqueueUploadBackupTask(
|
||||
String backupId, String gcsFile, ImmutableSet<String> kinds) {
|
||||
return getQueue(QUEUE)
|
||||
.add(
|
||||
TaskOptions.Builder.withUrl(PATH)
|
||||
.method(Method.POST)
|
||||
.param(UPLOAD_BACKUP_ID_PARAM, backupId)
|
||||
.param(UPLOAD_BACKUP_FOLDER_PARAM, gcsFile)
|
||||
.param(UPLOAD_BACKUP_KINDS_PARAM, Joiner.on(',').join(kinds)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
@@ -142,12 +136,46 @@ public class UploadDatastoreBackupAction implements Runnable {
|
||||
Job job = makeLoadJob(jobRef, sourceUri, tableId);
|
||||
bigquery.jobs().insert(projectId, job).execute();
|
||||
|
||||
// Enqueue a task to check on the load job's completion, and if it succeeds, to update a
|
||||
// well-known view in BigQuery to point at the newly loaded backup table for this kind.
|
||||
bigqueryPollEnqueuer.enqueuePollTask(
|
||||
jobRef,
|
||||
createViewUpdateTask(BACKUP_DATASET, tableId, kindName, LATEST_BACKUP_VIEW_NAME),
|
||||
getQueue(UpdateSnapshotViewAction.QUEUE));
|
||||
// Serialize the chainedTask into a byte array to put in the task payload.
|
||||
ByteArrayOutputStream taskBytes = new ByteArrayOutputStream();
|
||||
new ObjectOutputStream(taskBytes)
|
||||
.writeObject(
|
||||
cloudTasksUtils.createPostTask(
|
||||
UpdateSnapshotViewAction.PATH,
|
||||
Service.BACKEND.toString(),
|
||||
ImmutableMultimap.of(
|
||||
UpdateSnapshotViewAction.UPDATE_SNAPSHOT_DATASET_ID_PARAM,
|
||||
BACKUP_DATASET,
|
||||
UpdateSnapshotViewAction.UPDATE_SNAPSHOT_TABLE_ID_PARAM,
|
||||
tableId,
|
||||
UpdateSnapshotViewAction.UPDATE_SNAPSHOT_KIND_PARAM,
|
||||
kindName,
|
||||
UpdateSnapshotViewAction.UPDATE_SNAPSHOT_VIEWNAME_PARAM,
|
||||
LATEST_BACKUP_VIEW_NAME)));
|
||||
|
||||
// Enqueues a task to poll for the success or failure of the referenced BigQuery job and to
|
||||
// launch the provided task in the specified queue if the job succeeds.
|
||||
cloudTasksUtils.enqueue(
|
||||
BigqueryPollJobAction.QUEUE,
|
||||
Task.newBuilder()
|
||||
.setAppEngineHttpRequest(
|
||||
cloudTasksUtils
|
||||
.createPostTask(BigqueryPollJobAction.PATH, Service.BACKEND.toString(), null)
|
||||
.getAppEngineHttpRequest()
|
||||
.toBuilder()
|
||||
.putHeaders(BigqueryPollJobAction.PROJECT_ID_HEADER, jobRef.getProjectId())
|
||||
.putHeaders(BigqueryPollJobAction.JOB_ID_HEADER, jobRef.getJobId())
|
||||
.putHeaders(
|
||||
BigqueryPollJobAction.CHAINED_TASK_QUEUE_HEADER,
|
||||
UpdateSnapshotViewAction.QUEUE)
|
||||
// need to include CONTENT_TYPE in header when body is not empty
|
||||
.putHeaders(HttpHeaders.CONTENT_TYPE, MediaType.FORM_DATA.toString())
|
||||
.setBody(ByteString.copyFrom(taskBytes.toByteArray()))
|
||||
.build())
|
||||
.setScheduleTime(
|
||||
Timestamps.fromMillis(
|
||||
clock.nowUtc().plus(BigqueryPollJobAction.POLL_COUNTDOWN).getMillis()))
|
||||
.build());
|
||||
|
||||
builder.append(String.format(" - %s:%s\n", projectId, jobId));
|
||||
logger.atInfo().log("Submitted load job %s:%s.", projectId, jobId);
|
||||
|
||||
@@ -14,8 +14,6 @@
|
||||
|
||||
package google.registry.export.sheet;
|
||||
|
||||
import static com.google.appengine.api.taskqueue.QueueFactory.getQueue;
|
||||
import static com.google.appengine.api.taskqueue.TaskOptions.Builder.withUrl;
|
||||
import static com.google.common.net.MediaType.PLAIN_TEXT_UTF_8;
|
||||
import static google.registry.request.Action.Method.POST;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_BAD_REQUEST;
|
||||
@@ -23,7 +21,6 @@ import static javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_NO_CONTENT;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_OK;
|
||||
|
||||
import com.google.appengine.api.taskqueue.TaskOptions.Method;
|
||||
import com.google.common.flogger.FluentLogger;
|
||||
import google.registry.config.RegistryConfig.Config;
|
||||
import google.registry.request.Action;
|
||||
@@ -100,7 +97,7 @@ public class SyncRegistrarsSheetAction implements Runnable {
|
||||
}
|
||||
|
||||
public static final String PATH = "/_dr/task/syncRegistrarsSheet";
|
||||
private static final String QUEUE = "sheet";
|
||||
public static final String QUEUE = "sheet";
|
||||
private static final String LOCK_NAME = "Synchronize registrars sheet";
|
||||
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
|
||||
|
||||
@@ -144,11 +141,4 @@ public class SyncRegistrarsSheetAction implements Runnable {
|
||||
Result.LOCKED.send(response, null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Enqueues a sync registrar sheet task targeting the App Engine service specified by hostname.
|
||||
*/
|
||||
public static void enqueueRegistrarSheetSync(String hostname) {
|
||||
getQueue(QUEUE).add(withUrl(PATH).method(Method.GET).header("Host", hostname));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ import static google.registry.monitoring.whitebox.CheckApiMetric.Status.UNKNOWN_
|
||||
import static google.registry.monitoring.whitebox.CheckApiMetric.Tier.PREMIUM;
|
||||
import static google.registry.monitoring.whitebox.CheckApiMetric.Tier.STANDARD;
|
||||
import static google.registry.pricing.PricingEngineProxy.isDomainPremium;
|
||||
import static google.registry.util.DomainNameUtils.canonicalizeDomainName;
|
||||
import static google.registry.util.DomainNameUtils.canonicalizeHostname;
|
||||
import static org.json.simple.JSONValue.toJSONString;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
@@ -105,7 +105,7 @@ public class CheckApiAction implements Runnable {
|
||||
String domainString;
|
||||
InternetDomainName domainName;
|
||||
try {
|
||||
domainString = canonicalizeDomainName(nullToEmpty(domain));
|
||||
domainString = canonicalizeHostname(nullToEmpty(domain));
|
||||
domainName = validateDomainName(domainString);
|
||||
} catch (IllegalArgumentException | EppException e) {
|
||||
metricBuilder.status(INVALID_NAME);
|
||||
|
||||
@@ -107,7 +107,7 @@ public class CertificateChecker {
|
||||
// https://stackoverflow.com/questions/49895713/how-to-find-the-matching-curve-name-from-an-ecpublickey.
|
||||
if (key instanceof ECPublicKey) {
|
||||
ECPublicKey ecKey = (ECPublicKey) key;
|
||||
params = EC5Util.convertSpec(ecKey.getParams(), false);
|
||||
params = EC5Util.convertSpec(ecKey.getParams());
|
||||
} else if (key instanceof org.bouncycastle.jce.interfaces.ECPublicKey) {
|
||||
org.bouncycastle.jce.interfaces.ECPublicKey ecKey =
|
||||
(org.bouncycastle.jce.interfaces.ECPublicKey) key;
|
||||
|
||||
@@ -25,6 +25,7 @@ import static google.registry.model.ResourceTransferUtils.handlePendingTransferO
|
||||
import static google.registry.model.eppoutput.Result.Code.SUCCESS;
|
||||
import static google.registry.model.eppoutput.Result.Code.SUCCESS_WITH_ACTION_PENDING;
|
||||
import static google.registry.model.transfer.TransferStatus.SERVER_CANCELLED;
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.assertAsyncActionsAreAllowed;
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.tm;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
@@ -94,6 +95,7 @@ public final class ContactDeleteFlow implements TransactionalFlow {
|
||||
extensionManager.register(MetadataExtension.class);
|
||||
validateRegistrarIsLoggedIn(registrarId);
|
||||
extensionManager.validate();
|
||||
assertAsyncActionsAreAllowed();
|
||||
DateTime now = tm().getTransactionTime();
|
||||
checkLinkedDomains(targetId, now, ContactResource.class, DomainBase::getReferencedContacts);
|
||||
ContactResource existingContact = loadAndVerifyExistence(ContactResource.class, targetId, now);
|
||||
|
||||
@@ -20,6 +20,7 @@ import static com.google.common.collect.ImmutableMap.toImmutableMap;
|
||||
import static google.registry.flows.FlowUtils.validateRegistrarIsLoggedIn;
|
||||
import static google.registry.flows.ResourceFlowUtils.verifyTargetIdCount;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.checkAllowedAccessToTld;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.checkHasBillingAccount;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.getReservationTypes;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.handleFeeRequest;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.isAnchorTenant;
|
||||
@@ -100,6 +101,7 @@ import org.joda.time.DateTime;
|
||||
* @error {@link DomainFlowUtils.InvalidIdnDomainLabelException}
|
||||
* @error {@link DomainFlowUtils.InvalidPunycodeException}
|
||||
* @error {@link DomainFlowUtils.LeadingDashException}
|
||||
* @error {@link DomainFlowUtils.MissingBillingAccountMapException}
|
||||
* @error {@link DomainFlowUtils.NotAuthorizedForTldException}
|
||||
* @error {@link DomainFlowUtils.RestoresAreAlwaysForOneYearException}
|
||||
* @error {@link DomainFlowUtils.TldDoesNotExistException}
|
||||
@@ -153,6 +155,7 @@ public final class DomainCheckFlow implements Flow {
|
||||
boolean tldFirstTimeSeen = seenTlds.add(tld);
|
||||
if (tldFirstTimeSeen && !isSuperuser) {
|
||||
checkAllowedAccessToTld(registrarId, tld);
|
||||
checkHasBillingAccount(registrarId, tld);
|
||||
verifyNotInPredelegation(Registry.get(tld), now);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ package google.registry.flows.domain;
|
||||
import static google.registry.flows.FlowUtils.validateRegistrarIsLoggedIn;
|
||||
import static google.registry.flows.ResourceFlowUtils.verifyTargetIdCount;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.checkAllowedAccessToTld;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.checkHasBillingAccount;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.validateDomainName;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.validateDomainNameWithIdnTables;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.verifyClaimsPeriodNotEnded;
|
||||
@@ -60,6 +61,7 @@ import org.joda.time.DateTime;
|
||||
* @error {@link google.registry.flows.FlowUtils.NotLoggedInException}
|
||||
* @error {@link DomainFlowUtils.BadCommandForRegistryPhaseException}
|
||||
* @error {@link DomainFlowUtils.ClaimsPeriodEndedException}
|
||||
* @error {@link DomainFlowUtils.MissingBillingAccountMapException}
|
||||
* @error {@link DomainFlowUtils.NotAuthorizedForTldException}
|
||||
* @error {@link DomainFlowUtils.TldDoesNotExistException}
|
||||
* @error {@link DomainClaimsCheckNotAllowedWithAllocationTokens}
|
||||
@@ -99,6 +101,7 @@ public final class DomainClaimsCheckFlow implements Flow {
|
||||
if (seenTlds.add(tld)) {
|
||||
if (!isSuperuser) {
|
||||
checkAllowedAccessToTld(registrarId, tld);
|
||||
checkHasBillingAccount(registrarId, tld);
|
||||
Registry registry = Registry.get(tld);
|
||||
DateTime now = clock.nowUtc();
|
||||
verifyNotInPredelegation(registry, now);
|
||||
|
||||
@@ -20,6 +20,7 @@ import static google.registry.flows.FlowUtils.validateRegistrarIsLoggedIn;
|
||||
import static google.registry.flows.ResourceFlowUtils.verifyResourceDoesNotExist;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.COLLISION_MESSAGE;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.checkAllowedAccessToTld;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.checkHasBillingAccount;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.cloneAndLinkReferences;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.createFeeCreateResponse;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.getReservationTypes;
|
||||
@@ -169,6 +170,7 @@ import org.joda.time.Duration;
|
||||
* @error {@link DomainFlowUtils.FeesMismatchException}
|
||||
* @error {@link DomainFlowUtils.FeesRequiredDuringEarlyAccessProgramException}
|
||||
* @error {@link DomainFlowUtils.FeesRequiredForPremiumNameException}
|
||||
* @error {@link DomainFlowUtils.InvalidDsRecordException}
|
||||
* @error {@link DomainFlowUtils.InvalidIdnDomainLabelException}
|
||||
* @error {@link DomainFlowUtils.InvalidPunycodeException}
|
||||
* @error {@link DomainFlowUtils.InvalidTcnIdChecksumException}
|
||||
@@ -179,6 +181,7 @@ import org.joda.time.Duration;
|
||||
* @error {@link DomainFlowUtils.MalformedTcnIdException}
|
||||
* @error {@link DomainFlowUtils.MaxSigLifeNotSupportedException}
|
||||
* @error {@link DomainFlowUtils.MissingAdminContactException}
|
||||
* @error {@link DomainFlowUtils.MissingBillingAccountMapException}
|
||||
* @error {@link DomainFlowUtils.MissingClaimsNoticeException}
|
||||
* @error {@link DomainFlowUtils.MissingContactTypeException}
|
||||
* @error {@link DomainFlowUtils.MissingRegistrantException}
|
||||
@@ -264,6 +267,7 @@ public final class DomainCreateFlow implements TransactionalFlow {
|
||||
// registering premium domains.
|
||||
if (!isSuperuser) {
|
||||
checkAllowedAccessToTld(registrarId, registry.getTldStr());
|
||||
checkHasBillingAccount(registrarId, registry.getTldStr());
|
||||
boolean isValidReservedCreate = isValidReservedCreate(domainName, allocationToken);
|
||||
verifyIsGaOrIsSpecialCase(tldState, isAnchorTenant, isValidReservedCreate, hasSignedMarks);
|
||||
if (launchCreate.isPresent()) {
|
||||
|
||||
@@ -129,6 +129,7 @@ import google.registry.model.tld.label.ReservedList;
|
||||
import google.registry.model.tmch.ClaimsListDao;
|
||||
import google.registry.persistence.VKey;
|
||||
import google.registry.tldconfig.idn.IdnLabelValidator;
|
||||
import google.registry.tools.DigestType;
|
||||
import google.registry.util.Idn;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Collection;
|
||||
@@ -144,6 +145,7 @@ import org.joda.money.CurrencyUnit;
|
||||
import org.joda.money.Money;
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.Duration;
|
||||
import org.xbill.DNS.DNSSEC.Algorithm;
|
||||
|
||||
/** Static utility functions for domain flows. */
|
||||
public class DomainFlowUtils {
|
||||
@@ -291,15 +293,72 @@ public class DomainFlowUtils {
|
||||
}
|
||||
}
|
||||
|
||||
/** Check if the registrar has the correct billing account map configured. */
|
||||
public static void checkHasBillingAccount(String registrarId, String tld) throws EppException {
|
||||
CurrencyUnit currency = Registry.get(tld).getCurrency();
|
||||
if (!Registrar.loadByRegistrarIdCached(registrarId)
|
||||
.get()
|
||||
.getBillingAccountMap()
|
||||
.containsKey(currency)) {
|
||||
throw new DomainFlowUtils.MissingBillingAccountMapException(currency);
|
||||
}
|
||||
}
|
||||
|
||||
/** Check that the DS data that will be set on a domain is valid. */
|
||||
static void validateDsData(Set<DelegationSignerData> dsData) throws EppException {
|
||||
if (dsData != null && dsData.size() > MAX_DS_RECORDS_PER_DOMAIN) {
|
||||
throw new TooManyDsRecordsException(
|
||||
String.format(
|
||||
"A maximum of %s DS records are allowed per domain.", MAX_DS_RECORDS_PER_DOMAIN));
|
||||
if (dsData != null) {
|
||||
if (dsData.size() > MAX_DS_RECORDS_PER_DOMAIN) {
|
||||
throw new TooManyDsRecordsException(
|
||||
String.format(
|
||||
"A maximum of %s DS records are allowed per domain.", MAX_DS_RECORDS_PER_DOMAIN));
|
||||
}
|
||||
ImmutableList<DelegationSignerData> invalidAlgorithms =
|
||||
dsData.stream()
|
||||
.filter(ds -> !validateAlgorithm(ds.getAlgorithm()))
|
||||
.collect(toImmutableList());
|
||||
if (!invalidAlgorithms.isEmpty()) {
|
||||
throw new InvalidDsRecordException(
|
||||
String.format(
|
||||
"Domain contains DS record(s) with an invalid algorithm wire value: %s",
|
||||
invalidAlgorithms));
|
||||
}
|
||||
ImmutableList<DelegationSignerData> invalidDigestTypes =
|
||||
dsData.stream()
|
||||
.filter(ds -> !DigestType.fromWireValue(ds.getDigestType()).isPresent())
|
||||
.collect(toImmutableList());
|
||||
if (!invalidDigestTypes.isEmpty()) {
|
||||
throw new InvalidDsRecordException(
|
||||
String.format(
|
||||
"Domain contains DS record(s) with an invalid digest type: %s",
|
||||
invalidDigestTypes));
|
||||
}
|
||||
ImmutableList<DelegationSignerData> digestsWithInvalidDigestLength =
|
||||
dsData.stream()
|
||||
.filter(
|
||||
ds ->
|
||||
DigestType.fromWireValue(ds.getDigestType()).isPresent()
|
||||
&& (ds.getDigest().length
|
||||
!= DigestType.fromWireValue(ds.getDigestType()).get().getBytes()))
|
||||
.collect(toImmutableList());
|
||||
if (!digestsWithInvalidDigestLength.isEmpty()) {
|
||||
throw new InvalidDsRecordException(
|
||||
String.format(
|
||||
"Domain contains DS record(s) with an invalid digest length: %s",
|
||||
digestsWithInvalidDigestLength));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean validateAlgorithm(int alg) {
|
||||
if (alg > 255 || alg < 0) {
|
||||
return false;
|
||||
}
|
||||
// Algorithms that are reserved or unassigned will just return a string representation of their
|
||||
// integer wire value.
|
||||
String algorithm = Algorithm.string(alg);
|
||||
return !algorithm.equals(Integer.toString(alg));
|
||||
}
|
||||
|
||||
/** We only allow specifying years in a period. */
|
||||
static Period verifyUnitIsYears(Period period) throws EppException {
|
||||
if (!checkNotNull(period).getUnit().equals(Period.Unit.YEARS)) {
|
||||
@@ -1077,7 +1136,16 @@ public class DomainFlowUtils {
|
||||
// Only cancel fields which are cancelable
|
||||
if (cancelableFields.contains(record.getReportField())) {
|
||||
int cancelledAmount = -1 * record.getReportAmount();
|
||||
recordsBuilder.add(record.asBuilder().setReportAmount(cancelledAmount).build());
|
||||
// NB: It's necessary to create a new DomainTransactionRecord from scratch so that we
|
||||
// don't retain the ID of the previous record to cancel. If we keep the ID, Hibernate
|
||||
// will remove that record from the DB entirely as the record will be re-parented on
|
||||
// this DomainHistory being created now.
|
||||
recordsBuilder.add(
|
||||
DomainTransactionRecord.create(
|
||||
record.getTld(),
|
||||
record.getReportingTime(),
|
||||
record.getReportField(),
|
||||
cancelledAmount));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1217,6 +1285,13 @@ public class DomainFlowUtils {
|
||||
}
|
||||
}
|
||||
|
||||
/** Domain has an invalid DS record. */
|
||||
static class InvalidDsRecordException extends ParameterValuePolicyErrorException {
|
||||
public InvalidDsRecordException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
|
||||
/** Domain name is under tld which doesn't exist. */
|
||||
static class TldDoesNotExistException extends ParameterValueRangeErrorException {
|
||||
public TldDoesNotExistException(String tld) {
|
||||
@@ -1437,6 +1512,13 @@ public class DomainFlowUtils {
|
||||
}
|
||||
}
|
||||
|
||||
/** Registrar is missing the billing account map for this currency type. */
|
||||
public static class MissingBillingAccountMapException extends AuthorizationErrorException {
|
||||
public MissingBillingAccountMapException(CurrencyUnit currency) {
|
||||
super("Registrar is not fully onboarded for TLDs that bill in " + currency);
|
||||
}
|
||||
}
|
||||
|
||||
/** Registrant is not allow-listed for this TLD. */
|
||||
public static class RegistrantNotAllowedException extends StatusProhibitsOperationException {
|
||||
public RegistrantNotAllowedException(String contactId) {
|
||||
|
||||
@@ -22,6 +22,7 @@ import static google.registry.flows.ResourceFlowUtils.verifyNoDisallowedStatuses
|
||||
import static google.registry.flows.ResourceFlowUtils.verifyOptionalAuthInfo;
|
||||
import static google.registry.flows.ResourceFlowUtils.verifyResourceOwnership;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.checkAllowedAccessToTld;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.checkHasBillingAccount;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.newAutorenewBillingEvent;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.newAutorenewPollMessage;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.updateAutorenewRecurrenceEndTime;
|
||||
@@ -106,6 +107,7 @@ import org.joda.time.Duration;
|
||||
* @error {@link DomainFlowUtils.ExceedsMaxRegistrationYearsException}
|
||||
* @error {@link DomainFlowUtils.FeesMismatchException}
|
||||
* @error {@link DomainFlowUtils.FeesRequiredForPremiumNameException}
|
||||
* @error {@link DomainFlowUtils.MissingBillingAccountMapException}
|
||||
* @error {@link DomainFlowUtils.NotAuthorizedForTldException}
|
||||
* @error {@link DomainFlowUtils.RegistrarMustBeActiveForThisOperationException}
|
||||
* @error {@link DomainFlowUtils.UnsupportedFeeAttributeException}
|
||||
@@ -263,6 +265,7 @@ public final class DomainRenewFlow implements TransactionalFlow {
|
||||
if (!isSuperuser) {
|
||||
verifyResourceOwnership(registrarId, existingDomain);
|
||||
checkAllowedAccessToTld(registrarId, existingDomain.getTld());
|
||||
checkHasBillingAccount(registrarId, existingDomain.getTld());
|
||||
}
|
||||
verifyUnitIsYears(command.getPeriod());
|
||||
// If the date they specify doesn't match the expiration, fail. (This is an idempotence check).
|
||||
|
||||
@@ -20,6 +20,7 @@ import static google.registry.flows.ResourceFlowUtils.loadAndVerifyExistence;
|
||||
import static google.registry.flows.ResourceFlowUtils.verifyOptionalAuthInfo;
|
||||
import static google.registry.flows.ResourceFlowUtils.verifyResourceOwnership;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.checkAllowedAccessToTld;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.checkHasBillingAccount;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.newAutorenewBillingEvent;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.newAutorenewPollMessage;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.validateFeeChallenge;
|
||||
@@ -104,6 +105,7 @@ import org.joda.time.DateTime;
|
||||
* @error {@link DomainFlowUtils.DomainReservedException}
|
||||
* @error {@link DomainFlowUtils.FeesMismatchException}
|
||||
* @error {@link DomainFlowUtils.FeesRequiredForPremiumNameException}
|
||||
* @error {@link DomainFlowUtils.MissingBillingAccountMapException}
|
||||
* @error {@link DomainFlowUtils.NotAuthorizedForTldException}
|
||||
* @error {@link DomainFlowUtils.PremiumNameBlockedException}
|
||||
* @error {@link DomainFlowUtils.RegistrarMustBeActiveForThisOperationException}
|
||||
@@ -216,6 +218,7 @@ public final class DomainRestoreRequestFlow implements TransactionalFlow {
|
||||
verifyNotReserved(InternetDomainName.from(targetId), false);
|
||||
verifyPremiumNameIsNotBlocked(targetId, now, registrarId);
|
||||
checkAllowedAccessToTld(registrarId, existingDomain.getTld());
|
||||
checkHasBillingAccount(registrarId, existingDomain.getTld());
|
||||
}
|
||||
// No other changes can be specified on a restore request.
|
||||
if (!command.noChangesPresent()) {
|
||||
|
||||
@@ -22,6 +22,7 @@ import static google.registry.flows.ResourceFlowUtils.verifyAuthInfo;
|
||||
import static google.registry.flows.ResourceFlowUtils.verifyAuthInfoPresentForResourceTransfer;
|
||||
import static google.registry.flows.ResourceFlowUtils.verifyNoDisallowedStatuses;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.checkAllowedAccessToTld;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.checkHasBillingAccount;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.updateAutorenewRecurrenceEndTime;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.validateFeeChallenge;
|
||||
import static google.registry.flows.domain.DomainFlowUtils.verifyPremiumNameIsNotBlocked;
|
||||
@@ -111,6 +112,7 @@ import org.joda.time.DateTime;
|
||||
* @error {@link DomainFlowUtils.CurrencyValueScaleException}
|
||||
* @error {@link DomainFlowUtils.FeesMismatchException}
|
||||
* @error {@link DomainFlowUtils.FeesRequiredForPremiumNameException}
|
||||
* @error {@link DomainFlowUtils.MissingBillingAccountMapException}
|
||||
* @error {@link DomainFlowUtils.NotAuthorizedForTldException}
|
||||
* @error {@link DomainFlowUtils.PremiumNameBlockedException}
|
||||
* @error {@link DomainFlowUtils.RegistrarMustBeActiveForThisOperationException}
|
||||
@@ -273,6 +275,7 @@ public final class DomainTransferRequestFlow implements TransactionalFlow {
|
||||
verifyTransferPeriod(period, superuserExtension);
|
||||
if (!isSuperuser) {
|
||||
checkAllowedAccessToTld(gainingClientId, existingDomain.getTld());
|
||||
checkHasBillingAccount(gainingClientId, existingDomain.getTld());
|
||||
verifyPremiumNameIsNotBlocked(targetId, now, gainingClientId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,6 +114,7 @@ import org.joda.time.DateTime;
|
||||
* @error {@link DomainFlowUtils.EmptySecDnsUpdateException}
|
||||
* @error {@link DomainFlowUtils.FeesMismatchException}
|
||||
* @error {@link DomainFlowUtils.FeesRequiredForNonFreeOperationException}
|
||||
* @error {@link DomainFlowUtils.InvalidDsRecordException}
|
||||
* @error {@link DomainFlowUtils.LinkedResourcesDoNotExistException}
|
||||
* @error {@link DomainFlowUtils.LinkedResourceInPendingDeleteProhibitsOperationException}
|
||||
* @error {@link DomainFlowUtils.MaxSigLifeChangeNotSupportedException}
|
||||
|
||||
@@ -22,6 +22,7 @@ import static google.registry.flows.ResourceFlowUtils.verifyResourceOwnership;
|
||||
import static google.registry.flows.host.HostFlowUtils.validateHostName;
|
||||
import static google.registry.model.eppoutput.Result.Code.SUCCESS;
|
||||
import static google.registry.model.eppoutput.Result.Code.SUCCESS_WITH_ACTION_PENDING;
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.assertAsyncActionsAreAllowed;
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.tm;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
@@ -96,6 +97,7 @@ public final class HostDeleteFlow implements TransactionalFlow {
|
||||
extensionManager.register(MetadataExtension.class);
|
||||
validateRegistrarIsLoggedIn(registrarId);
|
||||
extensionManager.validate();
|
||||
assertAsyncActionsAreAllowed();
|
||||
DateTime now = tm().getTransactionTime();
|
||||
validateHostName(targetId);
|
||||
checkLinkedDomains(targetId, now, HostResource.class, DomainBase::getNameservers);
|
||||
|
||||
@@ -28,6 +28,7 @@ import static google.registry.flows.host.HostFlowUtils.verifySuperordinateDomain
|
||||
import static google.registry.flows.host.HostFlowUtils.verifySuperordinateDomainOwnership;
|
||||
import static google.registry.model.index.ForeignKeyIndex.loadAndGetKey;
|
||||
import static google.registry.model.reporting.HistoryEntry.Type.HOST_UPDATE;
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.assertAsyncActionsAreAllowed;
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.tm;
|
||||
import static google.registry.util.CollectionUtils.isNullOrEmpty;
|
||||
|
||||
@@ -136,6 +137,9 @@ public final class HostUpdateFlow implements TransactionalFlow {
|
||||
validateHostName(targetId);
|
||||
HostResource existingHost = loadAndVerifyExistence(HostResource.class, targetId, now);
|
||||
boolean isHostRename = suppliedNewHostName != null;
|
||||
if (isHostRename) {
|
||||
assertAsyncActionsAreAllowed();
|
||||
}
|
||||
String oldHostName = targetId;
|
||||
String newHostName = firstNonNull(suppliedNewHostName, oldHostName);
|
||||
DomainBase oldSuperordinateDomain =
|
||||
|
||||
@@ -14,8 +14,6 @@
|
||||
|
||||
package google.registry.loadtest;
|
||||
|
||||
import static com.google.appengine.api.taskqueue.QueueConstants.maxTasksPerAdd;
|
||||
import static com.google.appengine.api.taskqueue.QueueFactory.getQueue;
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.collect.ImmutableList.toImmutableList;
|
||||
import static com.google.common.collect.Lists.partition;
|
||||
@@ -24,16 +22,20 @@ import static google.registry.util.ResourceUtils.readResourceUtf8;
|
||||
import static java.util.Arrays.asList;
|
||||
import static org.joda.time.DateTimeZone.UTC;
|
||||
|
||||
import com.google.appengine.api.taskqueue.TaskOptions;
|
||||
import com.google.cloud.tasks.v2.Task;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMultimap;
|
||||
import com.google.common.collect.Iterators;
|
||||
import com.google.common.flogger.FluentLogger;
|
||||
import com.google.protobuf.Timestamp;
|
||||
import google.registry.config.RegistryEnvironment;
|
||||
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.security.XsrfTokenManager;
|
||||
import google.registry.util.TaskQueueUtils;
|
||||
import google.registry.util.CloudTasksUtils;
|
||||
import java.time.Instant;
|
||||
import java.util.Arrays;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
@@ -62,6 +64,7 @@ public class LoadTestAction implements Runnable {
|
||||
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
|
||||
|
||||
private static final int NUM_QUEUES = 10;
|
||||
private static final int MAX_TASKS_PER_LOAD = 100;
|
||||
private static final int ARBITRARY_VALID_HOST_LENGTH = 40;
|
||||
private static final int MAX_CONTACT_LENGTH = 13;
|
||||
private static final int MAX_DOMAIN_LABEL_LENGTH = 63;
|
||||
@@ -146,7 +149,7 @@ public class LoadTestAction implements Runnable {
|
||||
@Parameter("hostInfos")
|
||||
int hostInfosPerSecond;
|
||||
|
||||
@Inject TaskQueueUtils taskQueueUtils;
|
||||
@Inject CloudTasksUtils cloudTasksUtils;
|
||||
|
||||
private final String xmlContactCreateTmpl;
|
||||
private final String xmlContactCreateFail;
|
||||
@@ -208,7 +211,7 @@ public class LoadTestAction implements Runnable {
|
||||
ImmutableList<String> contactNames = contactNamesBuilder.build();
|
||||
ImmutableList<String> hostPrefixes = hostPrefixesBuilder.build();
|
||||
|
||||
ImmutableList.Builder<TaskOptions> tasks = new ImmutableList.Builder<>();
|
||||
ImmutableList.Builder<Task> tasks = new ImmutableList.Builder<>();
|
||||
for (int offsetSeconds = 0; offsetSeconds < runSeconds; offsetSeconds++) {
|
||||
DateTime startSecond = initialStartSecond.plusSeconds(offsetSeconds);
|
||||
// The first "failed" creates might actually succeed if the object doesn't already exist, but
|
||||
@@ -254,7 +257,7 @@ public class LoadTestAction implements Runnable {
|
||||
.collect(toImmutableList()),
|
||||
startSecond));
|
||||
}
|
||||
ImmutableList<TaskOptions> taskOptions = tasks.build();
|
||||
ImmutableList<Task> taskOptions = tasks.build();
|
||||
enqueue(taskOptions);
|
||||
logger.atInfo().log("Added %d total load test tasks.", taskOptions.size());
|
||||
}
|
||||
@@ -322,28 +325,51 @@ public class LoadTestAction implements Runnable {
|
||||
return name.toString();
|
||||
}
|
||||
|
||||
private List<TaskOptions> createTasks(List<String> xmls, DateTime start) {
|
||||
ImmutableList.Builder<TaskOptions> tasks = new ImmutableList.Builder<>();
|
||||
private List<Task> createTasks(List<String> xmls, DateTime start) {
|
||||
ImmutableList.Builder<Task> tasks = new ImmutableList.Builder<>();
|
||||
for (int i = 0; i < xmls.size(); i++) {
|
||||
// Space tasks evenly within across a second.
|
||||
int offsetMillis = (int) (1000.0 / xmls.size() * i);
|
||||
Instant scheduleTime =
|
||||
Instant.ofEpochMilli(start.plusMillis((int) (1000.0 / xmls.size() * i)).getMillis());
|
||||
tasks.add(
|
||||
TaskOptions.Builder.withUrl("/_dr/epptool")
|
||||
.etaMillis(start.getMillis() + offsetMillis)
|
||||
.header(X_CSRF_TOKEN, xsrfToken)
|
||||
.param("clientId", registrarId)
|
||||
.param("superuser", Boolean.FALSE.toString())
|
||||
.param("dryRun", Boolean.FALSE.toString())
|
||||
.param("xml", xmls.get(i)));
|
||||
Task.newBuilder()
|
||||
.setAppEngineHttpRequest(
|
||||
cloudTasksUtils
|
||||
.createPostTask(
|
||||
"/_dr/epptool",
|
||||
Service.TOOLS.toString(),
|
||||
ImmutableMultimap.of(
|
||||
"clientId",
|
||||
registrarId,
|
||||
"superuser",
|
||||
Boolean.FALSE.toString(),
|
||||
"dryRun",
|
||||
Boolean.FALSE.toString(),
|
||||
"xml",
|
||||
xmls.get(i)))
|
||||
.toBuilder()
|
||||
.getAppEngineHttpRequest()
|
||||
.toBuilder()
|
||||
// instead of adding the X_CSRF_TOKEN to params, this remains as part of
|
||||
// headers because of the existing setup for authentication in {@link
|
||||
// google.registry.request.auth.LegacyAuthenticationMechanism}
|
||||
.putHeaders(X_CSRF_TOKEN, xsrfToken)
|
||||
.build())
|
||||
.setScheduleTime(
|
||||
Timestamp.newBuilder()
|
||||
.setSeconds(scheduleTime.getEpochSecond())
|
||||
.setNanos(scheduleTime.getNano())
|
||||
.build())
|
||||
.build());
|
||||
}
|
||||
return tasks.build();
|
||||
}
|
||||
|
||||
private void enqueue(List<TaskOptions> tasks) {
|
||||
List<List<TaskOptions>> chunks = partition(tasks, maxTasksPerAdd());
|
||||
private void enqueue(List<Task> tasks) {
|
||||
List<List<Task>> chunks = partition(tasks, MAX_TASKS_PER_LOAD);
|
||||
// Farm out tasks to multiple queues to work around queue qps quotas.
|
||||
for (int i = 0; i < chunks.size(); i++) {
|
||||
taskQueueUtils.enqueue(getQueue("load" + (i % NUM_QUEUES)), chunks.get(i));
|
||||
cloudTasksUtils.enqueue("load" + (i % NUM_QUEUES), chunks.get(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,4 +60,25 @@ public abstract class BackupGroupRoot extends ImmutableObject implements UnsafeS
|
||||
protected void copyUpdateTimestamp(BackupGroupRoot other) {
|
||||
this.updateTimestamp = PreconditionsUtils.checkArgumentNotNull(other, "other").updateTimestamp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Resets the {@link #updateTimestamp} to force Hibernate to persist it.
|
||||
*
|
||||
* <p>This method is for use in setters in derived builders that do not result in the derived
|
||||
* object being persisted.
|
||||
*/
|
||||
protected void resetUpdateTimestamp() {
|
||||
this.updateTimestamp = UpdateAutoTimestamp.create(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the {@link #updateTimestamp}.
|
||||
*
|
||||
* <p>This method is for use in the few places where we need to restore the update timestamp after
|
||||
* mutating a collection in order to force the new timestamp to be persisted when it ordinarily
|
||||
* wouldn't.
|
||||
*/
|
||||
protected void setUpdateTimestamp(UpdateAutoTimestamp timestamp) {
|
||||
updateTimestamp = timestamp;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,10 +17,10 @@ package google.registry.model;
|
||||
import static com.google.common.base.Suppliers.memoizeWithExpiration;
|
||||
import static google.registry.config.RegistryConfig.getSingletonCacheRefreshDuration;
|
||||
import static java.util.concurrent.TimeUnit.MILLISECONDS;
|
||||
import static org.joda.time.Duration.ZERO;
|
||||
|
||||
import com.github.benmanes.caffeine.cache.Caffeine;
|
||||
import com.google.common.base.Supplier;
|
||||
import org.joda.time.Duration;
|
||||
import java.time.Duration;
|
||||
|
||||
/** Utility methods related to caching Datastore entities. */
|
||||
public class CacheUtils {
|
||||
@@ -41,8 +41,36 @@ public class CacheUtils {
|
||||
*/
|
||||
public static <T> Supplier<T> tryMemoizeWithExpiration(
|
||||
Duration expiration, Supplier<T> original) {
|
||||
return expiration.isEqual(ZERO)
|
||||
return expiration.isZero()
|
||||
? original
|
||||
: memoizeWithExpiration(original, expiration.getMillis(), MILLISECONDS);
|
||||
: memoizeWithExpiration(original, expiration.toMillis(), MILLISECONDS);
|
||||
}
|
||||
|
||||
/** Creates and returns a new {@link Caffeine} builder. */
|
||||
public static Caffeine<Object, Object> newCacheBuilder() {
|
||||
return Caffeine.newBuilder();
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates and returns a new {@link Caffeine} builder with the specified cache expiration.
|
||||
*
|
||||
* <p>This also sets the refresh duration to half of the cache expiration. The resultant behavior
|
||||
* is that a cache entry is eligible to be asynchronously refreshed after access once more than
|
||||
* half of its cache duration has elapsed, and then it is synchronously refreshed (blocking the
|
||||
* read) once its full cache duration has elapsed. So you will never get data older than the cache
|
||||
* expiration, but for frequently accessed keys it will be refreshed more often than that and the
|
||||
* cost of the load will never be incurred during the read.
|
||||
*/
|
||||
public static Caffeine<Object, Object> newCacheBuilder(Duration expireAfterWrite) {
|
||||
Duration refreshAfterWrite = expireAfterWrite.dividedBy(2);
|
||||
Caffeine<Object, Object> caffeine = Caffeine.newBuilder().expireAfterWrite(expireAfterWrite);
|
||||
// In tests, the cache duration is usually set to 0, which means the cache load synchronously
|
||||
// blocks every time it is called anyway because of the expireAfterWrite() above. Thus, setting
|
||||
// the refreshAfterWrite won't do anything, plus it's not legal to call it with a zero value
|
||||
// anyway (Caffeine allows expireAfterWrite to be zero but not refreshAfterWrite).
|
||||
if (!refreshAfterWrite.isZero()) {
|
||||
caffeine = caffeine.refreshAfterWrite(refreshAfterWrite);
|
||||
}
|
||||
return caffeine;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@ import google.registry.model.rde.RdeRevision;
|
||||
import google.registry.model.registrar.Registrar;
|
||||
import google.registry.model.registrar.RegistrarContact;
|
||||
import google.registry.model.replay.LastSqlTransaction;
|
||||
import google.registry.model.replay.ReplayGap;
|
||||
import google.registry.model.reporting.HistoryEntry;
|
||||
import google.registry.model.server.Lock;
|
||||
import google.registry.model.server.ServerSecret;
|
||||
@@ -86,6 +87,7 @@ public final class EntityClasses {
|
||||
Registrar.class,
|
||||
RegistrarContact.class,
|
||||
Registry.class,
|
||||
ReplayGap.class,
|
||||
ServerSecret.class);
|
||||
|
||||
private EntityClasses() {}
|
||||
|
||||
@@ -362,6 +362,16 @@ public abstract class EppResource extends BackupGroupRoot implements Buildable {
|
||||
return thisCastToDerived();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the update timestamp.
|
||||
*
|
||||
* <p>This is provided at EppResource since BackupGroupRoot doesn't have a Builder.
|
||||
*/
|
||||
public B setUpdateTimestamp(UpdateAutoTimestamp updateTimestamp) {
|
||||
getInstance().setUpdateTimestamp(updateTimestamp);
|
||||
return thisCastToDerived();
|
||||
}
|
||||
|
||||
/** Build the resource, nullifying empty strings and sets and setting defaults. */
|
||||
@Override
|
||||
public T build() {
|
||||
|
||||
@@ -21,11 +21,9 @@ import static com.google.common.collect.Maps.transformValues;
|
||||
import static java.util.stream.Collectors.toCollection;
|
||||
import static java.util.stream.Collectors.toList;
|
||||
|
||||
import com.github.benmanes.caffeine.cache.LoadingCache;
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.cache.CacheBuilder;
|
||||
import com.google.common.cache.CacheLoader;
|
||||
import com.google.common.cache.LoadingCache;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.ImmutableSortedMap;
|
||||
@@ -59,36 +57,33 @@ public class ModelUtils {
|
||||
|
||||
/** Caches all instance fields on an object, including non-public and inherited fields. */
|
||||
private static final LoadingCache<Class<?>, ImmutableMap<String, Field>> ALL_FIELDS_CACHE =
|
||||
CacheBuilder.newBuilder()
|
||||
CacheUtils.newCacheBuilder()
|
||||
.build(
|
||||
new CacheLoader<Class<?>, ImmutableMap<String, Field>>() {
|
||||
@Override
|
||||
public ImmutableMap<String, Field> load(Class<?> clazz) {
|
||||
Deque<Class<?>> hierarchy = new ArrayDeque<>();
|
||||
// Walk the hierarchy up to but not including ImmutableObject (to ignore
|
||||
// hashCode).
|
||||
for (; clazz != ImmutableObject.class; clazz = clazz.getSuperclass()) {
|
||||
// Add to the front, so that shadowed fields show up later in the list.
|
||||
// This will mean that getFieldValues will show the most derived value.
|
||||
hierarchy.addFirst(clazz);
|
||||
}
|
||||
Map<String, Field> fields = new LinkedHashMap<>();
|
||||
for (Class<?> hierarchyClass : hierarchy) {
|
||||
// Don't use hierarchyClass.getFields() because it only picks up public fields.
|
||||
for (Field field : hierarchyClass.getDeclaredFields()) {
|
||||
if (!Modifier.isStatic(field.getModifiers())) {
|
||||
field.setAccessible(true);
|
||||
fields.put(field.getName(), field);
|
||||
}
|
||||
clazz -> {
|
||||
Deque<Class<?>> hierarchy = new ArrayDeque<>();
|
||||
// Walk the hierarchy up to but not including ImmutableObject (to ignore
|
||||
// hashCode).
|
||||
for (; clazz != ImmutableObject.class; clazz = clazz.getSuperclass()) {
|
||||
// Add to the front, so that shadowed fields show up later in the list.
|
||||
// This will mean that getFieldValues will show the most derived value.
|
||||
hierarchy.addFirst(clazz);
|
||||
}
|
||||
Map<String, Field> fields = new LinkedHashMap<>();
|
||||
for (Class<?> hierarchyClass : hierarchy) {
|
||||
// Don't use hierarchyClass.getFields() because it only picks up public fields.
|
||||
for (Field field : hierarchyClass.getDeclaredFields()) {
|
||||
if (!Modifier.isStatic(field.getModifiers())) {
|
||||
field.setAccessible(true);
|
||||
fields.put(field.getName(), field);
|
||||
}
|
||||
}
|
||||
return ImmutableMap.copyOf(fields);
|
||||
}
|
||||
return ImmutableMap.copyOf(fields);
|
||||
});
|
||||
|
||||
/** Lists all instance fields on an object, including non-public and inherited fields. */
|
||||
public static Map<String, Field> getAllFields(Class<?> clazz) {
|
||||
return ALL_FIELDS_CACHE.getUnchecked(clazz);
|
||||
return ALL_FIELDS_CACHE.get(clazz);
|
||||
}
|
||||
|
||||
/** Return a string representing the persisted schema of a type or enum. */
|
||||
|
||||
@@ -38,6 +38,7 @@ import google.registry.model.registrar.RegistrarAddress;
|
||||
import google.registry.model.registrar.RegistrarContact;
|
||||
import google.registry.model.tld.Registry;
|
||||
import google.registry.model.tld.Registry.TldState;
|
||||
import google.registry.model.tld.Registry.TldType;
|
||||
import google.registry.model.tld.label.PremiumList;
|
||||
import google.registry.model.tld.label.PremiumListDao;
|
||||
import google.registry.persistence.VKey;
|
||||
@@ -111,6 +112,17 @@ public final class OteAccountBuilder {
|
||||
DateTime.parse("2030-03-01T00:00:00Z"),
|
||||
Money.of(CurrencyUnit.USD, 0));
|
||||
|
||||
/**
|
||||
* The default billing account map applied to all OT&E registrars.
|
||||
*
|
||||
* <p>This contains dummy values for USD and JPY so that OT&E registrars can be granted access
|
||||
* to all existing TLDs in sandbox. Note that OT&E is only on sandbox and thus these dummy
|
||||
* values will never be used in production (the only environment where real invoicing takes
|
||||
* place).
|
||||
*/
|
||||
public static final ImmutableMap<CurrencyUnit, String> DEFAULT_BILLING_ACCOUNT_MAP =
|
||||
ImmutableMap.of(CurrencyUnit.USD, "123", CurrencyUnit.JPY, "456");
|
||||
|
||||
private final ImmutableMap<String, String> registrarIdToTld;
|
||||
private final Registry sunriseTld;
|
||||
private final Registry gaTld;
|
||||
@@ -305,6 +317,7 @@ public final class OteAccountBuilder {
|
||||
.setTldStateTransitions(ImmutableSortedMap.of(START_OF_TIME, initialTldState))
|
||||
.setDnsWriters(ImmutableSet.of("VoidDnsWriter"))
|
||||
.setPremiumList(premiumList.get())
|
||||
.setTldType(TldType.TEST)
|
||||
.setRoidSuffix(
|
||||
String.format(
|
||||
"%S%X",
|
||||
@@ -334,6 +347,7 @@ public final class OteAccountBuilder {
|
||||
.setPhoneNumber("+1.2125550100")
|
||||
.setIcannReferralEmail("nightmare@registrar.test")
|
||||
.setState(Registrar.State.ACTIVE)
|
||||
.setBillingAccountMap(DEFAULT_BILLING_ACCOUNT_MAP)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
@@ -126,7 +126,40 @@ public abstract class BillingEvent extends ImmutableObject
|
||||
* This flag will be added to any {@link OneTime} events that are created via, e.g., an
|
||||
* automated process to expand {@link Recurring} events.
|
||||
*/
|
||||
SYNTHETIC
|
||||
SYNTHETIC;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets of renewal price behaviors that can be applied to billing recurrences.
|
||||
*
|
||||
* <p>When a client renews a domain, they could be charged differently, depending on factors such
|
||||
* as the client type and the domain itself.
|
||||
*/
|
||||
public enum RenewalPriceBehavior {
|
||||
/**
|
||||
* This indicates the renewal price is the default price.
|
||||
*
|
||||
* <p>By default, if the domain is premium, then premium price will be used. Otherwise, the
|
||||
* standard price of the TLD will be used.
|
||||
*/
|
||||
DEFAULT,
|
||||
/**
|
||||
* This indicates the domain will be renewed at standard price even if it's a premium domain.
|
||||
*
|
||||
* <p>We chose to name this "NONPREMIUM" rather than simply "STANDARD" to avoid confusion
|
||||
* between "STANDARD" and "DEFAULT".
|
||||
*
|
||||
* <p>This price behavior is used with anchor tenants.
|
||||
*/
|
||||
NONPREMIUM,
|
||||
/**
|
||||
* This indicates that the renewalPrice in {@link BillingEvent.Recurring} will be used for
|
||||
* domain renewal.
|
||||
*
|
||||
* <p>The renewalPrice has a non-null value iff the price behavior is set to "SPECIFIED". This
|
||||
* behavior is used with internal registrations.
|
||||
*/
|
||||
SPECIFIED;
|
||||
}
|
||||
|
||||
/** Entity id. */
|
||||
@@ -308,7 +341,9 @@ public abstract class BillingEvent extends ImmutableObject
|
||||
@javax.persistence.Index(columnList = "eventTime"),
|
||||
@javax.persistence.Index(columnList = "billingTime"),
|
||||
@javax.persistence.Index(columnList = "syntheticCreationTime"),
|
||||
@javax.persistence.Index(columnList = "allocationToken")
|
||||
@javax.persistence.Index(columnList = "domainRepoId"),
|
||||
@javax.persistence.Index(columnList = "allocationToken"),
|
||||
@javax.persistence.Index(columnList = "cancellation_matching_billing_recurrence_id")
|
||||
})
|
||||
@AttributeOverride(name = "id", column = @Column(name = "billing_event_id"))
|
||||
@WithLongVKey(compositeKey = true)
|
||||
@@ -518,6 +553,7 @@ public abstract class BillingEvent extends ImmutableObject
|
||||
indexes = {
|
||||
@javax.persistence.Index(columnList = "registrarId"),
|
||||
@javax.persistence.Index(columnList = "eventTime"),
|
||||
@javax.persistence.Index(columnList = "domainRepoId"),
|
||||
@javax.persistence.Index(columnList = "recurrenceEndTime"),
|
||||
@javax.persistence.Index(columnList = "recurrence_time_of_year")
|
||||
})
|
||||
@@ -552,6 +588,22 @@ public abstract class BillingEvent extends ImmutableObject
|
||||
})
|
||||
TimeOfYear recurrenceTimeOfYear;
|
||||
|
||||
/**
|
||||
* The renewal price for domain renewal if and only if it's specified.
|
||||
*
|
||||
* <p>This price column remains null except when the renewal price behavior of the billing is
|
||||
* SPECIFIED. This column is used for internal registrations.
|
||||
*/
|
||||
@Nullable
|
||||
@Type(type = JodaMoneyType.TYPE_NAME)
|
||||
@Columns(
|
||||
columns = {@Column(name = "renewalPriceAmount"), @Column(name = "renewalPriceCurrency")})
|
||||
Money renewalPrice;
|
||||
|
||||
@Enumerated(EnumType.STRING)
|
||||
@Column(name = "renewalPriceBehavior", nullable = false)
|
||||
RenewalPriceBehavior renewalPriceBehavior = RenewalPriceBehavior.DEFAULT;
|
||||
|
||||
public DateTime getRecurrenceEndTime() {
|
||||
return recurrenceEndTime;
|
||||
}
|
||||
@@ -560,6 +612,14 @@ public abstract class BillingEvent extends ImmutableObject
|
||||
return recurrenceTimeOfYear;
|
||||
}
|
||||
|
||||
public RenewalPriceBehavior getRenewalPriceBehavior() {
|
||||
return renewalPriceBehavior;
|
||||
}
|
||||
|
||||
public Optional<Money> getRenewalPrice() {
|
||||
return Optional.ofNullable(renewalPrice);
|
||||
}
|
||||
|
||||
@Override
|
||||
public VKey<Recurring> createVKey() {
|
||||
return VKey.create(Recurring.class, getId(), Key.create(this));
|
||||
@@ -588,11 +648,26 @@ public abstract class BillingEvent extends ImmutableObject
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setRenewalPriceBehavior(RenewalPriceBehavior renewalPriceBehavior) {
|
||||
getInstance().renewalPriceBehavior = renewalPriceBehavior;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setRenewalPrice(@Nullable Money renewalPrice) {
|
||||
getInstance().renewalPrice = renewalPrice;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Recurring build() {
|
||||
Recurring instance = getInstance();
|
||||
checkNotNull(instance.eventTime);
|
||||
checkNotNull(instance.reason);
|
||||
checkArgument(
|
||||
(instance.renewalPriceBehavior == RenewalPriceBehavior.SPECIFIED)
|
||||
^ (instance.renewalPrice == null),
|
||||
"Renewal price can have a value if and only if the renewal price behavior is"
|
||||
+ " SPECIFIED");
|
||||
instance.recurrenceTimeOfYear = TimeOfYear.fromDateTime(instance.eventTime);
|
||||
instance.recurrenceEndTime =
|
||||
Optional.ofNullable(instance.recurrenceEndTime).orElse(END_OF_TIME);
|
||||
@@ -614,7 +689,10 @@ public abstract class BillingEvent extends ImmutableObject
|
||||
indexes = {
|
||||
@javax.persistence.Index(columnList = "registrarId"),
|
||||
@javax.persistence.Index(columnList = "eventTime"),
|
||||
@javax.persistence.Index(columnList = "billingTime")
|
||||
@javax.persistence.Index(columnList = "domainRepoId"),
|
||||
@javax.persistence.Index(columnList = "billingTime"),
|
||||
@javax.persistence.Index(columnList = "billing_event_id"),
|
||||
@javax.persistence.Index(columnList = "billing_recurrence_id")
|
||||
})
|
||||
@AttributeOverride(name = "id", column = @Column(name = "billing_cancellation_id"))
|
||||
@WithLongVKey(compositeKey = true)
|
||||
|
||||
@@ -74,6 +74,8 @@ public class BulkQueryEntities {
|
||||
builder.setGracePeriods(gracePeriods);
|
||||
builder.setDsData(delegationSignerData);
|
||||
builder.setNameservers(nsHosts);
|
||||
// Restore the original update timestamp (this gets cleared when we set nameservers or DS data).
|
||||
builder.setUpdateTimestamp(domainBaseLite.getUpdateTimestamp());
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
@@ -100,6 +102,9 @@ public class BulkQueryEntities {
|
||||
dsDataHistories.stream()
|
||||
.map(DelegationSignerData::create)
|
||||
.collect(toImmutableSet()))
|
||||
// Restore the original update timestamp (this gets cleared when we set nameservers or
|
||||
// DS data).
|
||||
.setUpdateTimestamp(domainHistoryLite.domainContent.getUpdateTimestamp())
|
||||
.build();
|
||||
builder.setDomain(newDomainContent);
|
||||
}
|
||||
|
||||
@@ -18,18 +18,18 @@ import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.jpaTm;
|
||||
import static google.registry.util.DateTimeUtils.START_OF_TIME;
|
||||
|
||||
import com.github.benmanes.caffeine.cache.LoadingCache;
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.cache.CacheBuilder;
|
||||
import com.google.common.cache.CacheLoader;
|
||||
import com.google.common.cache.LoadingCache;
|
||||
import com.google.common.collect.ImmutableMultimap;
|
||||
import com.google.common.collect.ImmutableSortedMap;
|
||||
import com.google.common.flogger.FluentLogger;
|
||||
import google.registry.config.RegistryEnvironment;
|
||||
import google.registry.model.CacheUtils;
|
||||
import google.registry.model.annotations.DeleteAfterMigration;
|
||||
import google.registry.model.common.TimedTransitionProperty.TimedTransition;
|
||||
import google.registry.model.replay.SqlOnlyEntity;
|
||||
import java.time.Duration;
|
||||
import java.util.Arrays;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.PersistenceException;
|
||||
import org.joda.time.DateTime;
|
||||
@@ -62,11 +62,28 @@ public class DatabaseMigrationStateSchedule extends CrossTldSingleton implements
|
||||
* not the phase is read-only.
|
||||
*/
|
||||
public enum MigrationState {
|
||||
/** Datastore is the only DB being used. */
|
||||
DATASTORE_ONLY(PrimaryDatabase.DATASTORE, false, ReplayDirection.NO_REPLAY),
|
||||
|
||||
/** Datastore is the primary DB, with changes replicated to Cloud SQL. */
|
||||
DATASTORE_PRIMARY(PrimaryDatabase.DATASTORE, false, ReplayDirection.DATASTORE_TO_SQL),
|
||||
|
||||
/** Datastore is the primary DB, with replication, and async actions are disallowed. */
|
||||
DATASTORE_PRIMARY_NO_ASYNC(PrimaryDatabase.DATASTORE, false, ReplayDirection.DATASTORE_TO_SQL),
|
||||
|
||||
/** Datastore is the primary DB, with replication, and all mutating actions are disallowed. */
|
||||
DATASTORE_PRIMARY_READ_ONLY(PrimaryDatabase.DATASTORE, true, ReplayDirection.DATASTORE_TO_SQL),
|
||||
|
||||
/**
|
||||
* Cloud SQL is the primary DB, with replication back to Datastore, and all mutating actions are
|
||||
* disallowed.
|
||||
*/
|
||||
SQL_PRIMARY_READ_ONLY(PrimaryDatabase.CLOUD_SQL, true, ReplayDirection.SQL_TO_DATASTORE),
|
||||
|
||||
/** Cloud SQL is the primary DB, with changes replicated to Datastore. */
|
||||
SQL_PRIMARY(PrimaryDatabase.CLOUD_SQL, false, ReplayDirection.SQL_TO_DATASTORE),
|
||||
|
||||
/** Cloud SQL is the only DB being used. */
|
||||
SQL_ONLY(PrimaryDatabase.CLOUD_SQL, false, ReplayDirection.NO_REPLAY);
|
||||
|
||||
private final PrimaryDatabase primaryDatabase;
|
||||
@@ -117,18 +134,8 @@ public class DatabaseMigrationStateSchedule extends CrossTldSingleton implements
|
||||
TimedTransitionProperty<MigrationState, MigrationStateTransition>>
|
||||
// Each instance should cache the migration schedule for five minutes before reloading
|
||||
CACHE =
|
||||
CacheBuilder.newBuilder()
|
||||
.expireAfterWrite(Duration.ofMinutes(5))
|
||||
.build(
|
||||
new CacheLoader<
|
||||
Class<DatabaseMigrationStateSchedule>,
|
||||
TimedTransitionProperty<MigrationState, MigrationStateTransition>>() {
|
||||
@Override
|
||||
public TimedTransitionProperty<MigrationState, MigrationStateTransition> load(
|
||||
Class<DatabaseMigrationStateSchedule> unused) {
|
||||
return DatabaseMigrationStateSchedule.getUncached();
|
||||
}
|
||||
});
|
||||
CacheUtils.newCacheBuilder(Duration.ofMinutes(5))
|
||||
.build(singletonClazz -> DatabaseMigrationStateSchedule.getUncached());
|
||||
|
||||
// Restrictions on the state transitions, e.g. no going from DATASTORE_ONLY to SQL_ONLY
|
||||
private static final ImmutableMultimap<MigrationState, MigrationState> VALID_STATE_TRANSITIONS =
|
||||
@@ -146,11 +153,17 @@ public class DatabaseMigrationStateSchedule extends CrossTldSingleton implements
|
||||
.putAll(
|
||||
MigrationState.DATASTORE_PRIMARY,
|
||||
MigrationState.DATASTORE_ONLY,
|
||||
MigrationState.DATASTORE_PRIMARY_NO_ASYNC)
|
||||
.putAll(
|
||||
MigrationState.DATASTORE_PRIMARY_NO_ASYNC,
|
||||
MigrationState.DATASTORE_ONLY,
|
||||
MigrationState.DATASTORE_PRIMARY,
|
||||
MigrationState.DATASTORE_PRIMARY_READ_ONLY)
|
||||
.putAll(
|
||||
MigrationState.DATASTORE_PRIMARY_READ_ONLY,
|
||||
MigrationState.DATASTORE_ONLY,
|
||||
MigrationState.DATASTORE_PRIMARY,
|
||||
MigrationState.DATASTORE_PRIMARY_NO_ASYNC,
|
||||
MigrationState.SQL_PRIMARY_READ_ONLY,
|
||||
MigrationState.SQL_PRIMARY)
|
||||
.putAll(
|
||||
@@ -165,10 +178,9 @@ public class DatabaseMigrationStateSchedule extends CrossTldSingleton implements
|
||||
MigrationState.SQL_ONLY,
|
||||
MigrationState.SQL_PRIMARY_READ_ONLY,
|
||||
MigrationState.SQL_PRIMARY);
|
||||
|
||||
// In addition, we can always transition from a state to itself (useful when updating the map).
|
||||
for (MigrationState migrationState : MigrationState.values()) {
|
||||
builder.put(migrationState, migrationState);
|
||||
}
|
||||
Arrays.stream(MigrationState.values()).forEach(state -> builder.put(state, state));
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
@@ -212,7 +224,7 @@ public class DatabaseMigrationStateSchedule extends CrossTldSingleton implements
|
||||
|
||||
/** Loads the currently-set migration schedule from the cache, or the default if none exists. */
|
||||
public static TimedTransitionProperty<MigrationState, MigrationStateTransition> get() {
|
||||
return CACHE.getUnchecked(DatabaseMigrationStateSchedule.class);
|
||||
return CACHE.get(DatabaseMigrationStateSchedule.class);
|
||||
}
|
||||
|
||||
/** Returns the database migration status at the given time. */
|
||||
@@ -246,7 +258,7 @@ public class DatabaseMigrationStateSchedule extends CrossTldSingleton implements
|
||||
* A provided map of transitions may be valid by itself (i.e. it shifts states properly, doesn't
|
||||
* skip states, and doesn't backtrack incorrectly) while still being invalid. In addition to the
|
||||
* transitions in the map being valid, the single transition from the current map at the current
|
||||
* time to the new map at the current time time must also be valid.
|
||||
* time to the new map at the current time must also be valid.
|
||||
*/
|
||||
private static void validateTransitionAtCurrentTime(
|
||||
TimedTransitionProperty<MigrationState, MigrationStateTransition> newTransitions) {
|
||||
|
||||
@@ -64,7 +64,7 @@ public class ContactHistory extends HistoryEntry implements SqlEntity, UnsafeSer
|
||||
|
||||
// Store ContactBase instead of ContactResource so we don't pick up its @Id
|
||||
// Nullable for the sake of pre-Registry-3.0 history objects
|
||||
@Nullable ContactBase contactBase;
|
||||
@DoNotCompare @Nullable ContactBase contactBase;
|
||||
|
||||
@Id
|
||||
@Access(AccessType.PROPERTY)
|
||||
|
||||
@@ -69,7 +69,10 @@ import org.joda.time.DateTime;
|
||||
@Index(columnList = "techContact"),
|
||||
@Index(columnList = "tld"),
|
||||
@Index(columnList = "registrantContact"),
|
||||
@Index(columnList = "dnsRefreshRequestTime")
|
||||
@Index(columnList = "dnsRefreshRequestTime"),
|
||||
@Index(columnList = "billing_recurrence_id"),
|
||||
@Index(columnList = "transfer_billing_event_id"),
|
||||
@Index(columnList = "transfer_billing_recurrence_id")
|
||||
})
|
||||
@WithStringVKey
|
||||
@ExternalMessagingName("domain")
|
||||
@@ -89,7 +92,10 @@ public class DomainBase extends DomainContent
|
||||
@ElementCollection
|
||||
@JoinTable(
|
||||
name = "DomainHost",
|
||||
indexes = {@Index(columnList = "domain_repo_id,host_repo_id", unique = true)})
|
||||
indexes = {
|
||||
@Index(columnList = "domain_repo_id,host_repo_id", unique = true),
|
||||
@Index(columnList = "host_repo_id")
|
||||
})
|
||||
@Access(AccessType.PROPERTY)
|
||||
@Column(name = "host_repo_id")
|
||||
public Set<VKey<HostResource>> getNsHosts() {
|
||||
@@ -169,7 +175,7 @@ public class DomainBase extends DomainContent
|
||||
|
||||
@Override
|
||||
public void beforeSqlSaveOnReplay() {
|
||||
fullyQualifiedDomainName = DomainNameUtils.canonicalizeDomainName(fullyQualifiedDomainName);
|
||||
fullyQualifiedDomainName = DomainNameUtils.canonicalizeHostname(fullyQualifiedDomainName);
|
||||
dsData =
|
||||
dsData.stream()
|
||||
.filter(datum -> datum.getDigest() != null && datum.getDigest().length > 0)
|
||||
|
||||
@@ -34,7 +34,7 @@ import static google.registry.util.DateTimeUtils.END_OF_TIME;
|
||||
import static google.registry.util.DateTimeUtils.earliestOf;
|
||||
import static google.registry.util.DateTimeUtils.isBeforeOrAt;
|
||||
import static google.registry.util.DateTimeUtils.leapSafeAddYears;
|
||||
import static google.registry.util.DomainNameUtils.canonicalizeDomainName;
|
||||
import static google.registry.util.DomainNameUtils.canonicalizeHostname;
|
||||
import static google.registry.util.DomainNameUtils.getTldFromDomainName;
|
||||
import static google.registry.util.PreconditionsUtils.checkArgumentNotNull;
|
||||
|
||||
@@ -779,6 +779,10 @@ public class DomainContent extends EppResource
|
||||
*/
|
||||
void setContactFields(Set<DesignatedContact> contacts, boolean includeRegistrant) {
|
||||
// Set the individual contact fields.
|
||||
billingContact = techContact = adminContact = null;
|
||||
if (includeRegistrant) {
|
||||
registrantContact = null;
|
||||
}
|
||||
for (DesignatedContact contact : contacts) {
|
||||
switch (contact.getType()) {
|
||||
case BILLING:
|
||||
@@ -886,7 +890,7 @@ public class DomainContent extends EppResource
|
||||
|
||||
public B setDomainName(String domainName) {
|
||||
checkArgument(
|
||||
domainName.equals(canonicalizeDomainName(domainName)),
|
||||
domainName.equals(canonicalizeHostname(domainName)),
|
||||
"Domain name %s not in puny-coded, lower-case form",
|
||||
domainName);
|
||||
getInstance().fullyQualifiedDomainName = domainName;
|
||||
@@ -895,6 +899,7 @@ public class DomainContent extends EppResource
|
||||
|
||||
public B setDsData(ImmutableSet<DelegationSignerData> dsData) {
|
||||
getInstance().dsData = dsData;
|
||||
getInstance().resetUpdateTimestamp();
|
||||
return thisCastToDerived();
|
||||
}
|
||||
|
||||
@@ -918,11 +923,13 @@ public class DomainContent extends EppResource
|
||||
|
||||
public B setNameservers(VKey<HostResource> nameserver) {
|
||||
getInstance().nsHosts = ImmutableSet.of(nameserver);
|
||||
getInstance().resetUpdateTimestamp();
|
||||
return thisCastToDerived();
|
||||
}
|
||||
|
||||
public B setNameservers(ImmutableSet<VKey<HostResource>> nameservers) {
|
||||
getInstance().nsHosts = forceEmptyToNull(nameservers);
|
||||
getInstance().resetUpdateTimestamp();
|
||||
return thisCastToDerived();
|
||||
}
|
||||
|
||||
@@ -1032,17 +1039,20 @@ public class DomainContent extends EppResource
|
||||
|
||||
public B setGracePeriods(ImmutableSet<GracePeriod> gracePeriods) {
|
||||
getInstance().gracePeriods = gracePeriods;
|
||||
getInstance().resetUpdateTimestamp();
|
||||
return thisCastToDerived();
|
||||
}
|
||||
|
||||
public B addGracePeriod(GracePeriod gracePeriod) {
|
||||
getInstance().gracePeriods = union(getInstance().getGracePeriods(), gracePeriod);
|
||||
getInstance().resetUpdateTimestamp();
|
||||
return thisCastToDerived();
|
||||
}
|
||||
|
||||
public B removeGracePeriod(GracePeriod gracePeriod) {
|
||||
getInstance().gracePeriods =
|
||||
CollectionUtils.difference(getInstance().getGracePeriods(), gracePeriod);
|
||||
getInstance().resetUpdateTimestamp();
|
||||
return thisCastToDerived();
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user