@@ -141,54 +141,57 @@ function ovn_db_pre_start() {
141
141
142
142
local db_file=" /etc/ovn/ovn${1} _db.db"
143
143
if [ -e " $db_file " ]; then
144
- if ovsdb-tool db-is-clustered " $db_file " ; then
144
+ if ovsdb-tool db-is-clustered " $db_file " ; then
145
145
local msg=$( ovsdb-tool check-cluster " $db_file " 2>&1 ) || true
146
146
if echo $msg | grep -q ' has not joined the cluster' ; then
147
147
local birth_time=$( stat --format=%W $db_file )
148
148
local now=$( date +%s)
149
149
if [ $(( $now - $birth_time )) -ge 120 ]; then
150
- echo " ovn db file $db_file exists for more than 120s, removing it.. ."
150
+ echo " ovn db file $db_file exists for more than 120s, remove it."
151
151
rm -f " $db_file " || return 1
152
152
fi
153
153
return
154
154
fi
155
155
156
- if ! ovsdb-tool check-cluster " $db_file " ; then
157
- echo " detected database corruption for file $db_file , rebuild it."
158
- local sid=$( ovsdb-tool db-sid " $db_file " )
159
- if ! echo -n " $sid " | grep -qE ' ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$' ; then
160
- echo " failed to get sid from $1 db file $db_file "
161
- return 1
162
- fi
163
- echo " get local server id $sid "
164
-
165
- eval port=" \$ ${db_eval} _CLUSTER_PORT"
166
- local local_addr=" $( gen_conn_addr $DB_CLUSTER_ADDR $port ) "
167
- echo " local address: $local_addr "
168
-
169
- local remote_addr=()
170
- local node_ips=$( echo -n " ${NODE_IPS} " | sed ' s/,/ /g' )
171
- for node_ip in ${node_ips[*]} ; do
172
- if [ ! " $node_ip " = " $DB_CLUSTER_ADDR " ]; then
173
- remote_addr=(${remote_addr[*]} " $( gen_conn_addr $node_ip $port ) " )
174
- fi
175
- done
176
- echo " remote addresses: ${remote_addr[*]} "
177
-
178
- local db_new=" $db_file .init-$( date +%s) -$( random_str) "
179
- echo " generating new database file $db_new "
180
- if [ ${# remote_addr[*]} -ne 0 ]; then
181
- ovsdb-tool --sid $sid join-cluster " $db_new " $db $local_addr ${remote_addr[*]} || return 1
182
-
183
- local db_bak=" $db_file .backup-$( date +%s) -$( random_str) "
184
- echo " backup $db_file to $db_bak "
185
- mv " $db_file " " $db_bak " || return 1
186
-
187
- echo " use new database file $db_new "
188
- mv " $db_new " " $db_file "
189
- fi
190
- fi
191
- fi
156
+ if ! ovsdb-tool check-cluster " $db_file " ; then
157
+ local db_bak=" $db_file .backup-$( date +%s) -$( random_str) "
158
+ echo " backup $db_file to $db_bak "
159
+ cp " $db_file " " $db_bak " || return 1
160
+
161
+ echo " detected database corruption for file $db_file , try to fix it."
162
+ if ! ovsdb-tool fix-cluster " $db_file " ; then
163
+ echo " failed to fix database file $db_file , rebuild it."
164
+ local sid=$( ovsdb-tool db-sid " $db_file " )
165
+ if ! echo -n " $sid " | grep -qE ' ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$' ; then
166
+ echo " failed to get sid from db file $db_file "
167
+ return 1
168
+ fi
169
+ echo " get local server id $sid "
170
+
171
+ eval port=" \$ ${db_eval} _CLUSTER_PORT"
172
+ local local_addr=" $( gen_conn_addr $DB_CLUSTER_ADDR $port ) "
173
+ echo " local address: $local_addr "
174
+
175
+ local remote_addr=()
176
+ local node_ips=$( echo -n " ${NODE_IPS} " | sed ' s/,/ /g' )
177
+ for node_ip in ${node_ips[*]} ; do
178
+ if [ ! " $node_ip " = " $DB_CLUSTER_ADDR " ]; then
179
+ remote_addr=(${remote_addr[*]} " $( gen_conn_addr $node_ip $port ) " )
180
+ fi
181
+ done
182
+ echo " remote addresses: ${remote_addr[*]} "
183
+
184
+ local db_new=" $db_file .init-$( date +%s) -$( random_str) "
185
+ echo " generating new database file $db_new "
186
+ if [ ${# remote_addr[*]} -ne 0 ]; then
187
+ ovsdb-tool --sid $sid join-cluster " $db_new " $db $local_addr ${remote_addr[*]} || return 1
188
+
189
+ echo " use new database file $db_new "
190
+ mv " $db_new " " $db_file "
191
+ fi
192
+ fi
193
+ fi
194
+ fi
192
195
fi
193
196
194
197
# create local config
0 commit comments