18657: Only get lock on gem install / bundle install
authorPeter Amstutz <peter.amstutz@curii.com>
Mon, 7 Feb 2022 16:07:22 +0000 (11:07 -0500)
committerPeter Amstutz <peter.amstutz@curii.com>
Mon, 7 Feb 2022 16:07:22 +0000 (11:07 -0500)
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz@curii.com>

tools/arvbox/lib/arvbox/docker/common.sh
tools/arvbox/lib/arvbox/docker/service/sdk/run-service

index 54379a5ed3dc49fc8c2cb5456e4ddf44e4acb74f..3ad82b3f88885f18f015aab0a66a04accd5b2e7a 100644 (file)
@@ -62,7 +62,8 @@ else
 fi
 
 run_bundler() {
-    /var/lib/arvados/bin/gem install --no-document bundler:$BUNDLER_VERSION
+    GEMLOCK=/var/lib/arvados/lib/ruby/gems/gems.lock
+    flock $GEMLOCK /var/lib/arvados/bin/gem install --no-document bundler:$BUNDLER_VERSION
     if test -f Gemfile.lock ; then
         frozen=--frozen
     else
@@ -73,8 +74,8 @@ run_bundler() {
        # If present, use the one associated with rails workbench or API
        BUNDLER=$PWD/bin/bundle
     fi
-    if ! $BUNDLER install --verbose --local --no-deployment $frozen "$@" ; then
-        $BUNDLER install --verbose --no-deployment $frozen "$@"
+    if ! flock $GEMLOCK $BUNDLER install --verbose --local --no-deployment $frozen "$@" ; then
+        flock $GEMLOCK $BUNDLER install --verbose --no-deployment $frozen "$@"
     fi
 }
 
index d98afe823ef92eab499627dc972d31045992b471..c5bf852ab2e9c23b792061e2dc7c24fd7683e3a4 100755 (executable)
@@ -15,8 +15,8 @@ download_cache = /var/lib/pip
 EOF
 
 cd /usr/src/arvados/sdk/cli
-run_bundler --binstubs
-ln -sf /usr/src/arvados/sdk/cli/bin/arv /usr/local/bin/arv
+run_bundler --binstubs=binstubs
+ln -sf /usr/src/arvados/sdk/cli/binstubs/arv /usr/local/bin/arv
 
 export PYCMD=python3