NUTCH-2767 Fetcher to stop filling queues skipped due to repeated exception
- use array to count queuing status
diff --git a/src/java/org/apache/nutch/fetcher/QueueFeeder.java b/src/java/org/apache/nutch/fetcher/QueueFeeder.java
index 6c2ad39..8f64118 100644
--- a/src/java/org/apache/nutch/fetcher/QueueFeeder.java
+++ b/src/java/org/apache/nutch/fetcher/QueueFeeder.java
@@ -89,14 +89,14 @@
public void run() {
boolean hasMore = true;
int cnt = 0;
- Map<QueuingStatus, Integer> queuingStatus = new TreeMap<>();
+ int[] queuingStatus = new int[QueuingStatus.values().length];
while (hasMore) {
if (System.currentTimeMillis() >= timelimit && timelimit != -1) {
// enough ... lets' simply read all the entries from the input without
// processing them
try {
hasMore = context.nextKeyValue();
- queuingStatus.compute(QueuingStatus.HIT_BY_TIMELIMIT, (k, v) -> v == null ? 1 : v + 1);
+ queuingStatus[QueuingStatus.HIT_BY_TIMELIMIT.ordinal()]++;
} catch (IOException e) {
LOG.error("QueueFeeder error reading input, record " + cnt, e);
return;
@@ -140,7 +140,7 @@
CrawlDatum datum = new CrawlDatum();
datum.set((CrawlDatum) context.getCurrentValue());
QueuingStatus status = queues.addFetchItem(url, datum);
- queuingStatus.compute(status, (k, v) -> v == null ? 1 : v + 1);
+ queuingStatus[status.ordinal()]++;
if (status == QueuingStatus.ABOVE_EXCEPTION_THRESHOLD) {
context
.getCounter("FetcherStatus", "AboveExceptionThresholdInQueue")
@@ -158,11 +158,9 @@
}
}
LOG.info("QueueFeeder finished: total {} records", cnt);
- if (queuingStatus.size() > 0) {
- LOG.info("QueueFeeder queuing status:");
- for (Map.Entry<QueuingStatus, Integer> e : queuingStatus.entrySet()) {
- LOG.info("\t{}\t{}", e.getValue(), e.getKey());
- }
+ LOG.info("QueueFeeder queuing status:");
+ for (QueuingStatus status : QueuingStatus.values()) {
+ LOG.info("\t{}\t{}", queuingStatus[status.ordinal()], status);
}
}
}