Skip to content

Commit ba496d7

Browse files
committed
Remove cache on targets table and change JS-side query to match.
1 parent 2e16492 commit ba496d7

File tree

2 files changed

+14
-17
lines changed

2 files changed

+14
-17
lines changed

src/chrome/content/code/HTTPSRules.js

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -425,25 +425,24 @@ const HTTPSRules = {
425425
var dbFile = FileUtils.getFile("ProfD",
426426
["extensions", "https-everywhere@eff.org", "defaults", "rulesets.sqlite"]);
427427
var rulesetDBConn = Services.storage.openDatabase(dbFile);
428-
this.queryForTarget = rulesetDBConn.createStatement(
429-
"select id, contents from targets, rulesets " +
430-
"where targets.ruleset_id = rulesets.id and host = :target;");
428+
this.queryForRuleset = rulesetDBConn.createStatement(
429+
"select contents from rulesets where id = :id");
431430

432431
// Preload the list of which targets are available in the DB.
433432
// This is a little slow (287 ms on a Core2 Duo @ 2.2GHz with SSD),
434433
// but is faster than loading all of the rulesets. If this becomes a
435434
// bottleneck, change it to load in a background webworker, or load
436435
// a smaller bloom filter instead.
437-
this.targetsAvailable = new Set(); // Firefox-specific
438-
var targetsQuery = rulesetDBConn.createStatement("select host from targets");
439-
this.log(WARN, "Adding targets...");
436+
this.targetsAvailable = {};
437+
var targetsQuery = rulesetDBConn.createStatement("select host, ruleset_id from targets");
438+
this.log(DBUG, "Adding targets...");
440439
while (targetsQuery.executeStep()) {
441440
var host = targetsQuery.row.host;
442-
this.targetsAvailable.add(host);
441+
this.targetsAvailable[host] = targetsQuery.row.ruleset_id;
443442
}
444-
this.log(WARN, "Done adding targets.");
443+
this.log(DBUG, "Done adding targets.");
445444
} catch(e) {
446-
this.log(WARN,"Rules Failed: "+e);
445+
this.log(DBUG,"Rules Failed: "+e);
447446
}
448447
var t2 = new Date().getTime();
449448
this.log(NOTE,"Loading rulesets took " + (t2 - t1) / 1000.0 + " seconds");
@@ -610,17 +609,16 @@ const HTTPSRules = {
610609
// flow? Perhaps we can preload all targets from the DB into memory at startup
611610
// so we only hit the DB when we know there is something to be had.
612611
queryTarget: function(target) {
613-
this.log(WARN, "Querying DB for " + target);
612+
this.log(DBUG, "Querying DB for " + target);
614613
var output = [];
615614

616-
var statement = this.queryForTarget.clone();
617-
statement.params.target = target;
615+
this.queryForRuleset.params.id = this.targetsAvailable[target];
618616

619617
try {
620-
while (statement.executeStep())
621-
output.push(statement.row.contents);
618+
while (this.queryForRuleset.executeStep())
619+
output.push(this.queryForRuleset.row.contents);
622620
} finally {
623-
statement.reset();
621+
this.queryForRuleset.reset();
624622
}
625623
return output;
626624
},
@@ -635,7 +633,7 @@ const HTTPSRules = {
635633
if (this.targets[target] &&
636634
this.targets[target].length > 0) {
637635
this.setInsert(results, this.targets[target]);
638-
} else if (this.targetsAvailable.has(target)) {
636+
} else if (this.targetsAvailable[target]) {
639637
// If not found there, check the DB and load the ruleset as appropriate
640638
var rulesets = this.queryTarget(target);
641639
if (rulesets.length > 0) {

utils/make-sqlite.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ def nomes_all(where=sys.argv[1:]):
4040
c.execute('''CREATE TABLE targets
4141
(host TEXT,
4242
ruleset_id INTEGER)''')
43-
c.execute('''CREATE INDEX host_index on targets(host)''')
4443

4544
parser = etree.XMLParser(remove_blank_text=True)
4645

0 commit comments

Comments
 (0)