Closed Bug 236842 Opened 20 years ago Closed 15 years ago

Marking a lot of messages as junk or not junk freezes the app

Categories

(MailNews Core :: Filters, defect)

x86
Windows XP
defect
Not set
major

Tracking

(Not tracked)

RESOLVED INVALID

People

(Reporter: mscott, Unassigned)

References

(Blocks 1 open bug)

Details

(Keywords: perf)

When manually marking a set of messages as junk or not junk (i.e. during the
training phase), the DBView tells the junk plugin to classify each message
individually. It sits in a tight for loop in nsMsgDBView::ApplyCommandToIndices
calling nsBayesianFilter::SetMessageClassification.

This causes the junk mail plugin to end up firing n message fetch urls all at
the same time. If I select a 1,000 message folder and mark them as not junk, we
create 1,000 urls and they all try to load at the same time.

We should be queuing these up and running one url at a time.

The bayesian filter already has a class which can be used for classifying a
batch of message URIs. It even trys to re-use the same tokenizer object to
reduce memory allocations. We need to expand that class to also work with an
array of message URIs that the user has changed the junk status on.

Fixing this bug entails two parts:

1) Changings nsMsgDBView to make a single call with all of the URIs the user has
marked as junk/not junk.

2) nsBayesianFilter needs to merge the user classifier:
nsBayesianFilter::SetMessageClassification which creates a single
MessageObserver class which is used to listen for the parsed tokens and add them
to the training set

with

nsBayesianFilter::ClassifyMessages which uses a MessageClassifier class which
knows how to deal with an array of message URIs requiring classification.
bug 179504 seems like a dup
other possible dupes are bug 179504 and bug 135000
Product: MailNews → Core
*** Bug 302530 has been marked as a duplicate of this bug. ***
Scott, David, comment 0 is still accurate, correct?  I don't see any bugs/fixes that have attempted to address these issues.
Severity: normal → major
Keywords: perf
QA Contact: laurel → filters
Product: Core → MailNews Core
Assignee: mscott → nobody
Kent how difficult would this be to implement ?
I don't think that is accurate anymore. Manual marking is done in junkCommands.js, which sends off URLs one at a time. See bug 324953.
Fixing as invalid based on comment 6
Status: NEW → RESOLVED
Closed: 15 years ago
Resolution: --- → INVALID
You need to log in before you can comment on or make changes to this bug.