[Piuparts-commits] [SCM] piuparts git repository branch, piatti, updated. 0.47-22-g77d3c57
Andreas Beckmann
debian at abeckmann.de
Sun Nov 4 14:13:31 UTC 2012
The following commit has been merged in the piatti branch:
commit ccafcf0f8aa90f207db78d25f1f7025dd5a12c3f
Author: Andreas Beckmann <debian at abeckmann.de>
Date: Fri Oct 5 22:09:19 2012 +0200
expire logfiles marked for recycling after some time
if they can't be recycled due to unsatisfied deps ...
... move them to dependency-failed-testing state instead
Signed-off-by: Andreas Beckmann <debian at abeckmann.de>
diff --git a/README.txt b/README.txt
index ce78fb2..9bcf8ac 100644
--- a/README.txt
+++ b/README.txt
@@ -506,7 +506,7 @@ values are set in the scripts.
* "reschedule-untestable-days" (global) sets the rescheduling delay for untestable packages (e.g. due to unsatisfied dependencies).
-* "reschedule-old-days" (global, section) and the following three settings define the rescheduling scheme for passed and failed packages.
+* "reschedule-old-days" (global, section) and the following five settings define the rescheduling scheme for passed and failed packages. Logs that are marked for recycling but are older than expire-*-days will be deleted, moving the package to dependency-failed-testing state. expire-*-days needs to be greater than reschedule-*-days to enable expiration.
* "reschedule-old-count" (global, section)
@@ -514,6 +514,10 @@ values are set in the scripts.
* "reschedule-fail-count" (global, section)
+* "expire-old-days" (global, section)
+
+* "expire-fail-days" (global, section)
+
* "auto-reschedule" (section) can be set to "no" to disable rescheduling of passed and failed packages.
diff --git a/conf/piuparts.conf.sample b/conf/piuparts.conf.sample
index c838d7d..fe9ab83 100644
--- a/conf/piuparts.conf.sample
+++ b/conf/piuparts.conf.sample
@@ -20,12 +20,15 @@ doc-root = /piuparts/
master-command = python /usr/share/piuparts/piuparts-master
idle-sleep = 300
max-tgz-age = 604800
+expire-old-days = 120
reschedule-old-days = 90
reschedule-old-count = 150
+expire-fail-days = 45
reschedule-fail-days = 30
reschedule-fail-count = 25
#bts-from
+
[sid]
precedence = 1
description = "Debian sid / main"
diff --git a/debian/changelog b/debian/changelog
index 40cbbd5..dabc5e3 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -11,6 +11,8 @@ piuparts (0.48) UNRELEASED; urgency=low
- Add debsums, processes, and broken-symlinks check after the first purge
in --install-purge-install mode.
- Add --install-recommends option, disabled by default.
+ * piuparts.conf:
+ - New per section settings: expire-old-days, expire-fail-days.
* piuparts-master.py:
- Enable recycling before initializing the real package db.
- Enable logging by default and set default log-file to
@@ -18,6 +20,10 @@ piuparts (0.48) UNRELEASED; urgency=low
* piuparts-slave.py:
* piuparts-report.py:
* detect_piuparts_issues: Catch the chroot running out of space.
+ * reschedule_oldest_logs: Implement logfile expiration. Delete logfiles that
+ are marked for recycling and are older than expire-{old,fail}-days. This
+ will put the package into dependency-failed-testing or similar state.
+ expire-*-days needs to be greater than reschedule-*-days to enable this.
* New bug template: copyright_file_missing_after_upgrade.
* New known problem: Installing something over existing symlinks.
diff --git a/master-bin/reschedule_oldest_logs b/master-bin/reschedule_oldest_logs
index 06fd99d..0c6fdfc 100755
--- a/master-bin/reschedule_oldest_logs
+++ b/master-bin/reschedule_oldest_logs
@@ -42,9 +42,14 @@ get_config_value SECTIONS global sections
#
# reschedule 200 oldest log files, if they are older than 180 days
# reschedule 25 oldest fail log files, if they are older than 30 days
+# delete $reschedule-old-count oldest logfiles, if they are scheduled
+# for recycling and older than $expire-old-days
+# and $expire-old-days > $reschedule-old-days
#
+get_config_value EXPIRE_AGE global expire-old-days 0
get_config_value AGE global reschedule-old-days 180
get_config_value COUNT global reschedule-old-count 200
+get_config_value EXPIRE_FAIL_AGE global expire-fail-days 0
get_config_value FAIL_AGE global reschedule-fail-days 30
get_config_value FAIL_COUNT global reschedule-fail-count 25
@@ -63,9 +68,11 @@ list_logs()
TOTAL=0
+TOTAL_EXPIRED=0
UNSCHEDULE=0
LOGS=$(mktemp)
OBSOLETE=$(mktemp)
+EXPIRED=$(mktemp)
UNSORTED=$(mktemp)
OLDPWD=$(pwd)
for SECTION in $SECTIONS ; do
@@ -83,14 +90,28 @@ for SECTION in $SECTIONS ; do
# Reschedule old logs
>$LOGS
+ >$EXPIRED
get_config_value RESCHEDULE $SECTION auto-reschedule $AUTO_RESCHEDULE
if [ "$RESCHEDULE" = "yes" ]; then
+ get_config_value _EXPIRE_AGE $SECTION expire-old-days $EXPIRE_AGE
get_config_value _AGE $SECTION reschedule-old-days $AGE
get_config_value _COUNT $SECTION reschedule-old-count $COUNT
+ get_config_value _EXPIRE_FAIL_AGE $SECTION expire-fail-days $EXPIRE_FAIL_AGE
get_config_value _FAIL_AGE $SECTION reschedule-fail-days $FAIL_AGE
get_config_value _FAIL_COUNT $SECTION reschedule-fail-count $FAIL_COUNT
# FIXME: we ignore bugged here - ptyhon-bts is really the way to go
>$UNSORTED
+ if [ "$_EXPIRE_AGE" -gt "$_AGE" ]; then
+ list_logs $_EXPIRE_AGE $_COUNT pass fail affected >> $UNSORTED
+ fi
+ if [ "$_EXPIRE_FAIL_AGE" -gt "$_FAIL_AGE" ]; then
+ list_logs $_EXPIRE_FAIL_AGE $_FAIL_COUNT fail affected >> $UNSORTED
+ fi
+ for log in $(sort -u $UNSORTED) ; do
+ # the log needs to be scheduled for recycling before it gets expired
+ test -f "recycle/${log#*/}" && echo "$log"
+ done > $EXPIRED
+ >$UNSORTED
list_logs $_AGE $_COUNT pass fail affected >> $UNSORTED
list_logs $_FAIL_AGE $_FAIL_COUNT fail affected >> $UNSORTED
for log in $(sort -u $UNSORTED) ; do
@@ -99,16 +120,22 @@ for SECTION in $SECTIONS ; do
done > $LOGS
fi
- if [ -s $LOGS ] || [ -s $OBSOLETE ]; then
+ if [ -s $LOGS ] || [ -s $OBSOLETE ] || [ -s $EXPIRED ]; then
RCOUNT=$(wc -l $LOGS | awk '{ print $1 }')
TOTAL=$(($TOTAL + $RCOUNT))
+ ECOUNT=$(wc -l $EXPIRED | awk '{ print $1 }')
+ TOTAL_EXPIRED=$(($TOTAL_EXPIRED + $ECOUNT))
UCOUNT=$(wc -l $OBSOLETE | awk '{ print $1 }')
UNSCHEDULE=$(($UNSCHEDULE + $UCOUNT))
- echo "$SECTION: $RCOUNT/$UCOUNT"
+ echo "$SECTION: $RCOUNT/$ECOUNT/$UCOUNT"
if [ -s $LOGS ]; then
ls -dtl $(cat $LOGS)
ln -f $(cat $LOGS) recycle/
fi
+ if [ -s $EXPIRED ]; then
+ ls -dtl $(cat $EXPIRED)
+ rm -fv $(cat $EXPIRED)
+ fi
if [ -s $OBSOLETE ]; then
rm -fv $(cat $OBSOLETE)
fi
@@ -120,11 +147,15 @@ for SECTION in $SECTIONS ; do
done
rm $LOGS
rm $OBSOLETE
+rm $EXPIRED
rm $UNSORTED
if [ "$TOTAL" -gt "0" ]; then
echo "Rescheduled $TOTAL logs."
fi
+if [ "$TOTAL_EXPIRED" -gt "0" ]; then
+ echo "Deleted $TOTAL_EXPIRED expired logs."
+fi
if [ "$UNSCHEDULE" -gt "0" ]; then
echo "Cancelled $UNSCHEDULE outdated rescheduling requests."
fi
--
piuparts git repository
More information about the Piuparts-commits
mailing list