Package: drupal7
Version: 7.14-1~bpo60+1
Severity: normal
Tags: patch

When running a multisite installation, the provided
/usr/share/drupal7/scripts/cron.sh ignores failure conditions in all
but the last found sites - And for this last site, it just reports an
unhelpful "/USR/SBIN/CRON[8921]: (CRON) error (grandchild #8938 failed
with exit status 22)" message in the logs.

The attached patch fixes this condition, along with #659848 (CRON_KEY
persisting between sites). Yes, it will be more verbose in case of
error, but it will no longer ignore curl's --fail switch.

Thanks,

-- System Information:
Debian Release: 6.0.6
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: i386 (i686)

Kernel: Linux 2.6.32-5-openvz-686 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages drupal7 depends on:
ii  apache2              2.2.16-6+squeeze8   Apache HTTP Server metapackage
ii  apache2-mpm-prefork  2.2.16-6+squeeze8   Apache HTTP Server - traditional n
ii  curl                 7.21.0-2.1+squeeze2 Get a file from an HTTP, HTTPS or 
ii  dbconfig-common      1.8.46+squeeze.0    common framework for packaging dat
ii  debconf [debconf-2.0 1.5.36.1            Debian configuration management sy
ii  mysql-client-5.1 [vi 5.1.63-0+squeeze1   MySQL database client binaries
ii  php5                 5.3.3-7+squeeze14   server-side, HTML-embedded scripti
ii  php5-gd              5.3.3-7+squeeze14   GD module for php5
ii  php5-mysql           5.3.3-7+squeeze14   MySQL module for php5
ii  php5-pgsql           5.3.3-7+squeeze14   PostgreSQL module for php5
ii  postfix [mail-transp 2.7.1-1+squeeze1    High-performance mail transport ag
ii  postgresql-client    8.4.13-0squeeze1    front-end programs for PostgreSQL 
ii  postgresql-client-8. 8.4.13-0squeeze1    front-end programs for PostgreSQL 
ii  wwwconfig-common     0.2.1               Debian web auto configuration

Versions of packages drupal7 recommends:
ii  mysql-server           5.1.63-0+squeeze1 MySQL database server (metapackage
ii  mysql-server-5.1 [mysq 5.1.63-0+squeeze1 MySQL database server binaries and
ii  postgresql             8.4.13-0squeeze1  object-relational SQL database (su

drupal7 suggests no packages.

-- debconf information:
  drupal7/pgsql/changeconf: false
  drupal7/dbconfig-remove:
  drupal7/pgsql/authmethod-user:
  drupal7/db/basepath:
  drupal7/upgrade-error: abort
* drupal7/dbconfig-install: false
  drupal7/purge: false
  drupal7/upgrade-backup: true
  drupal7/pgsql/manualconf:
  drupal7/database-type:
  drupal7/internal/reconfiguring: false
  drupal7/install-error: abort
  drupal7/remote/port:
  drupal7/remove-error: abort
  drupal7/mysql/admin-user: root
  drupal7/pgsql/admin-user: postgres
  drupal7/missing-db-package-error: abort
  drupal7/dbconfig-upgrade: true
  drupal7/remote/host:
  drupal7/db/app-user: drupal7
  drupal7/pgsql/authmethod-admin: ident
  drupal7/db/dbname: drupal7
  drupal7/pgsql/no-empty-passwords:
  drupal7/internal/skip-preseed: true
  drupal7/passwords-do-not-match:
  drupal7/dbconfig-reinstall: false
  drupal7/mysql/method: unix socket
  drupal7/pgsql/method: unix socket
  drupal7/remote/newhost:
--- cron.sh.orig        2012-10-01 11:13:06.000000000 -0500
+++ cron.sh     2012-10-01 11:05:20.000000000 -0500
@@ -2,6 +2,8 @@
 
 for site in /etc/drupal/7/sites/* ; do
        BASE_URL=""
+       CRON_KEY=""
+       FULL_URL=""
 
        if [ ! "`basename $site`" = "all" ]; then
                for file in $site/baseurl.php $site/settings.php; do
@@ -19,9 +21,17 @@
                fi
 
                if [ "X$CRON_KEY" = "X" ] ; then
-                       curl --fail --silent --compressed --location 
$BASE_URL/cron.php
+                       FULL_URL="$BASE_URL/cron.php"
                else
-                       curl --fail --silent --compressed --location 
$BASE_URL/cron.php?cron_key=$CRON_KEY
+                       FULL_URL="$BASE_URL/cron.php?cron_key=$CRON_KEY"
+               fi
+
+               if curl -S --fail --silent --compressed --location $FULL_URL ; 
then
+                       # Success!
+                       true
+               else
+                       echo "Error running the periodic maintenance for $site: 
CURL exit code $?"
+                       echo "Requested URL: $FULL_URL"
                fi
        fi
 done

Reply via email to