Skip to content

Commit

Permalink
Prevent blob merge from possibly losing the last container
Browse files Browse the repository at this point in the history
git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@6549 6c8d7289-2bf4-0310-a012-ef5d649a1542
  • Loading branch information
hermens committed Jan 5, 2010
1 parent 83d05e9 commit 574f499
Showing 1 changed file with 23 additions and 8 deletions.
31 changes: 23 additions & 8 deletions source/net/yacy/kelondro/blob/ArrayStack.java
Expand Up @@ -903,6 +903,7 @@ private static <ReferenceType extends Reference> void merge(
assert ordering.compare(c1.getTermHash(), c1o.getTermHash()) > 0;
continue;
}
c1 = null;
break;
}
if (e > 0) {
Expand All @@ -913,44 +914,58 @@ private static <ReferenceType extends Reference> void merge(
assert ordering.compare(c2.getTermHash(), c2o.getTermHash()) > 0;
continue;
}
c2 = null;
break;
}
assert e == 0;
// merge the entries
writer.add(c1.getTermHash(), (c1.merge(c2)).exportCollection());
c1o = c1;
c2o = c2;
if (i1.hasNext() && i2.hasNext()) {
c1 = i1.next();
assert ordering.compare(c1.getTermHash(), c1o.getTermHash()) > 0;
c2 = i2.next();
assert ordering.compare(c2.getTermHash(), c2o.getTermHash()) > 0;
continue;
}
if (i1.hasNext()) c1 = i1.next();
if (i2.hasNext()) c2 = i2.next();
c1 = null;
c2 = null;
if (i1.hasNext()) {
c1 = i1.next();
assert ordering.compare(c1.getTermHash(), c1o.getTermHash()) > 0;
}
if (i2.hasNext()) {
c2 = i2.next();
assert ordering.compare(c2.getTermHash(), c2o.getTermHash()) > 0;
}
break;

}
// catch up remaining entries
assert !(i1.hasNext() && i2.hasNext());
while (i1.hasNext()) {
assert (c1 == null) || (c2 == null);
while (c1 != null) {
//System.out.println("FLUSH REMAINING 1: " + c1.getWordHash());
writer.add(c1.getTermHash(), c1.exportCollection());
if (i1.hasNext()) {
c1o = c1;
c1 = i1.next();
assert ordering.compare(c1.getTermHash(), c1o.getTermHash()) > 0;
continue;
} else {
c1 = null;
}
break;
}
while (i2.hasNext()) {
while (c2 != null) {
//System.out.println("FLUSH REMAINING 2: " + c2.getWordHash());
writer.add(c2.getTermHash(), c2.exportCollection());
if (i2.hasNext()) {
c2o = c2;
c2 = i2.next();
assert ordering.compare(c2.getTermHash(), c2o.getTermHash()) > 0;
continue;
} else {
c2 = null;
}
break;
}
// finished with writing
}
Expand Down

0 comments on commit 574f499

Please sign in to comment.