diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml index f60d7749..a79f0627 100644 --- a/.github/.OwlBot.lock.yaml +++ b/.github/.OwlBot.lock.yaml @@ -13,5 +13,5 @@ # limitations under the License. docker: image: gcr.io/cloud-devrel-public-resources/owlbot-java:latest - digest: sha256:fc52b202aa298a50a12c64efd04fea3884d867947effe2fa85382a246c09e813 -# created: 2022-04-06T16:30:03.627422514Z + digest: sha256:2567a120ce90fadb6201999b87d649d9f67459de28815ad239bce9ebfaa18a74 +# created: 2022-05-19T15:12:45.278246753Z diff --git a/.kokoro/build.sh b/.kokoro/build.sh index 894b081d..36c2a413 100755 --- a/.kokoro/build.sh +++ b/.kokoro/build.sh @@ -74,6 +74,11 @@ graalvm) mvn -B ${INTEGRATION_TEST_ARGS} -ntp -Pnative -Penable-integration-tests test RETURN_CODE=$? ;; +graalvm17) + # Run Unit and Integration Tests with Native Image + mvn -B ${INTEGRATION_TEST_ARGS} -ntp -Pnative -Penable-integration-tests test + RETURN_CODE=$? + ;; samples) SAMPLES_DIR=samples # only run ITs in snapshot/ on presubmit PRs. run ITs in all 3 samples/ subdirectories otherwise. diff --git a/.kokoro/presubmit/graalvm-native-17.cfg b/.kokoro/presubmit/graalvm-native-17.cfg new file mode 100644 index 00000000..a3f7fb9d --- /dev/null +++ b/.kokoro/presubmit/graalvm-native-17.cfg @@ -0,0 +1,33 @@ +# Format: //devtools/kokoro/config/proto/build.proto + +# Configure the docker image for kokoro-trampoline. +env_vars: { + key: "TRAMPOLINE_IMAGE" + value: "gcr.io/cloud-devrel-kokoro-resources/graalvm17" +} + +env_vars: { + key: "JOB_TYPE" + value: "graalvm17" +} + +# TODO: remove this after we've migrated all tests and scripts +env_vars: { + key: "GCLOUD_PROJECT" + value: "gcloud-devel" +} + +env_vars: { + key: "GOOGLE_CLOUD_PROJECT" + value: "gcloud-devel" +} + +env_vars: { + key: "GOOGLE_APPLICATION_CREDENTIALS" + value: "secret_manager/java-it-service-account" +} + +env_vars: { + key: "SECRET_MANAGER_KEYS" + value: "java-it-service-account" +} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b1112f6..e02bbb5c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [2.4.0](https://github.com/googleapis/java-functions/compare/v2.3.8...v2.4.0) (2022-05-24) + + +### Features + +* add build scripts for native image testing in Java 17 ([#1440](https://github.com/googleapis/java-functions/issues/1440)) ([#423](https://github.com/googleapis/java-functions/issues/423)) ([1afc197](https://github.com/googleapis/java-functions/commit/1afc197dbc10de2bb3ed9e140994031967edf7f9)) + + +### Dependencies + +* update dependency com.google.cloud:google-cloud-shared-dependencies to v2.12.0 ([#422](https://github.com/googleapis/java-functions/issues/422)) ([8b543ee](https://github.com/googleapis/java-functions/commit/8b543eed1adaff73c668044ef01dfb624068c57b)) + ### [2.3.8](https://github.com/googleapis/java-functions/compare/v2.3.7...v2.3.8) (2022-04-15) diff --git a/README.md b/README.md index bb56b523..9bf31435 100644 --- a/README.md +++ b/README.md @@ -19,20 +19,20 @@ If you are using Maven, add this to your pom.xml file: com.google.cloud google-cloud-functions - 2.3.7 + 2.3.8 ``` If you are using Gradle without BOM, add this to your dependencies ```Groovy -implementation 'com.google.cloud:google-cloud-functions:2.3.7' +implementation 'com.google.cloud:google-cloud-functions:2.3.8' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-functions" % "2.3.7" +libraryDependencies += "com.google.cloud" % "google-cloud-functions" % "2.3.8" ``` ## Authentication diff --git a/google-cloud-functions-bom/pom.xml b/google-cloud-functions-bom/pom.xml index d7846d54..661850a8 100644 --- a/google-cloud-functions-bom/pom.xml +++ b/google-cloud-functions-bom/pom.xml @@ -3,12 +3,12 @@ 4.0.0 com.google.cloud google-cloud-functions-bom - 2.3.8 + 2.4.0 pom com.google.cloud google-cloud-shared-config - 1.3.2 + 1.4.0 Google Cloud Functions BOM @@ -56,17 +56,17 @@ com.google.cloud google-cloud-functions - 2.3.8 + 2.4.0 com.google.api.grpc grpc-google-cloud-functions-v1 - 2.3.8 + 2.4.0 com.google.api.grpc proto-google-cloud-functions-v1 - 2.3.8 + 2.4.0 diff --git a/google-cloud-functions/pom.xml b/google-cloud-functions/pom.xml index 752403e4..dbe0ff4b 100644 --- a/google-cloud-functions/pom.xml +++ b/google-cloud-functions/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-functions - 2.3.8 + 2.4.0 jar Google Cloud Functions https://github.com/googleapis/java-functions @@ -11,7 +11,7 @@ com.google.cloud google-cloud-functions-parent - 2.3.8 + 2.4.0 google-cloud-functions diff --git a/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/CloudFunctionsServiceClient.java b/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/CloudFunctionsServiceClient.java index 63ab3254..e9d34b99 100644 --- a/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/CloudFunctionsServiceClient.java +++ b/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/CloudFunctionsServiceClient.java @@ -1,5 +1,5 @@ /* - * Copyright 2021 Google LLC + * Copyright 2022 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -51,6 +51,8 @@ * calls that map to API methods. Sample code to get started: * *
{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
  * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
  *     CloudFunctionsServiceClient.create()) {
  *   CloudFunctionName name = CloudFunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]");
@@ -88,6 +90,8 @@
  * 

To customize credentials: * *

{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
  * CloudFunctionsServiceSettings cloudFunctionsServiceSettings =
  *     CloudFunctionsServiceSettings.newBuilder()
  *         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
@@ -99,6 +103,8 @@
  * 

To customize the endpoint: * *

{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
  * CloudFunctionsServiceSettings cloudFunctionsServiceSettings =
  *     CloudFunctionsServiceSettings.newBuilder().setEndpoint(myEndpoint).build();
  * CloudFunctionsServiceClient cloudFunctionsServiceClient =
@@ -178,6 +184,8 @@ public final OperationsClient getOperationsClient() {
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   ListFunctionsRequest request =
@@ -207,6 +215,8 @@ public final ListFunctionsPagedResponse listFunctions(ListFunctionsRequest reque
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   ListFunctionsRequest request =
@@ -236,6 +246,8 @@ public final ListFunctionsPagedResponse listFunctions(ListFunctionsRequest reque
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   ListFunctionsRequest request =
@@ -271,6 +283,8 @@ public final UnaryCallable listFunc
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   CloudFunctionName name = CloudFunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]");
@@ -294,6 +308,8 @@ public final CloudFunction getFunction(CloudFunctionName name) {
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   String name = CloudFunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]").toString();
@@ -316,6 +332,8 @@ public final CloudFunction getFunction(String name) {
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   GetFunctionRequest request =
@@ -340,6 +358,8 @@ public final CloudFunction getFunction(GetFunctionRequest request) {
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   GetFunctionRequest request =
@@ -365,6 +385,8 @@ public final UnaryCallable getFunctionCallabl
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   LocationName location = LocationName.of("[PROJECT]", "[LOCATION]");
@@ -397,6 +419,8 @@ public final OperationFuture createFunctionA
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   String location = LocationName.of("[PROJECT]", "[LOCATION]").toString();
@@ -426,6 +450,8 @@ public final OperationFuture createFunctionA
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   CreateFunctionRequest request =
@@ -453,6 +479,8 @@ public final OperationFuture createFunctionA
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   CreateFunctionRequest request =
@@ -480,6 +508,8 @@ public final OperationFuture createFunctionA
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   CreateFunctionRequest request =
@@ -505,6 +535,8 @@ public final UnaryCallable createFunctionCalla
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   CloudFunction function = CloudFunction.newBuilder().build();
@@ -529,6 +561,8 @@ public final OperationFuture updateFunctionA
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   UpdateFunctionRequest request =
@@ -555,6 +589,8 @@ public final OperationFuture updateFunctionA
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   UpdateFunctionRequest request =
@@ -581,6 +617,8 @@ public final OperationFuture updateFunctionA
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   UpdateFunctionRequest request =
@@ -607,6 +645,8 @@ public final UnaryCallable updateFunctionCalla
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   CloudFunctionName name = CloudFunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]");
@@ -632,6 +672,8 @@ public final OperationFuture deleteFunctionAsync(
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   String name = CloudFunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]").toString();
@@ -655,6 +697,8 @@ public final OperationFuture deleteFunctionAsync(Str
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   DeleteFunctionRequest request =
@@ -681,6 +725,8 @@ public final OperationFuture deleteFunctionAsync(
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   DeleteFunctionRequest request =
@@ -707,6 +753,8 @@ public final OperationFuture deleteFunctionAsync(
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   DeleteFunctionRequest request =
@@ -733,6 +781,8 @@ public final UnaryCallable deleteFunctionCalla
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   CloudFunctionName name = CloudFunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]");
@@ -763,6 +813,8 @@ public final CallFunctionResponse callFunction(CloudFunctionName name, String da
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   String name = CloudFunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]").toString();
@@ -790,6 +842,8 @@ public final CallFunctionResponse callFunction(String name, String data) {
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   CallFunctionRequest request =
@@ -817,6 +871,8 @@ public final CallFunctionResponse callFunction(CallFunctionRequest request) {
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   CallFunctionRequest request =
@@ -869,6 +925,8 @@ public final UnaryCallable callFuncti
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   GenerateUploadUrlRequest request =
@@ -918,6 +976,8 @@ public final GenerateUploadUrlResponse generateUploadUrl(GenerateUploadUrlReques
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   GenerateUploadUrlRequest request =
@@ -943,6 +1003,8 @@ public final GenerateUploadUrlResponse generateUploadUrl(GenerateUploadUrlReques
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   GenerateDownloadUrlRequest request =
@@ -971,6 +1033,8 @@ public final GenerateDownloadUrlResponse generateDownloadUrl(GenerateDownloadUrl
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   GenerateDownloadUrlRequest request =
@@ -997,12 +1061,15 @@ public final GenerateDownloadUrlResponse generateDownloadUrl(GenerateDownloadUrl
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   SetIamPolicyRequest request =
    *       SetIamPolicyRequest.newBuilder()
    *           .setResource(CloudFunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]").toString())
    *           .setPolicy(Policy.newBuilder().build())
+   *           .setUpdateMask(FieldMask.newBuilder().build())
    *           .build();
    *   Policy response = cloudFunctionsServiceClient.setIamPolicy(request);
    * }
@@ -1022,12 +1089,15 @@ public final Policy setIamPolicy(SetIamPolicyRequest request) {
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   SetIamPolicyRequest request =
    *       SetIamPolicyRequest.newBuilder()
    *           .setResource(CloudFunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]").toString())
    *           .setPolicy(Policy.newBuilder().build())
+   *           .setUpdateMask(FieldMask.newBuilder().build())
    *           .build();
    *   ApiFuture future =
    *       cloudFunctionsServiceClient.setIamPolicyCallable().futureCall(request);
@@ -1048,6 +1118,8 @@ public final UnaryCallable setIamPolicyCallable() {
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   GetIamPolicyRequest request =
@@ -1074,6 +1146,8 @@ public final Policy getIamPolicy(GetIamPolicyRequest request) {
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   GetIamPolicyRequest request =
@@ -1100,6 +1174,8 @@ public final UnaryCallable getIamPolicyCallable() {
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   TestIamPermissionsRequest request =
@@ -1126,6 +1202,8 @@ public final TestIamPermissionsResponse testIamPermissions(TestIamPermissionsReq
    * 

Sample code: * *

{@code
+   * // This snippet has been automatically generated for illustrative purposes only.
+   * // It may require modifications to work in your environment.
    * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
    *     CloudFunctionsServiceClient.create()) {
    *   TestIamPermissionsRequest request =
diff --git a/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/CloudFunctionsServiceSettings.java b/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/CloudFunctionsServiceSettings.java
index 9b61b1ac..02e20d63 100644
--- a/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/CloudFunctionsServiceSettings.java
+++ b/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/CloudFunctionsServiceSettings.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -61,6 +61,8 @@
  * 

For example, to set the total timeout of getFunction to 30 seconds: * *

{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
  * CloudFunctionsServiceSettings.Builder cloudFunctionsServiceSettingsBuilder =
  *     CloudFunctionsServiceSettings.newBuilder();
  * cloudFunctionsServiceSettingsBuilder
diff --git a/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/package-info.java b/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/package-info.java
index 1f8d0817..7a9060ac 100644
--- a/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/package-info.java
+++ b/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/package-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -24,6 +24,8 @@
  * 

Sample for CloudFunctionsServiceClient: * *

{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
  * try (CloudFunctionsServiceClient cloudFunctionsServiceClient =
  *     CloudFunctionsServiceClient.create()) {
  *   CloudFunctionName name = CloudFunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]");
diff --git a/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/stub/CloudFunctionsServiceStub.java b/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/stub/CloudFunctionsServiceStub.java
index e3bdc495..9e279bca 100644
--- a/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/stub/CloudFunctionsServiceStub.java
+++ b/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/stub/CloudFunctionsServiceStub.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/stub/CloudFunctionsServiceStubSettings.java b/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/stub/CloudFunctionsServiceStubSettings.java
index b2da34cb..537e8b50 100644
--- a/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/stub/CloudFunctionsServiceStubSettings.java
+++ b/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/stub/CloudFunctionsServiceStubSettings.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -93,6 +93,8 @@
  * 

For example, to set the total timeout of getFunction to 30 seconds: * *

{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
  * CloudFunctionsServiceStubSettings.Builder cloudFunctionsServiceSettingsBuilder =
  *     CloudFunctionsServiceStubSettings.newBuilder();
  * cloudFunctionsServiceSettingsBuilder
diff --git a/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/stub/GrpcCloudFunctionsServiceCallableFactory.java b/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/stub/GrpcCloudFunctionsServiceCallableFactory.java
index a85d587d..613cc1f9 100644
--- a/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/stub/GrpcCloudFunctionsServiceCallableFactory.java
+++ b/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/stub/GrpcCloudFunctionsServiceCallableFactory.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/stub/GrpcCloudFunctionsServiceStub.java b/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/stub/GrpcCloudFunctionsServiceStub.java
index eced98b4..10cc8375 100644
--- a/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/stub/GrpcCloudFunctionsServiceStub.java
+++ b/google-cloud-functions/src/main/java/com/google/cloud/functions/v1/stub/GrpcCloudFunctionsServiceStub.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/google-cloud-functions/src/test/java/com/google/cloud/functions/v1/CloudFunctionsServiceClientTest.java b/google-cloud-functions/src/test/java/com/google/cloud/functions/v1/CloudFunctionsServiceClientTest.java
index 7845eddb..ad2915e9 100644
--- a/google-cloud-functions/src/test/java/com/google/cloud/functions/v1/CloudFunctionsServiceClientTest.java
+++ b/google-cloud-functions/src/test/java/com/google/cloud/functions/v1/CloudFunctionsServiceClientTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -27,6 +27,7 @@
 import com.google.api.gax.rpc.InvalidArgumentException;
 import com.google.api.gax.rpc.StatusCode;
 import com.google.common.collect.Lists;
+import com.google.iam.v1.AuditConfig;
 import com.google.iam.v1.Binding;
 import com.google.iam.v1.GetIamPolicyRequest;
 import com.google.iam.v1.GetPolicyOptions;
@@ -40,6 +41,7 @@
 import com.google.protobuf.ByteString;
 import com.google.protobuf.Duration;
 import com.google.protobuf.Empty;
+import com.google.protobuf.FieldMask;
 import com.google.protobuf.Timestamp;
 import io.grpc.StatusRuntimeException;
 import java.io.IOException;
@@ -751,6 +753,7 @@ public void setIamPolicyTest() throws Exception {
         Policy.newBuilder()
             .setVersion(351608024)
             .addAllBindings(new ArrayList())
+            .addAllAuditConfigs(new ArrayList())
             .setEtag(ByteString.EMPTY)
             .build();
     mockCloudFunctionsService.addResponse(expectedResponse);
@@ -759,6 +762,7 @@ public void setIamPolicyTest() throws Exception {
         SetIamPolicyRequest.newBuilder()
             .setResource(CloudFunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]").toString())
             .setPolicy(Policy.newBuilder().build())
+            .setUpdateMask(FieldMask.newBuilder().build())
             .build();
 
     Policy actualResponse = client.setIamPolicy(request);
@@ -770,6 +774,7 @@ public void setIamPolicyTest() throws Exception {
 
     Assert.assertEquals(request.getResource(), actualRequest.getResource());
     Assert.assertEquals(request.getPolicy(), actualRequest.getPolicy());
+    Assert.assertEquals(request.getUpdateMask(), actualRequest.getUpdateMask());
     Assert.assertTrue(
         channelProvider.isHeaderSent(
             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
@@ -786,6 +791,7 @@ public void setIamPolicyExceptionTest() throws Exception {
           SetIamPolicyRequest.newBuilder()
               .setResource(CloudFunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]").toString())
               .setPolicy(Policy.newBuilder().build())
+              .setUpdateMask(FieldMask.newBuilder().build())
               .build();
       client.setIamPolicy(request);
       Assert.fail("No exception raised");
@@ -800,6 +806,7 @@ public void getIamPolicyTest() throws Exception {
         Policy.newBuilder()
             .setVersion(351608024)
             .addAllBindings(new ArrayList())
+            .addAllAuditConfigs(new ArrayList())
             .setEtag(ByteString.EMPTY)
             .build();
     mockCloudFunctionsService.addResponse(expectedResponse);
diff --git a/google-cloud-functions/src/test/java/com/google/cloud/functions/v1/MockCloudFunctionsService.java b/google-cloud-functions/src/test/java/com/google/cloud/functions/v1/MockCloudFunctionsService.java
index a54d2d54..247d502e 100644
--- a/google-cloud-functions/src/test/java/com/google/cloud/functions/v1/MockCloudFunctionsService.java
+++ b/google-cloud-functions/src/test/java/com/google/cloud/functions/v1/MockCloudFunctionsService.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/google-cloud-functions/src/test/java/com/google/cloud/functions/v1/MockCloudFunctionsServiceImpl.java b/google-cloud-functions/src/test/java/com/google/cloud/functions/v1/MockCloudFunctionsServiceImpl.java
index 8dbaa98a..40d9c9cd 100644
--- a/google-cloud-functions/src/test/java/com/google/cloud/functions/v1/MockCloudFunctionsServiceImpl.java
+++ b/google-cloud-functions/src/test/java/com/google/cloud/functions/v1/MockCloudFunctionsServiceImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/grpc-google-cloud-functions-v1/pom.xml b/grpc-google-cloud-functions-v1/pom.xml
index c3764479..1cd1d300 100644
--- a/grpc-google-cloud-functions-v1/pom.xml
+++ b/grpc-google-cloud-functions-v1/pom.xml
@@ -4,13 +4,13 @@
   4.0.0
   com.google.api.grpc
   grpc-google-cloud-functions-v1
-  2.3.8
+  2.4.0
   grpc-google-cloud-functions-v1
   GRPC library for grpc-google-cloud-functions-v1
   
     com.google.cloud
     google-cloud-functions-parent
-    2.3.8
+    2.4.0
   
   
     
diff --git a/pom.xml b/pom.xml
index b588e7b5..26a1eedc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
   com.google.cloud
   google-cloud-functions-parent
   pom
-  2.3.8
+  2.4.0
   Google Cloud Functions Parent
   https://github.com/googleapis/java-functions
   
@@ -14,7 +14,7 @@
   
     com.google.cloud
     google-cloud-shared-config
-    1.3.2
+    1.4.0
   
 
   
@@ -61,23 +61,23 @@
       
         com.google.cloud
         google-cloud-functions
-        2.3.8
+        2.4.0
       
       
         com.google.api.grpc
         proto-google-cloud-functions-v1
-        2.3.8
+        2.4.0
       
       
         com.google.api.grpc
         grpc-google-cloud-functions-v1
-        2.3.8
+        2.4.0
       
 
       
         com.google.cloud
         google-cloud-shared-dependencies
-        2.10.0
+        2.12.0
         pom
         import
       
@@ -120,7 +120,7 @@
       
         org.apache.maven.plugins
         maven-project-info-reports-plugin
-        3.2.2
+        3.3.0
         
           
             
@@ -147,7 +147,7 @@
       
         org.apache.maven.plugins
         maven-javadoc-plugin
-        3.3.2
+        3.4.0
         
           
             html
diff --git a/proto-google-cloud-functions-v1/pom.xml b/proto-google-cloud-functions-v1/pom.xml
index 4379847c..056419b7 100644
--- a/proto-google-cloud-functions-v1/pom.xml
+++ b/proto-google-cloud-functions-v1/pom.xml
@@ -4,13 +4,13 @@
   4.0.0
   com.google.api.grpc
   proto-google-cloud-functions-v1
-  2.3.8
+  2.4.0
   proto-google-cloud-functions-v1
   PROTO library for proto-google-cloud-functions-v1
   
     com.google.cloud
     google-cloud-functions-parent
-    2.3.8
+    2.4.0
   
   
     
diff --git a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/CallFunctionRequest.java b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/CallFunctionRequest.java
index 8efc22d6..24344734 100644
--- a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/CallFunctionRequest.java
+++ b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/CallFunctionRequest.java
@@ -96,6 +96,8 @@ private CallFunctionRequest(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/CallFunctionResponse.java b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/CallFunctionResponse.java
index b6416c46..34c0537b 100644
--- a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/CallFunctionResponse.java
+++ b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/CallFunctionResponse.java
@@ -104,6 +104,8 @@ private CallFunctionResponse(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/CloudFunction.java b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/CloudFunction.java
index 00e4a0b9..f6b609b8 100644
--- a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/CloudFunction.java
+++ b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/CloudFunction.java
@@ -401,6 +401,8 @@ private CloudFunction(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -1684,7 +1686,7 @@ public int getLabelsCount() {
   @java.lang.Override
   public boolean containsLabels(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     return internalGetLabels().getMap().containsKey(key);
   }
@@ -1719,7 +1721,7 @@ public java.util.Map getLabelsMap() {
   @java.lang.Override
   public java.lang.String getLabelsOrDefault(java.lang.String key, java.lang.String defaultValue) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map map = internalGetLabels().getMap();
     return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -1736,7 +1738,7 @@ public java.lang.String getLabelsOrDefault(java.lang.String key, java.lang.Strin
   @java.lang.Override
   public java.lang.String getLabelsOrThrow(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map map = internalGetLabels().getMap();
     if (!map.containsKey(key)) {
@@ -1784,7 +1786,7 @@ public int getEnvironmentVariablesCount() {
   @java.lang.Override
   public boolean containsEnvironmentVariables(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     return internalGetEnvironmentVariables().getMap().containsKey(key);
   }
@@ -1820,7 +1822,7 @@ public java.util.Map getEnvironmentVariables
   public java.lang.String getEnvironmentVariablesOrDefault(
       java.lang.String key, java.lang.String defaultValue) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map map =
         internalGetEnvironmentVariables().getMap();
@@ -1838,7 +1840,7 @@ public java.lang.String getEnvironmentVariablesOrDefault(
   @java.lang.Override
   public java.lang.String getEnvironmentVariablesOrThrow(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map map =
         internalGetEnvironmentVariables().getMap();
@@ -1888,7 +1890,7 @@ public int getBuildEnvironmentVariablesCount() {
   @java.lang.Override
   public boolean containsBuildEnvironmentVariables(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     return internalGetBuildEnvironmentVariables().getMap().containsKey(key);
   }
@@ -1924,7 +1926,7 @@ public java.util.Map getBuildEnvironmentVari
   public java.lang.String getBuildEnvironmentVariablesOrDefault(
       java.lang.String key, java.lang.String defaultValue) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map map =
         internalGetBuildEnvironmentVariables().getMap();
@@ -1942,7 +1944,7 @@ public java.lang.String getBuildEnvironmentVariablesOrDefault(
   @java.lang.Override
   public java.lang.String getBuildEnvironmentVariablesOrThrow(java.lang.String key) {
     if (key == null) {
-      throw new java.lang.NullPointerException();
+      throw new NullPointerException("map key");
     }
     java.util.Map map =
         internalGetBuildEnvironmentVariables().getMap();
@@ -4315,8 +4317,9 @@ public Builder mergeSourceRepository(com.google.cloud.functions.v1.SourceReposit
       } else {
         if (sourceCodeCase_ == 4) {
           sourceRepositoryBuilder_.mergeFrom(value);
+        } else {
+          sourceRepositoryBuilder_.setMessage(value);
         }
-        sourceRepositoryBuilder_.setMessage(value);
       }
       sourceCodeCase_ = 4;
       return this;
@@ -4686,8 +4689,9 @@ public Builder mergeHttpsTrigger(com.google.cloud.functions.v1.HttpsTrigger valu
       } else {
         if (triggerCase_ == 5) {
           httpsTriggerBuilder_.mergeFrom(value);
+        } else {
+          httpsTriggerBuilder_.setMessage(value);
         }
-        httpsTriggerBuilder_.setMessage(value);
       }
       triggerCase_ = 5;
       return this;
@@ -4895,8 +4899,9 @@ public Builder mergeEventTrigger(com.google.cloud.functions.v1.EventTrigger valu
       } else {
         if (triggerCase_ == 6) {
           eventTriggerBuilder_.mergeFrom(value);
+        } else {
+          eventTriggerBuilder_.setMessage(value);
         }
-        eventTriggerBuilder_.setMessage(value);
       }
       triggerCase_ = 6;
       return this;
@@ -6008,7 +6013,7 @@ public int getLabelsCount() {
     @java.lang.Override
     public boolean containsLabels(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetLabels().getMap().containsKey(key);
     }
@@ -6044,7 +6049,7 @@ public java.util.Map getLabelsMap() {
     public java.lang.String getLabelsOrDefault(
         java.lang.String key, java.lang.String defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map map = internalGetLabels().getMap();
       return map.containsKey(key) ? map.get(key) : defaultValue;
@@ -6061,7 +6066,7 @@ public java.lang.String getLabelsOrDefault(
     @java.lang.Override
     public java.lang.String getLabelsOrThrow(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map map = internalGetLabels().getMap();
       if (!map.containsKey(key)) {
@@ -6085,7 +6090,7 @@ public Builder clearLabels() {
      */
     public Builder removeLabels(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       internalGetMutableLabels().getMutableMap().remove(key);
       return this;
@@ -6106,11 +6111,12 @@ public java.util.Map getMutableLabels() {
      */
     public Builder putLabels(java.lang.String key, java.lang.String value) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       if (value == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map value");
       }
+
       internalGetMutableLabels().getMutableMap().put(key, value);
       return this;
     }
@@ -6169,7 +6175,7 @@ public int getEnvironmentVariablesCount() {
     @java.lang.Override
     public boolean containsEnvironmentVariables(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetEnvironmentVariables().getMap().containsKey(key);
     }
@@ -6205,7 +6211,7 @@ public java.util.Map getEnvironmentVariables
     public java.lang.String getEnvironmentVariablesOrDefault(
         java.lang.String key, java.lang.String defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map map =
           internalGetEnvironmentVariables().getMap();
@@ -6223,7 +6229,7 @@ public java.lang.String getEnvironmentVariablesOrDefault(
     @java.lang.Override
     public java.lang.String getEnvironmentVariablesOrThrow(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map map =
           internalGetEnvironmentVariables().getMap();
@@ -6248,7 +6254,7 @@ public Builder clearEnvironmentVariables() {
      */
     public Builder removeEnvironmentVariables(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       internalGetMutableEnvironmentVariables().getMutableMap().remove(key);
       return this;
@@ -6269,11 +6275,12 @@ public java.util.Map getMutableEnvironmentVa
      */
     public Builder putEnvironmentVariables(java.lang.String key, java.lang.String value) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       if (value == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map value");
       }
+
       internalGetMutableEnvironmentVariables().getMutableMap().put(key, value);
       return this;
     }
@@ -6334,7 +6341,7 @@ public int getBuildEnvironmentVariablesCount() {
     @java.lang.Override
     public boolean containsBuildEnvironmentVariables(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       return internalGetBuildEnvironmentVariables().getMap().containsKey(key);
     }
@@ -6370,7 +6377,7 @@ public java.util.Map getBuildEnvironmentVari
     public java.lang.String getBuildEnvironmentVariablesOrDefault(
         java.lang.String key, java.lang.String defaultValue) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map map =
           internalGetBuildEnvironmentVariables().getMap();
@@ -6388,7 +6395,7 @@ public java.lang.String getBuildEnvironmentVariablesOrDefault(
     @java.lang.Override
     public java.lang.String getBuildEnvironmentVariablesOrThrow(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       java.util.Map map =
           internalGetBuildEnvironmentVariables().getMap();
@@ -6413,7 +6420,7 @@ public Builder clearBuildEnvironmentVariables() {
      */
     public Builder removeBuildEnvironmentVariables(java.lang.String key) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       internalGetMutableBuildEnvironmentVariables().getMutableMap().remove(key);
       return this;
@@ -6434,11 +6441,12 @@ public java.util.Map getMutableBuildEnvironm
      */
     public Builder putBuildEnvironmentVariables(java.lang.String key, java.lang.String value) {
       if (key == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map key");
       }
       if (value == null) {
-        throw new java.lang.NullPointerException();
+        throw new NullPointerException("map value");
       }
+
       internalGetMutableBuildEnvironmentVariables().getMutableMap().put(key, value);
       return this;
     }
diff --git a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/CloudFunctionName.java b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/CloudFunctionName.java
index e6de6f76..8593f8db 100644
--- a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/CloudFunctionName.java
+++ b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/CloudFunctionName.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/CloudFunctionOrBuilder.java b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/CloudFunctionOrBuilder.java
index 0142bf0b..b56d6954 100644
--- a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/CloudFunctionOrBuilder.java
+++ b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/CloudFunctionOrBuilder.java
@@ -545,7 +545,12 @@ public interface CloudFunctionOrBuilder
    *
    * map<string, string> labels = 15;
    */
-  java.lang.String getLabelsOrDefault(java.lang.String key, java.lang.String defaultValue);
+
+  /* nullable */
+  java.lang.String getLabelsOrDefault(
+      java.lang.String key,
+      /* nullable */
+      java.lang.String defaultValue);
   /**
    *
    *
@@ -599,8 +604,12 @@ public interface CloudFunctionOrBuilder
    *
    * map<string, string> environment_variables = 17;
    */
+
+  /* nullable */
   java.lang.String getEnvironmentVariablesOrDefault(
-      java.lang.String key, java.lang.String defaultValue);
+      java.lang.String key,
+      /* nullable */
+      java.lang.String defaultValue);
   /**
    *
    *
@@ -654,8 +663,12 @@ java.lang.String getEnvironmentVariablesOrDefault(
    *
    * map<string, string> build_environment_variables = 28;
    */
+
+  /* nullable */
   java.lang.String getBuildEnvironmentVariablesOrDefault(
-      java.lang.String key, java.lang.String defaultValue);
+      java.lang.String key,
+      /* nullable */
+      java.lang.String defaultValue);
   /**
    *
    *
diff --git a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/CreateFunctionRequest.java b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/CreateFunctionRequest.java
index 8115a8d5..4524013c 100644
--- a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/CreateFunctionRequest.java
+++ b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/CreateFunctionRequest.java
@@ -104,6 +104,8 @@ private CreateFunctionRequest(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/DeleteFunctionRequest.java b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/DeleteFunctionRequest.java
index 4fd015fc..4367a195 100644
--- a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/DeleteFunctionRequest.java
+++ b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/DeleteFunctionRequest.java
@@ -88,6 +88,8 @@ private DeleteFunctionRequest(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/EventTrigger.java b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/EventTrigger.java
index feb8b4a8..a68d9845 100644
--- a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/EventTrigger.java
+++ b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/EventTrigger.java
@@ -121,6 +121,8 @@ private EventTrigger(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/FailurePolicy.java b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/FailurePolicy.java
index 6a775461..aa52cb70 100644
--- a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/FailurePolicy.java
+++ b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/FailurePolicy.java
@@ -98,6 +98,8 @@ private FailurePolicy(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -190,6 +192,8 @@ private Retry(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
@@ -1142,8 +1146,9 @@ public Builder mergeRetry(com.google.cloud.functions.v1.FailurePolicy.Retry valu
       } else {
         if (actionCase_ == 1) {
           retryBuilder_.mergeFrom(value);
+        } else {
+          retryBuilder_.setMessage(value);
         }
-        retryBuilder_.setMessage(value);
       }
       actionCase_ = 1;
       return this;
diff --git a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/GenerateDownloadUrlRequest.java b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/GenerateDownloadUrlRequest.java
index a961e0b7..6d2617ce 100644
--- a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/GenerateDownloadUrlRequest.java
+++ b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/GenerateDownloadUrlRequest.java
@@ -93,6 +93,8 @@ private GenerateDownloadUrlRequest(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/GenerateDownloadUrlResponse.java b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/GenerateDownloadUrlResponse.java
index 7a59fd4e..81310f6d 100644
--- a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/GenerateDownloadUrlResponse.java
+++ b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/GenerateDownloadUrlResponse.java
@@ -88,6 +88,8 @@ private GenerateDownloadUrlResponse(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/GenerateUploadUrlRequest.java b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/GenerateUploadUrlRequest.java
index fa1af76c..d3512028 100644
--- a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/GenerateUploadUrlRequest.java
+++ b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/GenerateUploadUrlRequest.java
@@ -88,6 +88,8 @@ private GenerateUploadUrlRequest(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/GenerateUploadUrlResponse.java b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/GenerateUploadUrlResponse.java
index ab3eccca..cd64f9e9 100644
--- a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/GenerateUploadUrlResponse.java
+++ b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/GenerateUploadUrlResponse.java
@@ -88,6 +88,8 @@ private GenerateUploadUrlResponse(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/GetFunctionRequest.java b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/GetFunctionRequest.java
index 14c5795d..bb09005c 100644
--- a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/GetFunctionRequest.java
+++ b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/GetFunctionRequest.java
@@ -88,6 +88,8 @@ private GetFunctionRequest(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/HttpsTrigger.java b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/HttpsTrigger.java
index 4c27eab2..523b34a7 100644
--- a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/HttpsTrigger.java
+++ b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/HttpsTrigger.java
@@ -96,6 +96,8 @@ private HttpsTrigger(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/ListFunctionsRequest.java b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/ListFunctionsRequest.java
index 01a10765..34ca7d20 100644
--- a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/ListFunctionsRequest.java
+++ b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/ListFunctionsRequest.java
@@ -101,6 +101,8 @@ private ListFunctionsRequest(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/ListFunctionsResponse.java b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/ListFunctionsResponse.java
index a522f84d..47650bc0 100644
--- a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/ListFunctionsResponse.java
+++ b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/ListFunctionsResponse.java
@@ -112,6 +112,8 @@ private ListFunctionsResponse(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/LocationName.java b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/LocationName.java
index dc726e7f..953f901e 100644
--- a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/LocationName.java
+++ b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/LocationName.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 Google LLC
+ * Copyright 2022 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/OperationMetadataV1.java b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/OperationMetadataV1.java
index 33c8541f..834c9473 100644
--- a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/OperationMetadataV1.java
+++ b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/OperationMetadataV1.java
@@ -154,6 +154,8 @@ private OperationMetadataV1(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/SecretEnvVar.java b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/SecretEnvVar.java
index 90fdb2a1..a403cd5b 100644
--- a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/SecretEnvVar.java
+++ b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/SecretEnvVar.java
@@ -115,6 +115,8 @@ private SecretEnvVar(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/SecretVolume.java b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/SecretVolume.java
index cd01f175..ea376595 100644
--- a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/SecretVolume.java
+++ b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/SecretVolume.java
@@ -124,6 +124,8 @@ private SecretVolume(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
@@ -293,6 +295,8 @@ private SecretVersion(
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
       } finally {
diff --git a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/SourceRepository.java b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/SourceRepository.java
index 8b5e9635..fb2f4c39 100644
--- a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/SourceRepository.java
+++ b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/SourceRepository.java
@@ -97,6 +97,8 @@ private SourceRepository(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/UpdateFunctionRequest.java b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/UpdateFunctionRequest.java
index e356310b..f308358e 100644
--- a/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/UpdateFunctionRequest.java
+++ b/proto-google-cloud-functions-v1/src/main/java/com/google/cloud/functions/v1/UpdateFunctionRequest.java
@@ -110,6 +110,8 @@ private UpdateFunctionRequest(
       }
     } catch (com.google.protobuf.InvalidProtocolBufferException e) {
       throw e.setUnfinishedMessage(this);
+    } catch (com.google.protobuf.UninitializedMessageException e) {
+      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index 65e0e63c..b5d73b46 100644
--- a/samples/install-without-bom/pom.xml
+++ b/samples/install-without-bom/pom.xml
@@ -29,7 +29,7 @@
     
       com.google.cloud
       google-cloud-functions
-      2.3.7
+      2.3.8
     
     
 
diff --git a/samples/pom.xml b/samples/pom.xml
index 66bf6e4f..e81cdd44 100644
--- a/samples/pom.xml
+++ b/samples/pom.xml
@@ -46,7 +46,7 @@
       
         org.sonatype.plugins
         nexus-staging-maven-plugin
-        1.6.11
+        1.6.13
         
           true
         
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 3c326d6f..19167fe5 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -28,7 +28,7 @@
     
       com.google.cloud
       google-cloud-functions
-      2.3.7
+      2.3.8
     
   
 
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index d9822472..baca3c57 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -28,7 +28,7 @@
     
       com.google.cloud
       google-cloud-functions
-      2.3.7
+      2.3.8
     
 
     
diff --git a/versions.txt b/versions.txt
index 9aaad70f..af1f529b 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,6 +1,6 @@
 # Format:
 # module:released-version:current-version
 
-google-cloud-functions:2.3.8:2.3.8
-grpc-google-cloud-functions-v1:2.3.8:2.3.8
-proto-google-cloud-functions-v1:2.3.8:2.3.8
+google-cloud-functions:2.4.0:2.4.0
+grpc-google-cloud-functions-v1:2.4.0:2.4.0
+proto-google-cloud-functions-v1:2.4.0:2.4.0