summaryrefslogtreecommitdiff
path: root/bin/cleanup
diff options
context:
space:
mode:
Diffstat (limited to 'bin/cleanup')
-rwxr-xr-xbin/cleanup49
1 files changed, 19 insertions, 30 deletions
diff --git a/bin/cleanup b/bin/cleanup
index 206b84c..57c4e07 100755
--- a/bin/cleanup
+++ b/bin/cleanup
@@ -19,41 +19,30 @@ if [ -s "${work_dir}/build-master-sanity" ]; then
exit
fi
-# only keep 10 newest logs per failed package and fail_reason
+# only keep newest logs per failed package and fail_reason
# shellcheck disable=SC2016
{
- printf 'SELECT'
- printf ' CONCAT(`failed_builds`.`reason`,"-",`failed_builds`.`build_assignment`),'
- printf '`failed_builds`.`id`,'
- printf '`failed_builds`.`log_file`'
+ printf 'DELETE `failed_builds`'
printf ' FROM `failed_builds`'
- printf ' WHERE `log_file_exists`'
- printf ' ORDER BY'
- printf ' `failed_builds`.`reason`,'
- printf '`failed_builds`.`build_assignment`,'
- printf '`failed_builds`.`date` DESC;\n'
+ printf ' LEFT JOIN ('
+ printf 'SELECT'
+ printf ' `failed_builds`.`reason`,'
+ printf '`failed_builds`.`build_assignment`,'
+ printf ' MAX(`failed_builds`.`date`) AS `max_date`'
+ printf ' FROM `failed_builds`'
+ printf ' GROUP BY CONCAT(`failed_builds`.`reason`,"-",`failed_builds`.`build_assignment`)'
+ printf ') AS `last_log_q`'
+ printf ' AND `last_log_q`.`%s`=`failed_builds`.`%s`' \
+ 'max_date' 'date' \
+ 'reason' 'reason' \
+ 'build_assignment' 'build_assignment' \
+ | sed '
+ s/^ AND / ON /
+ '
+ printf ' WHERE `last_log_q`.`reason` IS NULL;\n'
+
} | \
- mysql_run_query | \
- {
- count=0
- old_group=''
- while read -r group id log_file; do
- if [ "${group}" != "${old_group}" ]; then
- count=0
- old_group="${group}"
- fi
- if [ ${count} -ge 10 ]; then
- rm "${build_log_directory}/error/${log_file}"
- printf '%s,' "${id}"
- fi
- count=$((count+1))
- done
- } | \
- sed '
- s/,$/);\n/
- s/^/DELETE FROM `failed_builds` WHERE `failed_builds`.`id` IN (/
- ' | \
mysql_run_query
# remove logs where package is not broken/locked anymore