You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by as...@apache.org on 2020/06/30 19:14:38 UTC

[mesos] branch 1.7.x updated: Added a workaround for `javah -d java/jni` race for creating `java/jni`.

This is an automated email from the ASF dual-hosted git repository.

asekretenko pushed a commit to branch 1.7.x
in repository https://gitbox.apache.org/repos/asf/mesos.git


The following commit(s) were added to refs/heads/1.7.x by this push:
     new c570310  Added a workaround for `javah -d java/jni` race for creating `java/jni`.
c570310 is described below

commit c5703109b49d1f663678cbc31d7967b9480094d9
Author: Andrei Sekretenko <as...@apache.org>
AuthorDate: Wed May 27 13:04:02 2020 +0200

    Added a workaround for `javah -d java/jni` race for creating `java/jni`.
    
    This is a workaround for the race between concurrent runs of `javah`
    trying to create the same output directory.
    
    Review: https://reviews.apache.org/r/72549
---
 src/Makefile.am | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/Makefile.am b/src/Makefile.am
index 4e99723..d791321 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -2025,6 +2025,14 @@ BUILT_SOURCES += $(nodist_libjava_la_SOURCES)
 #   of the java file. Unlike 'javah', 'javac -h' requires java sources to
 #   generate headers.
 java/jni/%.h: $(MESOS_JAR)
+	# NOTE: javah has a race between concurrent runs trying to create
+	# the same output directory:
+	# http://hg.openjdk.java.net/jdk8/jdk8/langtools/file/1ff9d5118aae/src/share/classes/com/sun/tools/javah/JavahTask.java#l475
+	# Thus, we have to create the output directory here.
+	#
+	# TODO(asekretenko): Replace `javah` (deprecated as of JDK 9+)
+	# with `javac` when switching to a newer JDK.
+	mkdir -p java/jni
 if HAS_JAVAH
 	$(JAVA_HOME)/bin/javah -d java/jni                              \
 	  -classpath $(MESOS_JAR):@PROTOBUF_JAR@                        \