Skip to content

Commit 0537775

Browse files
authored
Retry apt-get update on failure (GoogleCloudDataproc#169)
1 parent 4160a4b commit 0537775

File tree

11 files changed

+124
-7
lines changed

11 files changed

+124
-7
lines changed

datalab/datalab.sh

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,23 @@
1818

1919
set -e -x
2020

21+
function update_apt_get() {
22+
for ((i = 0; i < 10; i++)); do
23+
if apt-get update; then
24+
return 0
25+
fi
26+
sleep 5
27+
done
28+
return 1
29+
}
30+
2131
ROLE=$(/usr/share/google/get_metadata_value attributes/dataproc-role)
2232
PROJECT=$(/usr/share/google/get_metadata_value ../project/project-id)
2333
DOCKER_IMAGE=$(/usr/share/google/get_metadata_value attributes/docker-image || true)
2434
SPARK_PACKAGES=$(/usr/share/google/get_metadata_value attributes/spark-packages || true)
2535

2636
if [[ "${ROLE}" == 'Master' ]]; then
27-
apt-get update
37+
update_apt_get
2838
apt-get install -y -q docker.io
2939
if [[ -z "${DOCKER_IMAGE}" ]]; then
3040
DOCKER_IMAGE="gcr.io/cloud-datalab/datalab:local"

flink/flink.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,16 @@
2424

2525
set -euxo pipefail
2626

27+
function update_apt_get() {
28+
for ((i = 0; i < 10; i++)); do
29+
if apt-get update; then
30+
return 0
31+
fi
32+
sleep 5
33+
done
34+
return 1
35+
}
36+
2737
# Install directories for Flink and Hadoop
2838
readonly FLINK_INSTALL_DIR='/usr/lib/flink'
2939
readonly HADOOP_CONF_DIR='/etc/hadoop/conf'
@@ -121,6 +131,7 @@ EOF
121131
function main() {
122132
local role="$(/usr/share/google/get_metadata_value attributes/dataproc-role)"
123133
if [[ "${role}" == 'Master' ]] ; then
134+
update_apt_get
124135
apt-get install -y flink
125136
configure_flink
126137
fi

ganglia/ganglia.sh

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,18 @@
1515

1616
set -x -e
1717

18-
apt-get update && apt-get install -y ganglia-monitor
18+
function update_apt_get() {
19+
for ((i = 0; i < 10; i++)); do
20+
if apt-get update; then
21+
return 0
22+
fi
23+
sleep 5
24+
done
25+
return 1
26+
}
27+
28+
update_apt_get
29+
apt-get install -y ganglia-monitor
1930

2031
MASTER=$(/usr/share/google/get_metadata_value attributes/dataproc-master)
2132

hue/hue.sh

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,16 @@
1414

1515
set -x -e
1616

17+
function update_apt_get() {
18+
for ((i = 0; i < 10; i++)); do
19+
if apt-get update; then
20+
return 0
21+
fi
22+
sleep 5
23+
done
24+
return 1
25+
}
26+
1727
# Determine the role of this node
1828
ROLE=$(/usr/share/google/get_metadata_value attributes/dataproc-role)
1929

@@ -23,7 +33,7 @@ if [[ "${ROLE}" != 'Master' ]]; then
2333
fi
2434

2535
# Install hue
26-
apt-get update
36+
update_apt_get
2737
apt-get install -t jessie-backports hue -y
2838

2939
# Stop hue

jupyter/internal/bootstrap-jupyter-ext.sh

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
#!/bin/bash
22
set -e
3+
4+
function update_apt_get() {
5+
for ((i = 0; i < 10; i++)); do
6+
if apt-get update; then
7+
return 0
8+
fi
9+
sleep 5
10+
done
11+
return 1
12+
}
13+
14+
update_apt_get
315
sudo apt-get install -y git
416

517
# Installs Jupyter notebook extensions and RISE

kafka/kafka.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,17 @@
1414
# limitations under the License.
1515
set -x -e
1616

17+
function update_apt_get() {
18+
for ((i = 0; i < 10; i++)); do
19+
if apt-get update; then
20+
return 0
21+
fi
22+
sleep 5
23+
done
24+
return 1
25+
}
26+
27+
update_apt_get
1728

1829
# Only run the installation on workers; verify zookeeper on master(s)
1930
if [[ $(/usr/share/google/get_metadata_value attributes/dataproc-role) == 'Master' ]]; then

oozie/oozie.sh

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,16 @@
2525

2626
set -x -e
2727

28+
function update_apt_get() {
29+
for ((i = 0; i < 10; i++)); do
30+
if apt-get update; then
31+
return 0
32+
fi
33+
sleep 5
34+
done
35+
return 1
36+
}
37+
2838
# Determine the role of this node
2939
ROLE=$(/usr/share/google/get_metadata_value attributes/dataproc-role)
3040

@@ -34,7 +44,7 @@ if [[ "${ROLE}" != 'Master' ]]; then
3444
fi
3545

3646
# Upgrade the repository and install Oozie
37-
apt-get update
47+
update_apt_get
3848
apt-get install oozie oozie-client -y
3949

4050
# The ext library is needed to enable the Oozie web console

tez/tez.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,16 @@
1414
# limitations under the License.
1515
set -x -e
1616

17+
function update_apt_get() {
18+
for ((i = 0; i < 10; i++)); do
19+
if apt-get update; then
20+
return 0
21+
fi
22+
sleep 5
23+
done
24+
return 1
25+
}
26+
1727
# Define important variables
1828
tez_version="0.7.0"
1929
protobuf_version="2.5.0"
@@ -34,6 +44,7 @@ if [[ "${role}" == 'Master' ]]; then
3444
# Install Tez and YARN Application Timeline Server.
3545
# Install node/npm to run HTTP server for Tez UI.
3646
curl -sL https://deb.nodesource.com/setup_8.x | bash -
47+
update_apt_get
3748
apt-get install tez hadoop-yarn-timelineserver nodejs -y
3849

3950
# Stage Tez

user-environment/user-environment.sh

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,22 @@ set -o errexit
1717
set -o nounset
1818
set -o xtrace
1919

20+
function update_apt_get() {
21+
for ((i = 0; i < 10; i++)); do
22+
if apt-get update; then
23+
return 0
24+
fi
25+
sleep 5
26+
done
27+
return 1
28+
}
29+
2030
## Only install customize master node by default.
2131
## Delete to customize all nodes.
22-
[[ "${HOSTNAME}" =~ -m$ ]] || exit
32+
[[ "${HOSTNAME}" =~ -m$ ]] || exit 0
2333

2434
## Make global changes here
25-
apt-get update || true
35+
update_apt_get
2636
apt-get install -y vim
2737
update-alternatives --set editor /usr/bin/vim.basic
2838
#apt-get install -y tmux sl

zeppelin/zeppelin.sh

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,24 @@
1919

2020
set -x -e
2121

22+
function update_apt_get() {
23+
for ((i = 0; i < 10; i++)); do
24+
if apt-get update; then
25+
return 0
26+
fi
27+
sleep 5
28+
done
29+
return 1
30+
}
31+
2232
# Only run on the master node
2333
ROLE="$(/usr/share/google/get_metadata_value attributes/dataproc-role)"
2434
INTERPRETER_FILE='/etc/zeppelin/conf/interpreter.json'
2535
ZEPPELIN_PORT="$(/usr/share/google/get_metadata_value attributes/zeppelin-port || true)"
2636

2737
if [[ "${ROLE}" == 'Master' ]]; then
2838
# Install zeppelin. Don't mind if it fails to start the first time.
29-
apt-get update || true
39+
update_apt_get
3040
apt-get install -y -t jessie-backports zeppelin || dpkg -l zeppelin
3141

3242
for i in {1..6}; do

0 commit comments

Comments
 (0)