Serialize the service startup in arvbox by adding a dependency on the
authorWard Vandewege <ward@curii.com>
Thu, 8 Oct 2020 00:53:22 +0000 (20:53 -0400)
committerWard Vandewege <ward@curii.com>
Thu, 8 Oct 2020 00:54:19 +0000 (20:54 -0400)
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 <ward@curii.com>

tools/arvbox/bin/arvbox
tools/arvbox/lib/arvbox/docker/runsu.sh
tools/arvbox/lib/arvbox/docker/service/api/run-service
tools/arvbox/lib/arvbox/docker/service/doc/run-service
tools/arvbox/lib/arvbox/docker/service/gitolite/run-service
tools/arvbox/lib/arvbox/docker/service/keepproxy/run-service
tools/arvbox/lib/arvbox/docker/service/vm/run-service
tools/arvbox/lib/arvbox/docker/service/workbench/run-service
tools/arvbox/lib/arvbox/docker/service/workbench2/run-service

index cd72ec06bbfa9ecf0bf4dbc550886e246556a0df..1c11a073f50f1dbba5d8aaccf498558ea000308d 100755 (executable)
@@ -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
index 05d11dfde8121eb364dabc193185e4ba7fe4162c..55edce3f9d8b032024d3c737f32c891fcd36224b 100755 (executable)
@@ -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
index b586afb65c70496ddd914cab5645e935d9230c86..d2691e7ed6bd2acdf96c1be2634c72fb3da30c03 100755 (executable)
@@ -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]}
index fa7aed1ef5c91c4855a0710f7206b0555a0081cd..36566c9d9b5ac1b95dd3c85c40f148ed123125b0 100755 (executable)
@@ -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
index 967c75f9064c21a1134c582ae1e5df6793eb42f9..c60c15bfc53887e45cfeb84dd8f119aedcf544ee 100755 (executable)
@@ -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]}
index cf5ccd724b885ee84233b03e0259ef9c5906e8cc..0374c43e9c5360ab2d9f2a3720560b4af49536de 100755 (executable)
@@ -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 <<EOF
-{
- "service_host":"$localip",
- "service_port":${services[keepproxy-ssl]},
- "service_ssl_flag":true,
- "service_type":"proxy"
-}
-EOF
-set -e
-
-if test -s $ARVADOS_CONTAINER_PATH/keepproxy-uuid ; then
-    keep_uuid=$(cat $ARVADOS_CONTAINER_PATH/keepproxy-uuid)
-    arv keep_service update --uuid $keep_uuid --keep-service "$keepservice"
-else
-    UUID=$(arv --format=uuid keep_service create --keep-service "$keepservice")
-    echo $UUID > $ARVADOS_CONTAINER_PATH/keepproxy-uuid
-fi
-
 exec /usr/local/bin/keepproxy
index 5369af31d0c086cd986e2b9de877b5e196439d28..0c7213f8696143f6870ce1c3709e0d791e518d77 100755 (executable)
@@ -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
index b40d4f5699abd727b7fd54a0cbcdb30bcaba8617..eba22372fbd908fdfa4f09527763b1865ce45905 100755 (executable)
@@ -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
index 8c3c49efd65dced676317333f0fa755280d9bde2..f956eecc61b6118885fb78a8ae1cf1cadfdda0c6 100755 (executable)
@@ -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