From ba37839adfad52f012d25cbef65aba744073fdd9 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sun, 14 Oct 2012 20:05:04 +0000 Subject: [PATCH] fixes while rechecking storage --- .../java/src/org/klomp/snark/PeerCoordinator.java | 10 +++++++++- apps/i2psnark/java/src/org/klomp/snark/Storage.java | 2 ++ .../java/src/org/klomp/snark/web/I2PSnarkServlet.java | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java index 8ffde7363b..f882967592 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java @@ -377,7 +377,10 @@ class PeerCoordinator implements PeerListener public boolean needOutboundPeers() { //return wantedBytes != 0 && needPeers(); // minus one to make it a little easier for new peers to get in on large swarms - return wantedBytes != 0 && !halted && peers.size() < getMaxConnections() - 1; + return wantedBytes != 0 && + !halted && + peers.size() < getMaxConnections() - 1 && + (storage == null || !storage.isChecking()); } /** @@ -945,6 +948,8 @@ class PeerCoordinator implements PeerListener { if (metainfo == null || storage == null) return true; + if (storage.isChecking()) + return true; int piece = pp.getPiece(); if (halted) { _log.info("Got while-halted piece " + piece + "/" + metainfo.getPieces() +" from " + peer + " for " + metainfo.getName()); @@ -968,6 +973,7 @@ class PeerCoordinator implements PeerListener try { + // this takes forever if complete, as it rechecks if (storage.putPiece(pp)) { if (_log.shouldLog(Log.INFO)) @@ -1173,6 +1179,8 @@ class PeerCoordinator implements PeerListener public PartialPiece getPartialPiece(Peer peer, BitField havePieces) { if (metainfo == null) return null; + if (storage != null && storage.isChecking()) + return null; synchronized(wantedPieces) { // sorts by remaining bytes, least first Collections.sort(partialPieces); diff --git a/apps/i2psnark/java/src/org/klomp/snark/Storage.java b/apps/i2psnark/java/src/org/klomp/snark/Storage.java index 21e006f5e4..90f6f4b555 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Storage.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Storage.java @@ -982,6 +982,8 @@ public class Storage /** * Put the piece in the Storage if it is correct. + * Warning - takes a LONG time if complete as it does the recheck here. + * TODO thread the recheck? * * @return true if the piece was correct (sha metainfo hash * matches), otherwise false. diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index 7283b14be1..d926ee2d43 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -1153,7 +1153,7 @@ public class I2PSnarkServlet extends DefaultServlet { out.write("</a>"); out.write("<td align=\"right\" class=\"snarkTorrentETA " + rowClass + "\">"); - if(isRunning && remainingSeconds > 0) + if(isRunning && remainingSeconds > 0 && !snark.isChecking()) out.write(DataHelper.formatDuration2(Math.max(remainingSeconds, 10) * 1000)); // (eta 6h) out.write("</td>\n\t"); out.write("<td align=\"right\" class=\"snarkTorrentDownloaded " + rowClass + "\">"); -- GitLab