Found nn messages in the processing-messages database
Mark Sapiro
mark at msapiro.net
Wed Apr 22 15:55:42 IST 2009
Julian Field wrote:
>
>On 22/4/09 00:43, Mark Sapiro wrote:
>> Julian Fieldwrote:
>>
>>> On 21/4/09 21:11, Mark Sapiro wrote:
>>>
>>>> On Tue, Apr 21, 2009 at 06:58:30PM +0100, Julian Field wrote:
>>>>
>>>>
>>>>> Please also try MailScanner 4.76.15 and let me know how you get on. I
>>>>> have neatened up the code quite a bit.
>>>>>
>>>>> Jules.
>>>>>
>>>>> On 21/4/09 18:04, Julian Field wrote:
>>>>>
>>>>>
>>>>>> In /usr/lib/MailScanner/MailScanner/Message.pm, around line 1243, you
>>>>>> will find a line that says
>>>>>> next if $message->{abandoned};
>>>>>> Please try commenting out that line by putting a '#' at the start of it.
>>>>>>
>>>>>> Then restart MailScanner, and let me know if that solves the problem.
>>>>>>
>>>>>> Thanks for your patience in helping me resolve this issue!
>>>>>>
>>>>>>
>>>> I installed 4.76.15. Am I also supposed to comment the above line in
>>>> 4.76.15 or was that just for 4.76.14? I did not comment the line, and
>>>> I am still seeing messages left in the database.
>>>>
>>>>
>>> It was just for .14. I am really running out of ideas here. There is no
>>> way the thing would fail unless the DELETE was failing.
>>> If it doesn't manage to find the complete message, it doesn't add it to
>>> the database. I made extra doubly sure of that in .15, so I really can't
>>> see how it is getting left in there. If it was doubly added to the
>>> database, it would still get deleted, unless the delete itself was
>>> failing. I wonder if the DBI parameter substitution is handling the
>>> parameter string incorrectly if it's all decimal digits, thinking it's a
>>> number and not a string?
>>>
>>> Here's a patch for 4.76.15 for you to try that will test this hypothesis.
>>>
>>> ---PATCH START---
>>> --- MessageBatch.pm.old 2009-04-21 21:33:37.000000000 +0100
>>> +++ MessageBatch.pm 2009-04-21 21:35:03.000000000 +0100
>>> @@ -1259,7 +1259,8 @@
>>>
>>> foreach $id (keys %gotridof) {
>>> next unless $id;
>>> - $sth->execute($id);
>>> + #$sth->execute($id);
>>> + $MailScanner::ProcDBH->do("DELETE FROM processing WHERE (id='$id')");
>>> }
>>> $sth->finish;
>>>
>>> ---PATCH END---
>>>
>>> As you can see, it's a simple one-liner. Please let me know if it makes
>>> any difference.
>>>
>>
>> I have installed the patch and it is encouraging so far. While it is
>> too soon to say for sure that there won't be any residual entries in
>> the database, I've been running for over 2 hours and processed at
>> least one large batch of outgoing messages, and don't have any yet.
>>
>>
>If it proves that solves the problem, I have another alternative I would
>like you to try as it will be faster, if it works around the Perl bug.
>Instead of
> $MailScanner::ProcDBH->do("DELETE FROM processing WHERE (id='$id')");
>make the line say
> $sth->execute("$id");
>and give that a go. Notice it is *almost* the same as the line was
>before, but with quotes around the $id. That may be enough to circumvent
>this bug.
I am certain the first patch fixed the problem. I am now trying the
alternative. I will report back this evening (my time - tomorrow UTC).
--
Mark Sapiro <mark at msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
More information about the MailScanner
mailing list