@@ -108,47 +108,46 @@ start_stack() {
108
108
fi
109
109
}
110
110
111
+ # shellcheck disable=SC2120
111
112
wait_for_stack_to_be_ready () {
112
113
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
115
116
116
117
while read -r line; do
117
118
current_state=$( echo " ${line} " | jq -r ' .CurrentState' )
118
119
desired_state=$( echo " ${line} " | jq -r ' .DesiredState' )
119
120
120
121
service_error=$( echo " ${line} " | jq -r ' .Error' )
121
122
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
128
125
break
129
126
fi
130
127
done < <( echo " ${service_info} " )
131
128
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
135
130
local number_of_interfaces
136
131
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
138
133
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"
140
135
# shellcheck disable=SC2181
141
136
if [[ $? -ne 0 ]]; then
142
137
echo " Docker swarm is unable to start services. https://github.com/moby/libnetwork/issues/1765"
143
138
abort " Exiting the program."
144
139
fi
145
- elif [[ number_of_interfaces -gt 1 ]]; then
140
+ elif [[ number_of_interfaces -ge 3 ]]; then
146
141
echo " Docker swarm is unable to start services. https://github.com/moby/libnetwork/issues/1765"
147
142
abort " Multiple vx interfaces found. Please delete all vx interfaces or reboot the server"
148
143
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
152
151
fi
153
152
done
154
153
@@ -162,7 +161,7 @@ verify_node_is_running() {
162
161
while [[ $retries -lt $max_retries ]]; do
163
162
container_id=$( execute_sudo " docker ps -q -f name=voinetwork_algod" )
164
163
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 \" "
166
165
local exit_code=$?
167
166
if [[ $exit_code -eq 0 ]]; then
168
167
break
0 commit comments