Rated 4 out of 5 stars

The potential of this addon is enormous. Even in latest Thunderbird versions there is no function to schedule filters. So I decided to run a very outdated TB v.38 to use "Auto Filter Timer".

But: There is one very big disadvantage (exist in "Shedule Filters" too): No possibility setting filter to 1sec =0.017m (very helpful if local folders should get updated immeditately) without facing extreme CPU rise. This consumption continues increasing.

Possibly addon is lack of release the previous filter results - the shorter the time interval the faster the CPU rising.
Maybe this could be fixed someday. I know it has been a long time since then, but i think its worth it.

I am still using a very old TB! You can safely use 52.9.1

The problem with short repetitions of filter runs is the fact it is done asynchronously on demand. This means that each run spawns a unique process which takes however long it takes... If a new run starts whilst the last one is still ongoing, then you will see twice the CPU activity in the same time-frame

The larger the mailbox, the longer the individual runs will take and the more likely they will overlap. This will definitely cause the escalating CPU rise you have witnessed. This will also cause filter runs to overlap their activity on the data itself, so if one run moves an email and the next run is expecting the same email there (because it was there a moment ago) there is a chance the filter system might be confused or go into a deadlock or other unpredictable behaviour!

Basically, you would need a very good reason to require immediate / continuous filter activity and this plugin is not a solution for that; TB itself would need that function built-in to avoid mad CPU hits

Rated 3 out of 5 stars

Very useful addon. It works well except for a bug at startup.
When restoring the filter schedules, it sometimes assign them to the wrong folder.

Here is a patch for that issue:

==========

$ diff -rU 2 auto_filter_timer-1.03 auto_filter_timer-1.04
diff -rU 2 auto_filter_timer-1.03/content/schedulefilters.js auto_filter_timer-1.04/content/schedulefilters.js
--- auto_filter_timer-1.03/content/schedulefilters.js 2018-04-13 17:59:16.000000000 +0200
+++ auto_filter_timer-1.04/content/schedulefilters.js 2018-06-05 23:36:28.463433487 +0200
@@ -233,13 +233,17 @@
}

-function addFiltersSchedule() {
+function addFiltersSchedule( folder ) {
var stringsBundle = document.getElementById("schedulefilters-string-bundle");
var num = promptNumber(stringsBundle.getString('addSchedule'), stringsBundle.getString('period'), 1, 1440, 30);
if (num != null) {
- _addFiltersSchedule(num, true);
+ _addFiltersSchedule(folder, num, true);
}
}
-function _addFiltersSchedule(num, needSave) {
- var folder = GetFirstSelectedMsgFolder();
+function _addFiltersSchedule(folder, num, needSave) {
+ // If the folder is not specified, this function was called from the Thunderbird interface by the user
+ // If the folder is defined, this function is called from the loadFiltersSchedule function at startup
+ if ( folder == null ) {
+ folder = GetFirstSelectedMsgFolder();
+ }
var idInterval = scheduleFilters(folder, num*60000);
filterSchedule.add(folder, idInterval, num);
@@ -252,5 +256,5 @@
var item = filterSchedule.get(folder);
if (item == null) {
- addFiltersSchedule();
+ addFiltersSchedule( folder );
return;
}
@@ -289,9 +293,10 @@
for (var i=0;i<schedule.length;i++) {
var folderUri = schedule[i].uri;
- if ((msgWindow.openFolder == null) || (msgWindow.openFolder.URI != folderUri)) {
- var folder = MailUtils.getFolderForURI(folderUri);
- gFolderTreeView.selectFolder(folder);
- }
- _addFiltersSchedule(schedule[i].time, false);
+ // NOTE - Selecting a folder to apply a schedule doesn't work at startup, as Thunderbird or other add-ons can modify the selected folder at any time
+ //if ((msgWindow.openFolder == null) || (msgWindow.openFolder.URI != folderUri)) {
+ var folder = MailUtils.getFolderForURI(folderUri);
+ //gFolderTreeView.selectFolder(folder);
+ //}
+ _addFiltersSchedule(folder, schedule[i].time, false);
}
} catch (err) {

==========

This review is for a previous version of the add-on (1.03). 

Hello. Are you suggesting the reference to a folder (as captured at right-click) can be modified at any time by other processes, so that the entire operation can fail / be ascribed to a different folder?! That's crazy stuff

I'd like to update the code, and I can see what is to be added and removed, but I don't have an IDE / helper program that would apply that patch. Could you help with that, please?