From d3b06913ec2ef6f1854657a66bd47269e4b46add Mon Sep 17 00:00:00 2001 From: orbiter Date: Sun, 23 Mar 2008 23:47:41 +0000 Subject: [PATCH] protection against seed-db failure during enumeration git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@4598 6c8d7289-2bf4-0310-a012-ef5d649a1542 --- source/de/anomic/yacy/yacySeedDB.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/source/de/anomic/yacy/yacySeedDB.java b/source/de/anomic/yacy/yacySeedDB.java index 091bd54e3..08a484e91 100644 --- a/source/de/anomic/yacy/yacySeedDB.java +++ b/source/de/anomic/yacy/yacySeedDB.java @@ -970,11 +970,20 @@ public final class yacySeedDB { public yacySeed internalNext() { if ((it == null) || (!(it.hasNext()))) return null; - HashMap dna = it.next(); - if (dna == null) return null; - String hash = (String) dna.remove("key"); - //while (hash.length() < commonHashLength) { hash = hash + "_"; } - return new yacySeed(hash, dna); + try { + HashMap dna = it.next(); + if (dna == null) return null; + String hash = (String) dna.remove("key"); + //while (hash.length() < commonHashLength) { hash = hash + "_"; } + return new yacySeed(hash, dna); + } catch (Exception e) { + e.printStackTrace(); + yacyCore.log.logSevere("ERROR internalNext: seed.db corrupt (" + e.getMessage() + "); resetting seed.db", e); + if (database == seedActiveDB) seedActiveDB = resetSeedTable(seedActiveDB, seedActiveDBFile); + if (database == seedPassiveDB) seedPassiveDB = resetSeedTable(seedPassiveDB, seedPassiveDBFile); + if (database == seedPotentialDB) seedPotentialDB = resetSeedTable(seedPotentialDB, seedPotentialDBFile); + return null; + } } public yacySeed next() {