From: <th...@us...> - 2010-08-30 02:38:46
|
Revision: 1934 http://azsmrc.svn.sourceforge.net/azsmrc/?rev=1934&view=rev Author: the8472 Date: 2010-08-30 02:38:40 +0000 (Mon, 30 Aug 2010) Log Message: ----------- -we're still leaking about 100 tasks per day -> turning tracing back on -fixing a very rare NPE due to DHT task concurrency issues Modified Paths: -------------- mldht/branches/indexer/DHTIndexer.jar mldht/branches/indexer/lbms/plugins/mldht/indexer/MetaDataGatherer.java mldht/branches/indexer/lbms/plugins/mldht/indexer/PullMetaDataConnection.java Modified: mldht/branches/indexer/DHTIndexer.jar =================================================================== (Binary files differ) Modified: mldht/branches/indexer/lbms/plugins/mldht/indexer/MetaDataGatherer.java =================================================================== --- mldht/branches/indexer/lbms/plugins/mldht/indexer/MetaDataGatherer.java 2010-08-26 14:03:12 UTC (rev 1933) +++ mldht/branches/indexer/lbms/plugins/mldht/indexer/MetaDataGatherer.java 2010-08-30 02:38:40 UTC (rev 1934) @@ -68,7 +68,7 @@ static PrintWriter traceWriter; - /* + static { try @@ -79,14 +79,13 @@ // TODO Auto-generated catch block e.printStackTrace(); } - }*/ + } static void log(String s) { + traceWriter.println(s); + traceWriter.flush(); - //traceWriter.println(s); - //traceWriter.flush(); - } @@ -306,13 +305,19 @@ TaskListener lookupListener = new TaskListener() { public void finished(Task t) { int pending = pendingLookups.decrementAndGet(); - PeerLookupTask pt = (PeerLookupTask) t; - task.addresses.addAll(pt.getReturnedItems()); - log("one DHT lookup done for "+task.hash); + if(pending >= 0) + { + PeerLookupTask pt = (PeerLookupTask) t; + task.addresses.addAll(pt.getReturnedItems()); + log("one DHT lookup done for "+task.hash); + } + if(pending == 0) { log("all DHT lookups done for"+task.hash); activeLookups.decrementAndGet(); + // remove all null entries that might have occured due to concurrent inserts + task.addresses.removeAll(Collections.singleton(null)); if(task.addresses.size() > 0) { // trim to a limited amount of addresses to avoid 1 task being stuck for ages if(task.addresses.size() > MAX_PEERS_PER_INFOHASH) Modified: mldht/branches/indexer/lbms/plugins/mldht/indexer/PullMetaDataConnection.java =================================================================== --- mldht/branches/indexer/lbms/plugins/mldht/indexer/PullMetaDataConnection.java 2010-08-26 14:03:12 UTC (rev 1933) +++ mldht/branches/indexer/lbms/plugins/mldht/indexer/PullMetaDataConnection.java 2010-08-30 02:38:40 UTC (rev 1934) @@ -485,7 +485,7 @@ if(isState(STATE_CLOSED)) return; //if(!isState(STATE_FINISHED) && !isState(STATE_CONNECTING)) - //MetaDataGatherer.log("closing connection for "+new Key(infoHash).toString(false)+" to "+destination+"/"+remoteClient+" state:"+state+" reason:"+reason); + MetaDataGatherer.log("closing connection for "+new Key(infoHash).toString(false)+" to "+destination+"/"+remoteClient+" state:"+state+" reason:"+reason); NIOConnectionHandler.getInstance().deRegister(this); setState(STATE_CLOSED, true); terminationHandler.run(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |