From 177e8af5b75ef4019ae95d5d67d3e9cd03b43c49 Mon Sep 17 00:00:00 2001 From: theli Date: Sat, 10 Sep 2005 05:59:12 +0000 Subject: [PATCH] *) Bugfix for ConcurrentModification in kelondroAbstractRA.writeMap caused by yacySeed.getMap() See: http://www.yacy-forum.de/viewtopic.php?p=9523 git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@695 6c8d7289-2bf4-0310-a012-ef5d649a1542 --- source/de/anomic/yacy/yacyCore.java | 2 +- source/de/anomic/yacy/yacySearch.java | 2 +- source/de/anomic/yacy/yacySeed.java | 2 +- source/de/anomic/yacy/yacySeedDB.java | 28 +++++++++++++-------------- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/source/de/anomic/yacy/yacyCore.java b/source/de/anomic/yacy/yacyCore.java index 7b3395614..e4e574603 100644 --- a/source/de/anomic/yacy/yacyCore.java +++ b/source/de/anomic/yacy/yacyCore.java @@ -337,7 +337,7 @@ public class yacyCore { log.logInfo("publish: handshaked " + this.seed.get("PeerType", "senior") + " peer '" + this.seed.getName() + "' at " + this.seed.getAddress()); } } catch (Exception e) { - log.logSevere("publishThread: error with target seed " + seed.getMap() + ": " + e.getMessage(), e); + log.logSevere("publishThread: error with target seed " + seed.toString() + ": " + e.getMessage(), e); this.error = e; } finally { this.syncList.add(this); diff --git a/source/de/anomic/yacy/yacySearch.java b/source/de/anomic/yacy/yacySearch.java index 4dc32b353..59a93a872 100644 --- a/source/de/anomic/yacy/yacySearch.java +++ b/source/de/anomic/yacy/yacySearch.java @@ -140,7 +140,7 @@ public class yacySearch extends Thread { seed = (yacySeed) dhtEnum.nextElement(); if (seed == null) continue; score = (int) Math.round(Math.random() * ((c / 3) + 3)); - serverLog.logFine("PLASMA", "selectPeers/RWIcount: " + seed.hash + ":" + seed.getName() + ", RWIcount=" + seed.getMap().get("ICount") + ", score " + score); + serverLog.logFine("PLASMA", "selectPeers/RWIcount: " + seed.hash + ":" + seed.getName() + ", RWIcount=" + seed.get("ICount","") + ", score " + score); ranking.addScore(seed.hash, score); seeds.put(seed.hash, seed); c--; diff --git a/source/de/anomic/yacy/yacySeed.java b/source/de/anomic/yacy/yacySeed.java index ae0279908..9f365eafd 100644 --- a/source/de/anomic/yacy/yacySeed.java +++ b/source/de/anomic/yacy/yacySeed.java @@ -156,7 +156,7 @@ public class yacySeed { } public Map getMap() { - return dna; + return (Hashtable) dna.clone(); } public String getName() { diff --git a/source/de/anomic/yacy/yacySeedDB.java b/source/de/anomic/yacy/yacySeedDB.java index 51bb86743..e2142e53c 100644 --- a/source/de/anomic/yacy/yacySeedDB.java +++ b/source/de/anomic/yacy/yacySeedDB.java @@ -64,7 +64,7 @@ import de.anomic.server.serverSwitch; import de.anomic.server.logging.serverLog; import de.anomic.tools.disorderHeap; -public class yacySeedDB { +public final class yacySeedDB { // global statics public static final int commonHashLength = 12; @@ -84,10 +84,10 @@ public class yacySeedDB { private kelondroMap seedActiveDB, seedPassiveDB, seedPotentialDB; private int seedDBBufferKB; - public plasmaSwitchboard sb; + public final plasmaSwitchboard sb; public yacySeed mySeed; // my own seed - public File myOwnSeedFile; - private Hashtable nameLookupCache; + public final File myOwnSeedFile; + private final Hashtable nameLookupCache; public yacySeedDB(plasmaSwitchboard sb, @@ -341,23 +341,23 @@ public class yacySeedDB { public long countPotentialRWI() { return seedPotentialDB.getAcc("ICount"); } public synchronized void addConnected(yacySeed seed) { - if ((seed == null) || (seed.isProper() != null)) return; + if ((seed == null) || (seed.isProper() != null)) return; //seed.put("LastSeen", yacyCore.shortFormatter.format(new Date(yacyCore.universalTime()))); try { nameLookupCache.put(seed.getName(), seed); - seedActiveDB.set(seed.hash, seed.getMap()); + seedActiveDB.set(seed.hash, seed.getMap()); seedPassiveDB.remove(seed.hash); seedPotentialDB.remove(seed.hash); - } catch (IOException e){ + } catch (IOException e){ yacyCore.log.logFine("ERROR add: seed.db corrupt (" + e.getMessage() + "); resetting seed.db", e); - seedActiveDB = resetSeedTable(seedActiveDB, seedActiveDBFile); - } catch (kelondroException e){ - yacyCore.log.logFine("ERROR add: seed.db corrupt (" + e.getMessage() + "); resetting seed.db", e); - seedActiveDB = resetSeedTable(seedActiveDB, seedActiveDBFile); + seedActiveDB = resetSeedTable(seedActiveDB, seedActiveDBFile); + } catch (kelondroException e){ + yacyCore.log.logFine("ERROR add: seed.db corrupt (" + e.getMessage() + "); resetting seed.db", e); + seedActiveDB = resetSeedTable(seedActiveDB, seedActiveDBFile); } catch (IllegalArgumentException e) { - yacyCore.log.logFine("ERROR add: seed.db corrupt (" + e.getMessage() + "); resetting seed.db", e); - seedActiveDB = resetSeedTable(seedActiveDB, seedActiveDBFile); - } + yacyCore.log.logFine("ERROR add: seed.db corrupt (" + e.getMessage() + "); resetting seed.db", e); + seedActiveDB = resetSeedTable(seedActiveDB, seedActiveDBFile); + } } public synchronized void addDisconnected(yacySeed seed) {