• A new version of Full Calendar is now available.

    See the details here

Best practice, send to private list once with scheduled email plugin

wouter.galia

New Member
Hi

I use the scheduled email task plugin to send to a list. The list should only be accessible by doctors because the information in the list is confidential. One of the biggest problems that I encounter is that emails are sent multiple times. I can not replicate this problem, all my personal tests work fine. The ?sent? field is updated when sent, because of the condition (only if not sent) the email only goes out once.

However when running live with allot more activity and a cron every 15 min almost all emails are sent more than once (up to 8 times). Every email contains a direct login link to see personal reports. Could it be that the cron is triggered multiple times before knowing that the ?sent? field is updated?

It is difficult to understand the cause because the problems are not very consistent. Can you give me some advice on what the best practice would be to avoid these problems?
 
Also, are you running the cron on a copy of the list that pre-filters on your 'sent' field?

One common problem with cron tasks is the size of the dataset. When we do the row selection for a cron job, we don't do any pagination, so it'll select the whole table, subject to whatever pre-filters are on your list. That can result in very long processing times, if you have thousands (or tens of thousand, or ...) of rows.

What I recommend is copying your List, and setting a pre-filter on that, to filter out your 'sent' rows.

And to expand on the "run gating". With that enabled, we won't start another run of the cron job if there is already one running. May not be your problem, with a 15 minute run, but could be if you have a lot of rows. So what could be happening is that one task starts, takes more than 15 mins to run, another one starts, etc. And because we only update the "sent" field in a single query once all row processing is done, it's possible more than one task could send the same email. By setting run gating, you make sure that won't happen.
 
Thank you, this really helps. I created a new list with an extra prefilter on 'sent' and activated run gating. I will report back when the next batch is sent out.
 
Back
Top