From 4667cbe14986e2f0f83e23ed539c7b231e98e9d9 Mon Sep 17 00:00:00 2001 From: Remi Rampin Date: Fri, 27 Jan 2023 10:34:31 -0500 Subject: [PATCH] Use flock to lock the whole upgrade process Signed-off-by: Remi Rampin --- docker-entrypoint.sh | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 4dda99b8..b02b21ef 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -220,7 +220,21 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP } > /usr/local/etc/php/conf.d/redis-session.ini fi - do_install_or_upgrade + # If another process is syncing the html folder, wait for + # it to be done, then escape initalization. + # You need to define the NEXTCLOUD_INIT_LOCK environment variable + if [ -n "${NEXTCLOUD_INIT_LOCK+x}" ]; then + ( + if ! flock -n 9; then + # If we couldn't get it immediately, show a message, then wait for real + echo "Another process is initializing Nextcloud. Waiting..." + flock 9 + fi + do_install_or_upgrade + ) 9> /var/www/html/nextcloud-init-sync.lock + else + do_install_or_upgrade + fi fi exec "$@"