[Bill Allombert]
> We move the popcon cronjob to cron.dayly, and pick a random weekday
> for each submitter. The dayly cronjob check if it is running on this
> weekday before reporting, else it abort immediatly.

Here is a draft patch to implement this.  It does not address the
renaming/moving of the cron job from cron.weekly to cron.daily.  This
need to be handled as well.  I hope splitting the submissions into 7
equal slots will reduce the load enough for all submissions to make it
thought.  If not, we might need to spread it out even further.

Index: cron.weekly
===================================================================
RCS file: /cvsroot/popcon/popularity-contest/debian/cron.weekly,v
retrieving revision 1.25
diff -u -3 -p -r1.25 cron.weekly
--- cron.weekly 18 Mar 2008 08:38:32 -0000      1.25
+++ cron.weekly 19 Mar 2008 11:38:54 -0000
@@ -26,6 +26,11 @@ if [ -n "$HTTP_PROXY" ]; then
   export http_proxy="$HTTP_PROXY";
 fi
 
+# Only run on the given day, to spread the load on the server a bit
+if [ "$DAY" ] && [ "$DAY" != "$(date +%w)" ] ; then
+  exit 0
+fi
+
 # keep old logs
 cd /var/log
 umask 022
Index: postinst
===================================================================
RCS file: /cvsroot/popcon/popularity-contest/debian/postinst,v
retrieving revision 1.19
diff -u -3 -p -r1.19 postinst
--- postinst    29 Oct 2006 08:58:26 -0000      1.19
+++ postinst    19 Mar 2008 11:38:54 -0000
@@ -34,8 +34,15 @@ generate_id() {
         fi
 }
 
+# Select a random day to submit on, to spread the load over time, unless it is 
already set.
+select_random_day() {
+               RANDOM=$(dd if=/dev/urandom count=1 2> /dev/null | cksum | cut 
-c"1-5")
+               DAY=$(($RANDOM % 7))
+}
+
 generate_conffile() {
         generate_id
+       select_random_day
        cat <<-EOF >$conffile
                # Config file for Debian's popularity-contest package.
                #
@@ -50,6 +57,7 @@ generate_conffile() {
                MY_HOSTID="$MY_HOSTID"
                PARTICIPATE="$PARTICIPATE"
                USEHTTP="yes"
+               DAY="$DAY"
        EOF
 
        # preseeding is only allowed on first time install
@@ -77,6 +85,13 @@ case "$1" in
             # of behaviour with stdin. version 1.17, 2004-04-12.
               *-)  MY_HOSTID="${MY_HOSTID%  -}";;
             esac;
+
+           # If DAY is not set, add it.
+           if [ -z "$DAY" ] ; then
+               select_random_day
+               echo "DAY=\"$DAY\"" >> $conffile
+           fi
+
            # Replace only if the content changed, to avoid changing the
            # config file date when no change was done.
 

Happy hacking,
-- 
Petter Reinholdtsen



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to