Skip to content

Commit c446332

Browse files
authored
Merge pull request kubernetes#95563 from tosi3k/log-dump-verification
Return non-zero code on logexporter failures
2 parents 44f5a75 + e42a8db commit c446332

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

cluster/log-dump/log-dump.sh

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,14 @@ readonly windows_node_otherfiles="C:\\Windows\\MEMORY.dmp"
6363
# file descriptors for large clusters.
6464
readonly max_dump_processes=25
6565

66+
# Indicator variable whether we experienced a significant failure during
67+
# logexporter creation or execution.
68+
logexporter_failed=0
69+
70+
# Percentage of nodes that must be logexported successfully (otherwise the
71+
# process will exit with a non-zero exit code).
72+
readonly log_dump_expected_success_percentage="${LOG_DUMP_EXPECTED_SUCCESS_PERCENTAGE:-0}"
73+
6674
# TODO: Get rid of all the sourcing of bash dependencies eventually.
6775
function setup() {
6876
KUBE_ROOT=$(dirname "${BASH_SOURCE[0]}")/../..
@@ -546,6 +554,7 @@ function dump_nodes_with_logexporter() {
546554
echo 'Failed to create logexporter daemonset.. falling back to logdump through SSH'
547555
"${KUBECTL}" delete namespace "${logexporter_namespace}" || true
548556
dump_nodes "${NODE_NAMES[@]}"
557+
logexporter_failed=1
549558
return
550559
fi
551560

@@ -595,6 +604,7 @@ function dump_nodes_with_logexporter() {
595604
echo 'Final attempt to list marker files failed.. falling back to logdump through SSH'
596605
"${KUBECTL}" delete namespace "${logexporter_namespace}" || true
597606
dump_nodes "${NODE_NAMES[@]}"
607+
logexporter_failed=1
598608
return
599609
fi
600610
sleep 2
@@ -611,6 +621,11 @@ function dump_nodes_with_logexporter() {
611621
done
612622
fi
613623

624+
# If less than a certain ratio of the nodes got logexported, report an error.
625+
if [[ $(((${#NODE_NAMES[@]} - ${#failed_nodes[@]}) * 100)) -lt $((${#NODE_NAMES[@]} * log_dump_expected_success_percentage )) ]]; then
626+
logexporter_failed=1
627+
fi
628+
614629
# Delete the logexporter resources and dump logs for the failed nodes (if any) through SSH.
615630
"${KUBECTL}" get pods --namespace "${logexporter_namespace}" || true
616631
"${KUBECTL}" delete namespace "${logexporter_namespace}" || true
@@ -675,6 +690,9 @@ function main() {
675690
fi
676691

677692
detect_node_failures
693+
if [[ ${logexporter_failed} -ne 0 && ${log_dump_expected_success_percentage} -gt 0 ]]; then
694+
return 1
695+
fi
678696
}
679697

680698
main

0 commit comments

Comments
 (0)