From: bbaetz%student.usyd.edu.au <>
Date: Mon, 4 Mar 2002 06:06:19 +0000 (+0000)
Subject: Bug 106377 - processmail rescanall should use lastdiffed
X-Git-Tag: bugzilla-2.16rc1~195
X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=71cf359f2a6fb43f6cc529fb36f41000a7fd796e;p=thirdparty%2Fbugzilla.git
Bug 106377 - processmail rescanall should use lastdiffed
r=justdave, ddkilzer@theracingworld.com
---
diff --git a/editcomponents.cgi b/editcomponents.cgi
index 4d4079626d..310ce5f019 100755
--- a/editcomponents.cgi
+++ b/editcomponents.cgi
@@ -787,7 +787,8 @@ if ($action eq 'update') {
}
SendSQL("UPDATE bugs
- SET component=" . SqlQuote($component) . "
+ SET component=" . SqlQuote($component) . ",
+ delta_ts = delta_ts
WHERE component=" . SqlQuote($componentold) . "
AND product=" . SqlQuote($product));
SendSQL("UPDATE components
diff --git a/editgroups.cgi b/editgroups.cgi
index dfcca8a3f5..62bb4b501e 100755
--- a/editgroups.cgi
+++ b/editgroups.cgi
@@ -518,7 +518,7 @@ if ($action eq 'delete') {
}
SendSQL("SELECT bug_id FROM bugs WHERE (groupset & $bit)");
if (FetchOneColumn()) {
- SendSQL("UPDATE bugs SET groupset=(groupset-$bit) " .
+ SendSQL("UPDATE bugs SET groupset=(groupset-$bit), delta_ts=delta_ts " .
"WHERE (groupset & $bit)");
print "All bugs have had group bit $bit cleared. Any of these " .
"bugs that were not also in another group are now " .
diff --git a/editmilestones.cgi b/editmilestones.cgi
index 0bd1dac142..b7ec7316f4 100755
--- a/editmilestones.cgi
+++ b/editmilestones.cgi
@@ -530,7 +530,8 @@ if ($action eq 'update') {
exit;
}
SendSQL("UPDATE bugs
- SET target_milestone=" . SqlQuote($milestone) . "
+ SET target_milestone=" . SqlQuote($milestone) . ",
+ delta_ts=delta_ts
WHERE target_milestone=" . SqlQuote($milestoneold) . "
AND product=" . SqlQuote($product));
SendSQL("UPDATE milestones
diff --git a/editproducts.cgi b/editproducts.cgi
index 536102f817..c11c65db71 100755
--- a/editproducts.cgi
+++ b/editproducts.cgi
@@ -1004,7 +1004,7 @@ if ($action eq 'update') {
exit;
}
- SendSQL("UPDATE bugs SET product=$qp WHERE product=$qpold");
+ SendSQL("UPDATE bugs SET product=$qp, delta_ts=delta_ts WHERE product=$qpold");
SendSQL("UPDATE components SET program=$qp WHERE program=$qpold");
SendSQL("UPDATE products SET product=$qp WHERE product=$qpold");
SendSQL("UPDATE versions SET program=$qp WHERE program=$qpold");
diff --git a/editversions.cgi b/editversions.cgi
index 8c5e71c43d..19ec338c32 100755
--- a/editversions.cgi
+++ b/editversions.cgi
@@ -529,7 +529,8 @@ if ($action eq 'update') {
exit;
}
SendSQL("UPDATE bugs
- SET version=" . SqlQuote($version) . "
+ SET version=" . SqlQuote($version) . ",
+ delta_ts = delta_ts
WHERE version=" . SqlQuote($versionold) . "
AND product=" . SqlQuote($product));
SendSQL("UPDATE versions
diff --git a/processmail b/processmail
index 2bea93da63..b5f85e6957 100755
--- a/processmail
+++ b/processmail
@@ -831,15 +831,25 @@ if ($#ARGV == 1) {
}
if ($ARGV[0] eq "rescanall") {
- print "
Collecting bug ids...\n";
- SendSQL("select bug_id from bugs where to_days(now()) - to_days(delta_ts) <= 2 order by bug_id");
+ print "Collecting bug ids...\n";
+ SendSQL("select bug_id, lastdiffed, delta_ts from bugs where lastdiffed < delta_ts AND delta_ts < date_sub(now(), INTERVAL 30 minute) order by bug_id");
my @list;
while (my @row = FetchSQLData()) {
+ my $time = $row[2];
+ if ($time =~ /^(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)$/) {
+ $time = "$1-$2-$3 $4:$5:$6";
+ }
+ print STDERR "Bug $row[0] has unsent mail. lastdiffed is $row[1], delta_ts is $time.\n";
push @list, $row[0];
}
+ if (scalar(@list) > 0) {
+ print STDERR scalar(@list) . " bugs found with possibly unsent mail\n";
+ print STDERR "Updating bugs, sending mail if required\n";
+ } else {
+ print "All appropriate mail appears to have been sent\n"
+ }
foreach my $id (@list) {
if (detaint_natural($id)) {
- print "
Doing bug $id\n";
ProcessOneBug($id);
}
}
diff --git a/sanitycheck.cgi b/sanitycheck.cgi
index c85a3668e8..902557bb8a 100755
--- a/sanitycheck.cgi
+++ b/sanitycheck.cgi
@@ -582,6 +582,30 @@ if (@badbugs > 0) {
join (", ", @badbugs));
}
+###########################################################################
+# Unsent mail
+###########################################################################
+
+Status("Checking for unsent mail");
+
+@badbugs = ();
+
+SendSQL("SELECT bug_id " .
+ "FROM bugs WHERE lastdiffed < delta_ts AND ".
+ "delta_ts < date_sub(now(), INTERVAL 30 minute) ".
+ "ORDER BY bug_id");
+
+while (@row = FetchSQLData()) {
+ my ($id) = (@row);
+ push(@badbugs, $id);
+}
+
+if (@badbugs > 0) {
+ Alert("Bugs that have changes but no mail sent for at least half an hour: " .
+ join (", ", @badbugs));
+ print("Run processmail rescanall
to fix this
\n"); +} + ########################################################################### # End ###########################################################################