Skip to content

Commit a64f1c5

Browse files
committed
Remove orphan interfaces for any service that is part of the swarm
1 parent 52e9981 commit a64f1c5

File tree

1 file changed

+17
-18
lines changed

1 file changed

+17
-18
lines changed

install.sh

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -108,47 +108,46 @@ start_stack() {
108108
fi
109109
}
110110

111+
# shellcheck disable=SC2120
111112
wait_for_stack_to_be_ready() {
112113
while true; do
113-
service_info=$(execute_sudo 'docker stack ps voinetwork --format json' | grep 'voinetwork_algod')
114-
service_running=false
114+
service_info=$(execute_sudo 'docker stack ps voinetwork --format json')
115+
stack_ready=true
115116

116117
while read -r line; do
117118
current_state=$(echo "${line}" | jq -r '.CurrentState')
118119
desired_state=$(echo "${line}" | jq -r '.DesiredState')
119120

120121
service_error=$(echo "${line}" | jq -r '.Error')
121122

122-
if [[ ${current_state} == Running* ]] && [[ ${desired_state} == "Running" ]]; then
123-
service_running=true
124-
break
125-
fi
126-
127-
if [[ ${service_error} != "" ]]; then
123+
if [[ (${desired_state} == "Ready" || ${desired_state} == "Running") && ${current_state} != Running* ]]; then
124+
stack_ready=false
128125
break
129126
fi
130127
done < <(echo "${service_info}")
131128

132-
if [[ ${service_running} == true ]]; then
133-
break
134-
elif [[ ${service_error} == "network sandbox join failed: subnet sandbox"* ]]; then
129+
if [[ ${stack_ready} == false && -n ${service_error} ]]; then
135130
local number_of_interfaces
136131
number_of_interfaces=$(execute_sudo "ip -d link show | grep vx | wc -l")
137-
if [[ number_of_interfaces -eq 1 ]]; then
132+
if [[ number_of_interfaces -le 2 ]]; then
138133
echo "Docker has a network interface that is lingering and preventing startup. We'll attempt to auto-delete it."
139-
execute_sudo "ip -d link show | grep vx | grep DOWN | xargs -rn1 ip link delete"
134+
execute_sudo "ip -d link show | grep vx | grep DOWN | awk '{print $2}' | tr -d ':' | xargs -rn1 ip link delete"
140135
# shellcheck disable=SC2181
141136
if [[ $? -ne 0 ]]; then
142137
echo "Docker swarm is unable to start services. https://github.com/moby/libnetwork/issues/1765"
143138
abort "Exiting the program."
144139
fi
145-
elif [[ number_of_interfaces -gt 1 ]]; then
140+
elif [[ number_of_interfaces -ge 3 ]]; then
146141
echo "Docker swarm is unable to start services. https://github.com/moby/libnetwork/issues/1765"
147142
abort "Multiple vx interfaces found. Please delete all vx interfaces or reboot the server"
148143
fi
149-
else
150-
echo "Waiting for stack to be ready..."
151-
sleep 2
144+
fi
145+
146+
echo "Waiting for stack to be ready..."
147+
sleep 2
148+
149+
if [[ ${stack_ready} == true ]]; then
150+
break
152151
fi
153152
done
154153

@@ -162,7 +161,7 @@ verify_node_is_running() {
162161
while [[ $retries -lt $max_retries ]]; do
163162
container_id=$(execute_sudo "docker ps -q -f name=voinetwork_algod")
164163
if [[ -n "$container_id" ]]; then
165-
execute_sudo "docker exec -e account_addr=${account_addr} ${container_id} bash -c \"goal node status\""
164+
execute_sudo "docker exec ${container_id} bash -c \"curl -sS http://localhost:8080/health > /dev/null\""
166165
local exit_code=$?
167166
if [[ $exit_code -eq 0 ]]; then
168167
break

0 commit comments

Comments
 (0)