From 4f1f4863c4ce864a93ce418b7243a9b83571e46e Mon Sep 17 00:00:00 2001 From: orbiter Date: Thu, 14 Jan 2010 23:03:48 +0000 Subject: [PATCH] fix for deadlock when initializing a SplitTable with a file of size 0, see also: http://forum.yacy-websuche.de/viewtopic.php?p=18594#p18594 git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@6587 6c8d7289-2bf4-0310-a012-ef5d649a1542 --- source/net/yacy/kelondro/table/SplitTable.java | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/source/net/yacy/kelondro/table/SplitTable.java b/source/net/yacy/kelondro/table/SplitTable.java index f10b0a49a..37258c930 100644 --- a/source/net/yacy/kelondro/table/SplitTable.java +++ b/source/net/yacy/kelondro/table/SplitTable.java @@ -191,7 +191,7 @@ public class SplitTable implements ObjectIndex, Iterable { while (i.hasNext()) { entry = i.next(); ram = entry.getValue().longValue(); - if (ram > maxram) { + if (maxf == null || ram > maxram) { maxf = entry.getKey(); maxram = ram; } @@ -199,16 +199,14 @@ public class SplitTable implements ObjectIndex, Iterable { // open next biggest table t.remove(maxf); - if (maxf != null) { - f = new File(path, maxf); - Log.logInfo("kelondroSplitTable", "opening partial eco table " + f); - try { - table = new Table(f, rowdef, EcoFSBufferSize, 0, this.useTailCache, this.exceed134217727); - } catch (RowSpaceExceededException e) { - table = new Table(f, rowdef, 0, 0, false, this.exceed134217727); - } - tables.put(maxf, table); + f = new File(path, maxf); + Log.logInfo("kelondroSplitTable", "opening partial eco table " + f); + try { + table = new Table(f, rowdef, EcoFSBufferSize, 0, this.useTailCache, this.exceed134217727); + } catch (RowSpaceExceededException e) { + table = new Table(f, rowdef, 0, 0, false, this.exceed134217727); } + tables.put(maxf, table); } // init the thread pool for the keeperOf executor service