What seems to be happening is that upon the first update, all files are created normally. Upon the second update, saving the sbtore files succeeds but saving the pset files doesn't. The data in memory *is* updated, though.
When the user restarts the browser, our corruption detection will see that the sbstore data is not in sync with the pset data, and blow away the database.
a) prefixSet->WriteFile(); in Classifier.cpp doesn't have its return value checked
b) Windows doesn't allow us to rename into the file (SafeOutputStream) while we have an open read handle to it. This is a known problem that was fixed in HashStore.cpp but missed in LookupCache.cpp
c) I think its possible to make a testcase for this, so we should probably do that.
Created attachment 595825 [details] [diff] [review]
Patch. Fix WriteFile on Windows
Adding a test for this specific failure seems tricky. I'd need to shut down the entire classifier system, afaik. Not sure how to achieve that.
Created attachment 616610 [details] [diff] [review]
[Approval Request Comment]
Backout due to bug 744993:
a01cf079ee0b Bug 730247
1a6d008acb4f Bug 729928
f8bf3795b851 Bug 729640
35bf0d62cc30 Bug 726002
a010dcf1a973 Bug 726002
e9291f227d63 Bug 725597
db52b4916cde Bug 673470
173f90d397a8 Bug 673470
Comment on attachment 616610 [details] [diff] [review]
Sorry - thought this bug was reopened because the backout was backed out. My mistake. Approved for Aurora 13 (or Beta 13 if the merge occurs before we land).
Relanding after fixes in bug 673470 to fix bug 744993.