From 1f26b2f67d5f01c003c840be909bad6693cec045 Mon Sep 17 00:00:00 2001 From: Ward Vandewege Date: Wed, 7 Oct 2020 20:53:22 -0400 Subject: [PATCH] Serialize the service startup in arvbox by adding a dependency on the availability of the API server for those services that need it. This greatly speeds up boot. Also remove superfluous service configuration for keepproxy. refs #16955 Arvados-DCO-1.1-Signed-off-by: Ward Vandewege --- tools/arvbox/bin/arvbox | 1 - tools/arvbox/lib/arvbox/docker/runsu.sh | 2 +- .../lib/arvbox/docker/service/api/run-service | 2 ++ .../lib/arvbox/docker/service/doc/run-service | 5 ++++ .../docker/service/gitolite/run-service | 6 +++++ .../docker/service/keepproxy/run-service | 23 ------------------- .../lib/arvbox/docker/service/vm/run-service | 6 +++++ .../docker/service/workbench/run-service | 6 +++++ .../docker/service/workbench2/run-service | 6 +++++ 9 files changed, 32 insertions(+), 25 deletions(-) diff --git a/tools/arvbox/bin/arvbox b/tools/arvbox/bin/arvbox index cd72ec06bb..1c11a073f5 100755 --- a/tools/arvbox/bin/arvbox +++ b/tools/arvbox/bin/arvbox @@ -625,7 +625,6 @@ export RAILS_ENV=development bundle exec rake db:drop rm $ARVADOS_CONTAINER_PATH/api_database_setup rm $ARVADOS_CONTAINER_PATH/superuser_token -rm $ARVADOS_CONTAINER_PATH/keepproxy-uuid sv start api sv start controller sv start websockets diff --git a/tools/arvbox/lib/arvbox/docker/runsu.sh b/tools/arvbox/lib/arvbox/docker/runsu.sh index 05d11dfde8..55edce3f9d 100755 --- a/tools/arvbox/lib/arvbox/docker/runsu.sh +++ b/tools/arvbox/lib/arvbox/docker/runsu.sh @@ -15,7 +15,7 @@ export HOME=$ARVADOS_CONTAINER_PATH chown arvbox /dev/stderr # Load our custom sysctl.conf entries -/sbin/sysctl -p +/sbin/sysctl -p >/dev/null if test -z "$1" ; then exec chpst -u arvbox:arvbox:docker $0-service diff --git a/tools/arvbox/lib/arvbox/docker/service/api/run-service b/tools/arvbox/lib/arvbox/docker/service/api/run-service index b586afb65c..d2691e7ed6 100755 --- a/tools/arvbox/lib/arvbox/docker/service/api/run-service +++ b/tools/arvbox/lib/arvbox/docker/service/api/run-service @@ -31,4 +31,6 @@ if test "$1" = "--only-setup" ; then exit fi +touch $ARVADOS_CONTAINER_PATH/api.ready + exec bundle exec passenger start --port=${services[api]} diff --git a/tools/arvbox/lib/arvbox/docker/service/doc/run-service b/tools/arvbox/lib/arvbox/docker/service/doc/run-service index fa7aed1ef5..36566c9d9b 100755 --- a/tools/arvbox/lib/arvbox/docker/service/doc/run-service +++ b/tools/arvbox/lib/arvbox/docker/service/doc/run-service @@ -8,6 +8,11 @@ set -ex -o pipefail . /usr/local/lib/arvbox/common.sh +if test "$1" != "--only-deps" ; then + while [ ! -f $ARVADOS_CONTAINER_PATH/api.ready ]; do + sleep 1 + done +fi cd /usr/src/arvados/doc run_bundler --without=development diff --git a/tools/arvbox/lib/arvbox/docker/service/gitolite/run-service b/tools/arvbox/lib/arvbox/docker/service/gitolite/run-service index 967c75f906..c60c15bfc5 100755 --- a/tools/arvbox/lib/arvbox/docker/service/gitolite/run-service +++ b/tools/arvbox/lib/arvbox/docker/service/gitolite/run-service @@ -8,6 +8,12 @@ set -eux -o pipefail . /usr/local/lib/arvbox/common.sh +if test "$1" != "--only-deps" ; then + while [ ! -f $ARVADOS_CONTAINER_PATH/api.ready ]; do + sleep 1 + done +fi + mkdir -p $ARVADOS_CONTAINER_PATH/git export ARVADOS_API_HOST=$localip:${services[controller-ssl]} diff --git a/tools/arvbox/lib/arvbox/docker/service/keepproxy/run-service b/tools/arvbox/lib/arvbox/docker/service/keepproxy/run-service index cf5ccd724b..0374c43e9c 100755 --- a/tools/arvbox/lib/arvbox/docker/service/keepproxy/run-service +++ b/tools/arvbox/lib/arvbox/docker/service/keepproxy/run-service @@ -17,27 +17,4 @@ if test "$1" = "--only-deps" ; then exit fi -export ARVADOS_API_HOST=$localip:${services[controller-ssl]} -export ARVADOS_API_HOST_INSECURE=1 -export ARVADOS_API_TOKEN=$(cat $ARVADOS_CONTAINER_PATH/superuser_token) - -set +e -read -rd $'\000' keepservice < $ARVADOS_CONTAINER_PATH/keepproxy-uuid -fi - exec /usr/local/bin/keepproxy diff --git a/tools/arvbox/lib/arvbox/docker/service/vm/run-service b/tools/arvbox/lib/arvbox/docker/service/vm/run-service index 5369af31d0..0c7213f869 100755 --- a/tools/arvbox/lib/arvbox/docker/service/vm/run-service +++ b/tools/arvbox/lib/arvbox/docker/service/vm/run-service @@ -9,6 +9,12 @@ set -ex -o pipefail . /usr/local/lib/arvbox/common.sh +if test "$1" != "--only-deps" ; then + while [ ! -f $ARVADOS_CONTAINER_PATH/api.ready ]; do + sleep 1 + done +fi + cd /usr/src/arvados/services/login-sync run_bundler --binstubs=$PWD/binstubs ln -sf /usr/src/arvados/services/login-sync/binstubs/arvados-login-sync /usr/local/bin/arvados-login-sync diff --git a/tools/arvbox/lib/arvbox/docker/service/workbench/run-service b/tools/arvbox/lib/arvbox/docker/service/workbench/run-service index b40d4f5699..eba22372fb 100755 --- a/tools/arvbox/lib/arvbox/docker/service/workbench/run-service +++ b/tools/arvbox/lib/arvbox/docker/service/workbench/run-service @@ -8,6 +8,12 @@ set -ex -o pipefail . /usr/local/lib/arvbox/common.sh +if test "$1" != "--only-deps" ; then + while [ ! -f $ARVADOS_CONTAINER_PATH/api.ready ]; do + sleep 1 + done +fi + cd /usr/src/arvados/apps/workbench if test -s $ARVADOS_CONTAINER_PATH/workbench_rails_env ; then diff --git a/tools/arvbox/lib/arvbox/docker/service/workbench2/run-service b/tools/arvbox/lib/arvbox/docker/service/workbench2/run-service index 8c3c49efd6..f956eecc61 100755 --- a/tools/arvbox/lib/arvbox/docker/service/workbench2/run-service +++ b/tools/arvbox/lib/arvbox/docker/service/workbench2/run-service @@ -8,6 +8,12 @@ set -ex -o pipefail . /usr/local/lib/arvbox/common.sh +if test "$1" != "--only-deps" ; then + while [ ! -f $ARVADOS_CONTAINER_PATH/api.ready ]; do + sleep 1 + done +fi + cd /usr/src/workbench2 npm -d install --prefix /usr/local --global yarn@1.17.3 -- 2.30.2