1. Fabrik 3.7 is now available. This version contains critical security updates, please update as soon as possible. Please remember to backup your site before updating, we also recommend testing your updates on development sites if possible.
  2. We had to restore the site around midday (CST) on Wed 7/26 from a backup approximately 8 hours old. So a few posts in the forums were lost. You may want to check to see if you need to re-post anything.

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

Discussion in 'Professional Support' started by wouter.galia, May 25, 2017.

  1. wouter.galia

    wouter.galia New Member

    Level: Professional
    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?
     
  2. cheesegrits

    cheesegrits Support Gopher Staff Member

    Level: Community
    Do you have "run gating" enabled on the cron task?

    -- hugh
     
  3. cheesegrits

    cheesegrits Support Gopher Staff Member

    Level: Community
    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.
     
  4. wouter.galia

    wouter.galia New Member

    Level: Professional
    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.
     

Share This Page