Found nn messages in the processing-messages database

Mark Sapiro mark at msapiro.net
Thu Apr 23 02:28:11 IST 2009


Julian Field wrote:
>
>On 22/4/09 15:55, Mark Sapiro wrote:
>> 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.
>Wonderful!
>In that case, a big "Well done" to whomever noticed that all the 
>messages stuck in the database were all numeric before the decimal 
>point, as that's what finally alerted me to the possibility of this 
>being a Perl bug.
>
>>   I am now trying the
>> alternative. I will report back this evening (my time - tomorrow UTC).
>>    
>Thanks. If the alternative works, it will be faster.


Unfortunately, the

    $sth->execute("$id");

patch does not solve the problem, so I have reverted to the

    $MailScanner::ProcDBH->do("DELETE FROM processing WHERE id='$id')");

patch which does.

-- 
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