This is an automated email from the ASF dual-hosted git repository.
granthenke pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kudu.git
The following commit(s) were added to refs/heads/master by this push:
new 202bcae [build] Fix occasional Gradle build failures
202bcae is described below
commit 202bcae7f12ca0d7ac43e0a07e57f3236c8f968d
Author: Grant Henke <[email protected]>
AuthorDate: Thu Jan 21 12:23:50 2021 -0600
[build] Fix occasional Gradle build failures
Occasionally, on a clean build environment often as a part of the
CI pipline, the C++ build will fail with cryptic often Protobuf
related failures. It turns out this is a result of multiple
./gradlew calls which depend on the kudu-proto module.
This change fixes the issue by defining a single CMake target
to build the kudu-proto jar.
Change-Id: Iefa02e52a74f8a60c3029188995574ffdb0d3d5c
Reviewed-on: http://gerrit.cloudera.org:8080/16968
Tested-by: Kudu Jenkins
Reviewed-by: Alexey Serbin <[email protected]>
Reviewed-by: Andrew Wong <[email protected]>
---
CMakeLists.txt | 11 +++++++++++
src/kudu/hms/CMakeLists.txt | 2 +-
src/kudu/subprocess/CMakeLists.txt | 2 +-
3 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d613233..4e6c8f2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -119,6 +119,17 @@ add_custom_command(OUTPUT ${GRADLE_WRAPPER_JAR}
WORKING_DIRECTORY "${JAVA_DIR}")
add_custom_target(init_gradle DEPENDS ${GRADLE_WRAPPER_JAR})
+# A target to build the kudu-proto Java module which is used
+# by the kudu-subprocess and kudu-hive modules to avoid building
+# multiple times and potential race conditions in Gradle code
+# generation.
+set(PROTO_JAR
${JAVA_DIR}/kudu-proto/build/libs/kudu-proto-${KUDU_VERSION_NUMBER}.jar)
+add_custom_command(OUTPUT ${PROTO_JAR}
+ COMMAND ./gradlew :kudu-proto:jar ${GRADLE_FLAGS}
+ WORKING_DIRECTORY "${JAVA_DIR}"
+ DEPENDS init_gradle)
+add_custom_target(proto_jar DEPENDS ${PROTO_JAR})
+
# Allow "make install" to not depend on all targets.
#
# Must be declared in the top-level CMakeLists.txt.
diff --git a/src/kudu/hms/CMakeLists.txt b/src/kudu/hms/CMakeLists.txt
index 546da94..ef1171b 100644
--- a/src/kudu/hms/CMakeLists.txt
+++ b/src/kudu/hms/CMakeLists.txt
@@ -71,7 +71,7 @@ add_custom_command(OUTPUT ${HMS_PLUGIN_JAR}
"${JAVA_DIR}/kudu-hive/build/libs/kudu-hive-${KUDU_VERSION_NUMBER}.jar"
"${HMS_PLUGIN_JAR}"
WORKING_DIRECTORY "${JAVA_DIR}"
- DEPENDS init_gradle)
+ DEPENDS proto_jar)
add_custom_target(hms_plugin_jar DEPENDS ${HMS_PLUGIN_JAR})
set(MINI_HMS_SRCS
diff --git a/src/kudu/subprocess/CMakeLists.txt
b/src/kudu/subprocess/CMakeLists.txt
index 65cb40c..4d2ec6a 100644
--- a/src/kudu/subprocess/CMakeLists.txt
+++ b/src/kudu/subprocess/CMakeLists.txt
@@ -43,7 +43,7 @@ add_custom_command(OUTPUT ${SUBPROCESS_JAR}
"${JAVA_DIR}/kudu-subprocess/build/libs/kudu-subprocess-${KUDU_VERSION_NUMBER}.jar"
"${SUBPROCESS_JAR}"
WORKING_DIRECTORY "${JAVA_DIR}"
- DEPENDS init_gradle)
+ DEPENDS proto_jar)
add_custom_target(subprocess_jar DEPENDS ${SUBPROCESS_JAR})
add_library(kudu_subprocess