From 7e728867e5e295d8e4cf20e3acbd20bdbfc76ee4 Mon Sep 17 00:00:00 2001 From: Michael Peter Christen Date: Tue, 31 Jan 2012 18:17:25 +0100 Subject: [PATCH] added a synchronization around iterations to prevent IO-deadlocking during concurrent remote search requests --- source/net/yacy/peers/SeedDB.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/source/net/yacy/peers/SeedDB.java b/source/net/yacy/peers/SeedDB.java index f5a11642d..29f67e052 100644 --- a/source/net/yacy/peers/SeedDB.java +++ b/source/net/yacy/peers/SeedDB.java @@ -32,8 +32,8 @@ import java.io.PrintWriter; import java.lang.ref.SoftReference; import java.net.InetAddress; import java.util.ArrayList; -import java.util.HashSet; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Set; @@ -652,7 +652,7 @@ public final class SeedDB implements AlternativeDomainNames { // enumerate the cache String name = Seed.checkPeerName(peerName); Map.Entry> entry; - try { + synchronized (this) { try { Iterator>> mmap = this.seedActiveDB.entries(Seed.NAME, name); while (mmap.hasNext()) { entry = mmap.next(); @@ -664,8 +664,8 @@ public final class SeedDB implements AlternativeDomainNames { return seed; } } catch ( IOException e ) { - } - try { + }} + synchronized (this) { try { Iterator>> mmap = this.seedPassiveDB.entries(Seed.NAME, name); while (mmap.hasNext()) { entry = mmap.next(); @@ -677,8 +677,8 @@ public final class SeedDB implements AlternativeDomainNames { return seed; } } catch ( IOException e ) { - } - + }} + // check local seed if (this.mySeed == null) initMySeed(); name = this.mySeed.getName().toLowerCase(); @@ -718,7 +718,7 @@ public final class SeedDB implements AlternativeDomainNames { String ipString = peerIP.getHostAddress(); Map.Entry> entry; - if (lookupConnected) { + if (lookupConnected) synchronized (this) { try { Iterator>> mmap = this.seedActiveDB.entries(Seed.IP, ipString); while (mmap.hasNext()) { @@ -737,7 +737,7 @@ public final class SeedDB implements AlternativeDomainNames { } } - if (lookupDisconnected) { + if (lookupDisconnected) synchronized (this) { try { Iterator>> mmap = this.seedPassiveDB.entries(Seed.IP, ipString); while (mmap.hasNext()) { @@ -756,7 +756,7 @@ public final class SeedDB implements AlternativeDomainNames { } } - if (lookupPotential) { + if (lookupPotential) synchronized (this) { try { Iterator>> mmap = this.seedPotentialDB.entries(Seed.IP, ipString); while (mmap.hasNext()) {