This is an automated email from the ASF dual-hosted git repository. granthenke pushed a commit to branch branch-1.14.x in repository https://gitbox.apache.org/repos/asf/kudu.git
commit c3630ea8dfa28e9ce427e982cea83c52404bd49b 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]> (cherry picked from commit 202bcae7f12ca0d7ac43e0a07e57f3236c8f968d) Reviewed-on: http://gerrit.cloudera.org:8080/17001 Tested-by: Grant Henke <[email protected]> Reviewed-by: Attila Bukor <[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
