From 7e8669b15cec8c7118e38d2a6deaa8e2e0135824 Mon Sep 17 00:00:00 2001 From: hydrox Date: Thu, 2 Nov 2006 21:32:59 +0000 Subject: [PATCH] *) added possibility to "recycle" a DHTChunk that failed to transfer. git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@2898 6c8d7289-2bf4-0310-a012-ef5d649a1542 --- source/de/anomic/plasma/plasmaDHTChunk.java | 10 ++++++++++ source/de/anomic/plasma/plasmaSwitchboard.java | 13 +++++++++++-- yacy.init | 2 ++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/source/de/anomic/plasma/plasmaDHTChunk.java b/source/de/anomic/plasma/plasmaDHTChunk.java index a7eea14e0..82873c20d 100644 --- a/source/de/anomic/plasma/plasmaDHTChunk.java +++ b/source/de/anomic/plasma/plasmaDHTChunk.java @@ -81,6 +81,8 @@ public class plasmaDHTChunk { private long selectionStartTime = 0; private long selectionEndTime = 0; + private int transferFailedCounter = 0; + public indexContainer firstContainer() { return indexContainers[0]; } @@ -313,4 +315,12 @@ public class plasmaDHTChunk { if (this.selectionStartTime == 0 || this.selectionEndTime == 0) return -1; return this.selectionEndTime-this.selectionStartTime; } + + public void incTransferFailedCounter() { + this.transferFailedCounter++; + } + + public int getTransferFailedCounter() { + return transferFailedCounter; + } } diff --git a/source/de/anomic/plasma/plasmaSwitchboard.java b/source/de/anomic/plasma/plasmaSwitchboard.java index a63e35392..a5d5dc14a 100644 --- a/source/de/anomic/plasma/plasmaSwitchboard.java +++ b/source/de/anomic/plasma/plasmaSwitchboard.java @@ -2408,8 +2408,17 @@ public final class plasmaSwitchboard extends serverAbstractSwitch implements ser // show success return true; } else { - dhtTransferChunk.setStatus(plasmaDHTChunk.chunkStatus_FAILED); - log.logFine("DHT distribution: transfer FAILED"); + dhtTransferChunk.incTransferFailedCounter(); + int maxChunkFails = (int) getConfigLong("indexDistribution.maxChunkFails", 1); + if (dhtTransferChunk.getTransferFailedCounter() >= maxChunkFails) { + System.out.println("DEBUG: " + dhtTransferChunk.getTransferFailedCounter() + " of " + maxChunkFails + " sendings failed for this chunk, aborting!"); + dhtTransferChunk.setStatus(plasmaDHTChunk.chunkStatus_FAILED); + log.logFine("DHT distribution: transfer FAILED"); + } + else { + System.out.println("DEBUG: " + dhtTransferChunk.getTransferFailedCounter() + " of " + maxChunkFails + " sendings failed for this chunk, retrying!"); + log.logFine("DHT distribution: transfer FAILED, sending this chunk again"); + } return false; } } diff --git a/yacy.init b/yacy.init index 6927f7fa5..eb8f1f9a8 100644 --- a/yacy.init +++ b/yacy.init @@ -702,6 +702,8 @@ indexDistribution.minChunkSize = 5 indexDistribution.maxChunkSize = 1000 indexDistribution.startChunkSize = 50 +indexDistribution.maxChunkFails = 1 + # defines if the peer should reject incoming index transfer # request if a given limit is reached indexDistribution.transferRWIReceiptLimitEnabled = true