[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