implement central deploy lock and use in tar plugin
This commit is contained in:
@@ -820,3 +820,30 @@ merge_dedupe_list() {
|
||||
local merged_list="$(tr "$delimiter" $'\n' <<< "$input_lists" | sort | uniq | xargs)"
|
||||
echo "$merged_list"
|
||||
}
|
||||
|
||||
acquire_app_deploy_lock() {
|
||||
declare desc="acquire advisory lock for use in git/tar deploys"
|
||||
local APP="$1"; verify_app_name "$APP"
|
||||
local APP_DEPLOY_LOCK_FD="200"
|
||||
local APP_DEPLOY_LOCK_FILE="$DOKKU_ROOT/$APP/.deploy.lock"
|
||||
local APP_DEPLOY_LOCK_MSG="$APP is currently being deployed. Waiting..."
|
||||
local SHOW_MSG=true
|
||||
|
||||
eval "exec $APP_DEPLOY_LOCK_FD>$APP_DEPLOY_LOCK_FILE"
|
||||
while [[ $(flock -n "$APP_DEPLOY_LOCK_FD" &>/dev/null ; echo $?) -ne 0 ]]; do
|
||||
if [[ "$SHOW_MSG" == "true" ]]; then
|
||||
echo "$APP_DEPLOY_LOCK_MSG"
|
||||
SHOW_MSG=false
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
}
|
||||
|
||||
release_app_deploy_lock() {
|
||||
declare desc="release advisory lock used in git/tar deploys"
|
||||
local APP="$1"; verify_app_name "$APP"
|
||||
local APP_DEPLOY_LOCK_FD="200"
|
||||
local APP_DEPLOY_LOCK_FILE="$DOKKU_ROOT/$APP/.deploy.lock"
|
||||
|
||||
flock -u "$APP_DEPLOY_LOCK_FD" && rm -f "$APP_DEPLOY_LOCK_FILE" &> /dev/null
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user