Skip to content

Commit 8a74a1c

Browse files
authored
Upgrade GCP BOM to 26.32.0 (#30335)
* Upgrade GCP BOM to 26.32.0 * trigger postcommits * rerun script fix rebase * Remove no longer exist method
1 parent 48adde9 commit 8a74a1c

File tree

9 files changed

+82
-42
lines changed

9 files changed

+82
-42
lines changed

.github/trigger_files/beam_PostCommit_Java_DataflowV2.json

Whitespace-only changes.

.github/trigger_files/beam_PostCommit_Python.json

Whitespace-only changes.

.github/trigger_files/beam_PostCommit_Python_Examples_Direct.json

Whitespace-only changes.

.github/trigger_files/beam_PostCommit_Python_Xlang_Gcp_Direct.json

-1
This file was deleted.

buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy

+7-11
Original file line numberDiff line numberDiff line change
@@ -605,12 +605,12 @@ class BeamModulePlugin implements Plugin<Project> {
605605
def dbcp2_version = "2.9.0"
606606
def errorprone_version = "2.10.0"
607607
// [bomupgrader] determined by: com.google.api:gax, consistent with: google_cloud_platform_libraries_bom
608-
def gax_version = "2.41.0"
608+
def gax_version = "2.42.0"
609609
def google_ads_version = "26.0.0"
610610
def google_clients_version = "2.0.0"
611611
def google_cloud_bigdataoss_version = "2.2.16"
612612
// [bomupgrader] determined by: com.google.cloud:google-cloud-spanner, consistent with: google_cloud_platform_libraries_bom
613-
def google_cloud_spanner_version = "6.57.0"
613+
def google_cloud_spanner_version = "6.58.0"
614614
def google_code_gson_version = "2.10.1"
615615
def google_oauth_clients_version = "1.34.1"
616616
// [bomupgrader] determined by: io.grpc:grpc-netty, consistent with: google_cloud_platform_libraries_bom
@@ -734,15 +734,12 @@ class BeamModulePlugin implements Plugin<Project> {
734734
google_api_client_jackson2 : "com.google.api-client:google-api-client-jackson2:$google_clients_version",
735735
google_api_client_java6 : "com.google.api-client:google-api-client-java6:$google_clients_version",
736736
google_api_common : "com.google.api:api-common", // google_cloud_platform_libraries_bom sets version
737-
// Keep version consistent with the version in google_cloud_bigquery, managed by google_cloud_platform_libraries_bom
738-
google_api_services_bigquery : "com.google.apis:google-api-services-bigquery:v2-rev20230812-$google_clients_version",
739-
// Keep version consistent with the version in google_cloud_resourcemanager, managed by google_cloud_platform_libraries_bom
740-
google_api_services_cloudresourcemanager : "com.google.apis:google-api-services-cloudresourcemanager:v1-rev20230806-$google_clients_version",
737+
google_api_services_bigquery : "com.google.apis:google-api-services-bigquery:v2-rev20240124-2.0.0", // [bomupgrader] sets version
738+
google_api_services_cloudresourcemanager : "com.google.apis:google-api-services-cloudresourcemanager:v1-rev20240128-2.0.0", // [bomupgrader] sets version
741739
google_api_services_dataflow : "com.google.apis:google-api-services-dataflow:v1b3-rev20240113-$google_clients_version",
742740
google_api_services_healthcare : "com.google.apis:google-api-services-healthcare:v1-rev20240130-$google_clients_version",
743741
google_api_services_pubsub : "com.google.apis:google-api-services-pubsub:v1-rev20220904-$google_clients_version",
744-
// Keep version consistent with the version in google_cloud_nio, managed by google_cloud_platform_libraries_bom
745-
google_api_services_storage : "com.google.apis:google-api-services-storage:v1-rev20231202-$google_clients_version",
742+
google_api_services_storage : "com.google.apis:google-api-services-storage:v1-rev20240205-2.0.0", // [bomupgrader] sets version
746743
google_auth_library_credentials : "com.google.auth:google-auth-library-credentials", // google_cloud_platform_libraries_bom sets version
747744
google_auth_library_oauth2_http : "com.google.auth:google-auth-library-oauth2-http", // google_cloud_platform_libraries_bom sets version
748745
google_cloud_bigquery : "com.google.cloud:google-cloud-bigquery", // google_cloud_platform_libraries_bom sets version
@@ -754,14 +751,13 @@ class BeamModulePlugin implements Plugin<Project> {
754751
google_cloud_core_grpc : "com.google.cloud:google-cloud-core-grpc", // google_cloud_platform_libraries_bom sets version
755752
google_cloud_datacatalog_v1beta1 : "com.google.cloud:google-cloud-datacatalog", // google_cloud_platform_libraries_bom sets version
756753
google_cloud_dataflow_java_proto_library_all: "com.google.cloud.dataflow:google-cloud-dataflow-java-proto-library-all:0.5.160304",
757-
// Keep version consistent with the version in google_cloud_datastore, managed by google_cloud_platform_libraries_bom
758-
google_cloud_datastore_v1_proto_client : "com.google.cloud.datastore:datastore-v1-proto-client:2.17.1",
754+
google_cloud_datastore_v1_proto_client : "com.google.cloud.datastore:datastore-v1-proto-client:2.18.3", // [bomupgrader] sets version
759755
google_cloud_firestore : "com.google.cloud:google-cloud-firestore", // google_cloud_platform_libraries_bom sets version
760756
google_cloud_pubsub : "com.google.cloud:google-cloud-pubsub", // google_cloud_platform_libraries_bom sets version
761757
google_cloud_pubsublite : "com.google.cloud:google-cloud-pubsublite", // google_cloud_platform_libraries_bom sets version
762758
// [bomupgrader] the BOM version is set by scripts/tools/bomupgrader.py. If update manually, also update
763759
// libraries-bom version on sdks/java/container/license_scripts/dep_urls_java.yaml
764-
google_cloud_platform_libraries_bom : "com.google.cloud:libraries-bom:26.31.0",
760+
google_cloud_platform_libraries_bom : "com.google.cloud:libraries-bom:26.32.0",
765761
google_cloud_spanner : "com.google.cloud:google-cloud-spanner", // google_cloud_platform_libraries_bom sets version
766762
google_cloud_spanner_test : "com.google.cloud:google-cloud-spanner:$google_cloud_spanner_version:tests",
767763
google_code_gson : "com.google.code.gson:gson:$google_code_gson_version",

scripts/tools/bomupgrader.py

+72-21
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,10 @@ class BeamModulePluginProcessor:
5757
# dependencies managed by GCP-BOM that used the dependencies in KNOWN_DEPS
5858
# So we need to add it to the example project to get the version to sync
5959
OTHER_CONSTRANTS = [
60-
"com.google.cloud:google-cloud-bigquery" # uses arrow
60+
"com.google.cloud:google-cloud-bigquery", # for arrow
61+
'com.google.cloud:google-cloud-nio', # for google-api-services-storage
62+
'com.google.cloud:google-cloud-resourcemanager', # for google-api-services-cloudresourcemanager
63+
'com.google.cloud:google-cloud-datastore', # for google-cloud-dataflow-java-proto-library-all
6164
]
6265

6366
# TODO: the logic can be generalized to support multiple BOM
@@ -66,6 +69,9 @@ class BeamModulePluginProcessor:
6669
)
6770
# e.g. def grpc_version = "1.61.0"
6871
VERSION_STRING = re.compile(r'^\s*def (\w+)_version\s*=\s*[\'"](\S+)[\'"]')
72+
SINGLE_VERSION_STRING = re.compile(
73+
r'.+:\s*[\'"]([\w\-.]+:[\w\-.]+):(.+)[\'"],\s*//\s*\[bomupgrader\] sets version'
74+
)
6975
BOM_VERSION_STRING = re.compile(
7076
r'\s*google_cloud_platform_libraries_bom\s*:\s*[\'"]com\.google\.cloud:libraries-bom:([0-9\.]+)[\'"],?'
7177
)
@@ -92,7 +98,24 @@ def __init__(self, bom_version, project_root='.', runnable=None):
9298
# e.g. {"io.grpc:grpc-netty", "1.61.0"}
9399
self.dep_versions = {}
94100
self.dep_versions_current = {}
95-
self.known_deps = {}
101+
# dependencies managed by bomupgrader. They are declared inline in BeamModulePlugin,
102+
# different from KNOWN_DEPS which first define a version
103+
self.set_deps = {}
104+
self.set_deps_current = {}
105+
106+
@staticmethod
107+
def resolve_actual_dep(line, id):
108+
"""Resolve actual dependency from dependencyTree line"""
109+
idx = line.find(id + ':')
110+
if idx == -1: return "" # not found
111+
dep_and_other = line[idx + len(id) + 1:].split()
112+
try:
113+
jdx = dep_and_other.index('->')
114+
ver = dep_and_other[jdx + 1]
115+
except ValueError:
116+
# there might be multiple ':', e.g. come.group.id:some-package:test:1.2.3
117+
ver = dep_and_other[0].split(':')[-1]
118+
return ver
96119

97120
def check_dependencies(self):
98121
"""Check dependencies in KNOWN_DEPS are found in BeamModulePlugin, and vice versa."""
@@ -107,6 +130,11 @@ def check_dependencies(self):
107130
"Version definition not found after anchor comment. Try standardize it."
108131
)
109132
found_deps[n.group(1)] = n.group(2)
133+
continue
134+
m = self.SINGLE_VERSION_STRING.match(line)
135+
if m:
136+
self.set_deps_current[m.group(1)] = m.group(2)
137+
110138
assert sorted(self.KNOWN_DEPS.keys()) == sorted(found_deps.keys()), f"expect {self.KNOWN_DEPS.keys()} == {found_deps.keys()}"
111139
self.dep_versions_current = {
112140
self.KNOWN_DEPS[k]: v
@@ -122,7 +150,8 @@ def prepare_gradle(self, bom_version):
122150
raise
123151

124152
deps = []
125-
for dep in list(self.KNOWN_DEPS.values()) + self.OTHER_CONSTRANTS:
153+
for dep in list(self.KNOWN_DEPS.values()) + self.OTHER_CONSTRANTS + list(
154+
self.set_deps_current.keys()):
126155
deps.append(f"implementation '{dep}'")
127156
gradle_file = self.GRADLE_TEMPLATE % (bom_version, "\n".join(deps))
128157
with open(os.path.join(self.BUILD_DIR, 'build.gradle'), 'w') as fout:
@@ -145,26 +174,34 @@ def resolve(self):
145174
result = subp.stdout.decode('utf-8')
146175
# example line: | +--- com.google.guava:guava:32.1.3-android -> 32.1.3-jre (*)
147176
logging.debug(result)
177+
get_dep_line = re.compile('\s+([\w\-.]+:[\w\-.]+):(.+)')
178+
148179
for line in result.splitlines():
180+
# search self.set_deps version
181+
m = get_dep_line.search(line)
182+
if m and m.group(1) in self.set_deps_current:
183+
ver = self.resolve_actual_dep(line, m.group(1))
184+
self.set_deps[m.group(1)] = ver
185+
continue
186+
187+
# search KNOWN_DEPS version
149188
for id in self.KNOWN_DEPS.values():
150-
idx = line.find(id + ':')
151-
if idx == -1:
152-
continue
153-
dep_and_other = line[idx + len(id) + 1:].split()
154-
try:
155-
jdx = dep_and_other.index('->')
156-
ver = dep_and_other[jdx + 1]
157-
except ValueError:
158-
# there might be multiple ':', e.g. come.group.id:some-package:test:1.2.3
159-
ver = dep_and_other[0].split(':')[-1]
160-
self.dep_versions[id] = ver
161-
break
189+
if id in self.dep_versions: continue
190+
ver = self.resolve_actual_dep(line, id)
191+
if ver:
192+
self.dep_versions[id] = ver
193+
break
162194

163195
if len(self.dep_versions) < len(self.KNOWN_DEPS):
164196
logging.warning(
165197
"Warning: not all dependencies are resolved: %s", self.dep_versions)
166198
logging.info(result)
167199

200+
if len(self.set_deps) < len(self.set_deps_current):
201+
logging.warning(
202+
"Warning: not all dependencies are resolved: %s", self.set_deps)
203+
logging.info(result)
204+
168205
def write_back(self):
169206
logging.info("-----Update BeamModulePlugin-----")
170207
# make a shallow copy
@@ -188,13 +225,26 @@ def write_back(self):
188225
logging.info('Changed %s: %s -> %s', id, old_v, new_v)
189226
else:
190227
logging.info('Unchanged: %s:%s', id, new_v)
191-
else:
192-
# replace GCP BOM version
193-
n = self.BOM_VERSION_STRING.match(line)
194-
if n:
228+
continue
229+
230+
# single_ver replace
231+
m = self.SINGLE_VERSION_STRING.match(line)
232+
if m:
233+
id = m.group(1)
234+
old_v = m.group(2)
235+
new_v = self.set_deps[id]
236+
if new_v != old_v:
195237
self.target_lines[idx] = self.original_lines[idx].replace(
196-
n.group(1), self.bom_version)
197-
found_bom = True
238+
old_v, new_v)
239+
logging.info('Changed %s: %s -> %s', id, old_v, new_v)
240+
else:
241+
logging.info('Unchanged: %s:%s', id, new_v)
242+
# replace GCP BOM version
243+
n = self.BOM_VERSION_STRING.match(line)
244+
if n:
245+
self.target_lines[idx] = self.original_lines[idx].replace(
246+
n.group(1), self.bom_version)
247+
found_bom = True
198248

199249
if not found_bom:
200250
logging.warning(
@@ -224,6 +274,7 @@ def run(self):
224274
self.write_back()
225275
self.write_license_script()
226276

277+
227278
if __name__ == '__main__':
228279
logging.getLogger().setLevel(logging.INFO)
229280
if len(sys.argv) < 2:

sdks/java/container/license_scripts/dep_urls_java.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ jaxen:
4646
'1.1.6':
4747
type: "3-Clause BSD"
4848
libraries-bom:
49-
'26.31.0':
49+
'26.32.0':
5050
license: "https://raw.githubusercontent.com/GoogleCloudPlatform/cloud-opensource-java/master/LICENSE"
5151
type: "Apache License 2.0"
5252
paranamer:

sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/datastore/DatastoreV1.java

+1-4
Original file line numberDiff line numberDiff line change
@@ -2041,10 +2041,7 @@ public Datastore getDatastore(
20412041
}
20422042

20432043
DatastoreOptions.Builder builder =
2044-
new DatastoreOptions.Builder()
2045-
.projectId(projectId)
2046-
.databaseId(databaseId)
2047-
.initializer(initializer);
2044+
new DatastoreOptions.Builder().projectId(projectId).initializer(initializer);
20482045

20492046
if (localhost != null) {
20502047
builder.localHost(localhost);

sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/datastore/V1TestUtil.java

+1-4
Original file line numberDiff line numberDiff line change
@@ -151,10 +151,7 @@ static Datastore getDatastore(
151151
}
152152

153153
DatastoreOptions.Builder builder =
154-
new DatastoreOptions.Builder()
155-
.projectId(projectId)
156-
.databaseId(databaseId)
157-
.initializer(initializer);
154+
new DatastoreOptions.Builder().projectId(projectId).initializer(initializer);
158155

159156
return DatastoreFactory.get().create(builder.build());
160157
}

0 commit comments

Comments
 (0)