Skip to content

Commit db64919

Browse files
authored
K8SPSMDB-1265: clean up basmdb-backup and use kubectl wait for wait_restore (#1911)
Use kubectl wait instead of regular loop in `wait_restore()` Add retry for `demand-backup-sharded` test backup presence in minio storage Delete backups during test cleanup before removing finalizers from objects.
1 parent 337cec3 commit db64919

File tree

4 files changed

+47
-12
lines changed
  • e2e-tests

4 files changed

+47
-12
lines changed

e2e-tests/demand-backup-incremental-sharded/run

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ run_recovery_check() {
5656
fi
5757
echo
5858

59-
wait_cluster_consistency ${cluster} 42
59+
wait_cluster_consistency ${cluster} 60
6060
wait_for_pbm_operations ${cluster}
6161

6262
if [[ $base == true ]]; then

e2e-tests/demand-backup-sharded/run

+10-2
Original file line numberDiff line numberDiff line change
@@ -148,10 +148,18 @@ fi
148148

149149
desc 'check backup and restore -- minio'
150150
backup_dest_minio=$(get_backup_dest "$backup_name_minio")
151-
kubectl_bin run -i --rm aws-cli --image=perconalab/awscli --restart=Never -- \
151+
retry=0
152+
until kubectl_bin run -i --rm aws-cli --image=perconalab/awscli --restart=Never -- \
152153
/usr/bin/env AWS_ACCESS_KEY_ID=some-access-key AWS_SECRET_ACCESS_KEY=some-secret-key AWS_DEFAULT_REGION=us-east-1 \
153154
/usr/bin/aws --endpoint-url http://minio-service:9000 s3 ls "s3://${backup_dest_minio}/rs0/" \
154-
| grep "myApp.test.gz"
155+
| grep "myApp.test.gz"; do
156+
sleep 1
157+
let retry+=1
158+
if [ $retry -ge 60 ]; then
159+
echo "Max retry count $retry reached. Something went wrong with writing backup"
160+
exit 1
161+
fi
162+
done
155163
insert_data_mongos "100501" "myApp" "" "$custom_port"
156164
insert_data_mongos "100501" "myApp1" "" "$custom_port"
157165
insert_data_mongos "100501" "myApp2" "" "$custom_port"

e2e-tests/functions

+34-9
Original file line numberDiff line numberDiff line change
@@ -232,14 +232,15 @@ wait_backup() {
232232
echo -n .
233233
let retry+=1
234234
current_status=$(kubectl_bin get psmdb-backup $backup_name -o jsonpath='{.status.state}')
235-
if [[ $retry -ge 360 || ${current_status} == 'error' ]]; then
235+
if [[ $retry -ge 600 || ${current_status} == 'error' ]]; then
236236
kubectl_bin logs ${OPERATOR_NS:+-n $OPERATOR_NS} $(get_operator_pod) \
237237
| grep -v 'level=info' \
238238
| grep -v 'level=debug' \
239239
| grep -v 'Getting tasks for pod' \
240240
| grep -v 'Getting pods from source' \
241-
| tail -100
242-
echo "Backup object psmdb-backup/${backup_name} is in ${current_state} state."
241+
| tail -200
242+
kubectl_bin get psmdb-backup
243+
echo "Backup object psmdb-backup/${backup_name} is in ${current_status} state."
243244
echo something went wrong with operator or kubernetes cluster
244245
exit 1
245246
fi
@@ -348,26 +349,40 @@ wait_restore() {
348349
local ok_if_ready=${6:-0}
349350

350351
set +o xtrace
352+
# We need to run wait till object is created, otherwise wait fails at once
353+
echo -n "Waiting for the psmdb-restore/restore-$backup_name object to be created"
354+
retry_object=0
355+
until kubectl_bin get psmdb-restore restore-$backup_name >/dev/null 2>&1; do
356+
echo -n .
357+
let retry_object+=1
358+
if [[ ${retry_object} -ge 60 ]]; then
359+
echo "psmdb-restore/restore-$backup_name object was not created."
360+
exit 1
361+
fi
362+
sleep 1
363+
done
364+
echo "OK"
365+
366+
echo -n "Waiting psmdb-restore/restore-${backup_name} to reach state \"${target_state}\" "
351367
retry=0
352-
echo -n "waiting psmdb-restore/restore-${backup_name} to reach ${target_state} state"
353-
local current_state=
354-
until [[ ${current_state} == ${target_state} ]]; do
355-
sleep 0.5
368+
retry_count=$((wait_time / 60))
369+
until kubectl wait psmdb-restore restore-${backup_name} --for=jsonpath='{.status.state}'=${target_state} --timeout=60s >/dev/null 2>&1; do
356370
echo -n .
357371
let retry+=1
358372
current_state=$(kubectl_bin get psmdb-restore restore-$backup_name -o jsonpath='{.status.state}')
359373
if [[ ${ok_if_ready} == 1 && ${current_state} == 'ready' ]]; then
360374
echo "OK"
361375
break
362376
fi
363-
if [[ $retry -ge $wait_time || ${current_state} == 'error' ]]; then
377+
if [[ ${retry} -ge ${retry_count} || ${current_state} == 'error' ]]; then
364378
kubectl_bin logs ${OPERATOR_NS:+-n $OPERATOR_NS} $(get_operator_pod) \
365379
| grep -v 'level=info' \
366380
| grep -v 'level=debug' \
367381
| grep -v 'Getting tasks for pod' \
368382
| grep -v 'Getting pods from source' \
369383
| tail -100
370384
kubectl_bin get psmdb-restore restore-${backup_name} -o yaml
385+
kubectl_bin describe psmdb-restore restore-${backup_name}
371386
echo "Restore object restore-${backup_name} is in ${current_state} state."
372387
echo something went wrong with operator or kubernetes cluster
373388
exit 1
@@ -376,7 +391,7 @@ wait_restore() {
376391
echo "OK"
377392
set_debug
378393

379-
if [ $wait_cluster_consistency -eq 1 ]; then
394+
if [[ $wait_cluster_consistency -eq 1 ]]; then
380395
wait_cluster_consistency "${cluster_name}"
381396
fi
382397
}
@@ -1023,6 +1038,14 @@ delete_crd() {
10231038
kubectl_bin delete -f "${src_dir}/deploy/$rbac_yaml" --ignore-not-found || true
10241039
}
10251040

1041+
delete_backups() {
1042+
desc 'Delete psmdb-backup'
1043+
if [ $(kubectl_bin get psmdb-backup --no-headers | wc -l) != 0 ]; then
1044+
kubectl_bin get psmdb-backup
1045+
kubectl_bin delete psmdb-backup --all
1046+
fi
1047+
}
1048+
10261049
destroy() {
10271050
local namespace="$1"
10281051
local ignore_logs="${2:-true}"
@@ -1043,6 +1066,8 @@ destroy() {
10431066
#TODO: maybe will be enabled later
10441067
#diff $test_dir/compare/operator.log $tmp_dir/operator.log
10451068

1069+
delete_backups
1070+
10461071
delete_crd
10471072

10481073
destroy_cert_manager || true

e2e-tests/pitr-physical/run

+2
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ main() {
7878
sleep 10
7979
done
8080

81+
sleep 10
82+
8183
check_recovery $backup_name_minio-2 date "${last_chunk}" "-2nd" "$cluster"
8284

8385
run_backup $backup_name_minio 3 physical

0 commit comments

Comments
 (0)