[TYPO3-german] Bug in direct mail, der zur permanenten Versendung an 50 Empfänger führt

Alexander Bohndorf bohndorf at sitegeist.de
Mon Aug 14 16:21:01 CEST 2006


Wir haben einen Kunden, der ca. 16.000 Newsletter-Empfänger hat und haben 
regelmäßig Mailings durchgeführt.

Beim letzten Mailing blieb der Cronjob bei ca. 400 Adressen stehen und 
versendete jede Minute permanent wieder an dieselben 50 Empfänger.

Ursache ist, dass direct  mail an einem Eintrag in der Tabelle 
sys_dmail_maillog erkennt, ob er bereits an einen Empfänger versendet hat. 
Diese Tabelle war mit ca. 107.000 Datensätzen an die 4 GB-Grenze für eine 
Tabelle gestoßen. MySQL hat einen "table full"-Fehler beim Insert-Statement 
geliefert, der aber einfach ignoriert wurde.
Nach einer Minute startet der Cronjob erneut und holt sich die 50 ersten 
Empfänger, die noch keinen Newsletter bekommen haben.
Das würde er jetzt noch tun, wenn wir ihn nicht gestoppt hätten.

Der Bug ist zu finden in class.t3lib_dmailer::dmailer_addToMailLog in der 
Zeile:
$GLOBALS['TYPO3_DB']->exec_INSERTquery('sys_dmail_maillog', $insertFields);

Hier muss der Rückgabewert überprüft werden und im Fehlerfall muss die 
gesamte Newsletterversendung abgebrochen werden und der Cronjob muss bei der 
nächsten Ausführung daran gehindert werden, wieder zu versenden.

Ich werde das als Bug reporten, dachte nur, dass das für den einen oder 
anderen von euch interessant sein könnte, da das natürlich für jedes direct 
mail Projekt eine tickende Zeitbombe darstellt.

Schnelle Abhilfe: Nach jedem Mailing die Tabelle leeren (oder nur die 
Datensätze mit mid=uid des letzten Mailings stehen lassen).

Viele Grüße,

Alexander Bohndorf 





More information about the TYPO3-german mailing list