From fea6241fac9189eb4dd6dcca4903209544aa345c Mon Sep 17 00:00:00 2001 From: Noah Levitt Date: Thu, 15 Nov 2018 11:13:27 -0800 Subject: [PATCH] implement PredicatedDecideRule.onlyDecision() DecideRuleSequence already has the optimization that I was looking for, namely, don't bother evaluating a DecideRule if we know it won't change the current result. For some reason PredicatedDecideRule, which is a parent class to most of the decide rules in heritrix, didn't implement onlyDecision(). Certain crawl configurations could see significant performance improvement with this change. --- .../archive/modules/deciderules/PredicatedDecideRule.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/src/main/java/org/archive/modules/deciderules/PredicatedDecideRule.java b/modules/src/main/java/org/archive/modules/deciderules/PredicatedDecideRule.java index ebdce650..8c2a0693 100644 --- a/modules/src/main/java/org/archive/modules/deciderules/PredicatedDecideRule.java +++ b/modules/src/main/java/org/archive/modules/deciderules/PredicatedDecideRule.java @@ -28,6 +28,7 @@ import org.archive.modules.CrawlURI; * @author gojomo */ public abstract class PredicatedDecideRule extends DecideRule { + private static final long serialVersionUID = 1L; { setDecision(DecideResult.ACCEPT); @@ -50,5 +51,10 @@ public abstract class PredicatedDecideRule extends DecideRule { return DecideResult.NONE; } + @Override + public DecideResult onlyDecision(CrawlURI uri) { + return getDecision(); + } + protected abstract boolean evaluate(CrawlURI object); }