Java: fixing racing condition in external JAR download.
Temporary file name with configure process PID used to download JAR from external repository. Then file renamed using command 'mv'. The issue reproduced in clean environment when 2 or more concurrent builds started.
This commit is contained in:
@@ -8,7 +8,9 @@
|
|||||||
# NXT_JAR_LOCAL_REPO=$HOME/.m2/repository/
|
# NXT_JAR_LOCAL_REPO=$HOME/.m2/repository/
|
||||||
|
|
||||||
NXT_JAR_FILE=${NXT_JAR_NAME}-${NXT_JAR_VERSION}.jar
|
NXT_JAR_FILE=${NXT_JAR_NAME}-${NXT_JAR_VERSION}.jar
|
||||||
NXT_JAR_LOCAL="${NXT_JAR_LOCAL_REPO}${NXT_JAR_NAMESPACE}${NXT_JAR_NAME}/${NXT_JAR_VERSION}/${NXT_JAR_FILE}"
|
NXT_JAR_LOCAL_DIR="${NXT_JAR_LOCAL_REPO}${NXT_JAR_NAMESPACE}${NXT_JAR_NAME}/${NXT_JAR_VERSION}"
|
||||||
|
NXT_JAR_LOCAL="${NXT_JAR_LOCAL_DIR}/${NXT_JAR_FILE}"
|
||||||
|
NXT_JAR_LOCAL_TMP="${NXT_JAR_LOCAL_DIR}/.${NXT_JAR_FILE}.$$"
|
||||||
NXT_JAR_URL=${NXT_JAR_REPO}${NXT_JAR_NAMESPACE}${NXT_JAR_NAME}/${NXT_JAR_VERSION}/${NXT_JAR_FILE}
|
NXT_JAR_URL=${NXT_JAR_REPO}${NXT_JAR_NAMESPACE}${NXT_JAR_NAME}/${NXT_JAR_VERSION}/${NXT_JAR_FILE}
|
||||||
|
|
||||||
if [ ! -f "$NXT_BUILD_DIR/$NXT_JAR_FILE" ]; then
|
if [ ! -f "$NXT_BUILD_DIR/$NXT_JAR_FILE" ]; then
|
||||||
@@ -16,8 +18,9 @@ if [ ! -f "$NXT_BUILD_DIR/$NXT_JAR_FILE" ]; then
|
|||||||
$echo "getting remote $NXT_JAR_FILE ... "
|
$echo "getting remote $NXT_JAR_FILE ... "
|
||||||
$echo "getting remote $NXT_JAR_FILE ..." >> $NXT_AUTOCONF_ERR
|
$echo "getting remote $NXT_JAR_FILE ..." >> $NXT_AUTOCONF_ERR
|
||||||
|
|
||||||
mkdir -p "${NXT_JAR_LOCAL_REPO}${NXT_JAR_NAMESPACE}${NXT_JAR_NAME}/${NXT_JAR_VERSION}/"
|
mkdir -p "${NXT_JAR_LOCAL_DIR}"
|
||||||
curl --progress-bar "$NXT_JAR_URL" -o "$NXT_JAR_LOCAL"
|
curl --progress-bar "$NXT_JAR_URL" -o "$NXT_JAR_LOCAL_TMP"
|
||||||
|
mv "$NXT_JAR_LOCAL_TMP" "$NXT_JAR_LOCAL"
|
||||||
else
|
else
|
||||||
$echo "getting local $NXT_JAR_FILE"
|
$echo "getting local $NXT_JAR_FILE"
|
||||||
$echo "getting local $NXT_JAR_FILE ..." >> $NXT_AUTOCONF_ERR
|
$echo "getting local $NXT_JAR_FILE ..." >> $NXT_AUTOCONF_ERR
|
||||||
|
|||||||
Reference in New Issue
Block a user