fix for ConcurrentModificationException at de.anomic.index.indexContainerHeap$heapCacheIterator.next(indexContainerHeap.java:324)

git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@5300 6c8d7289-2bf4-0310-a012-ef5d649a1542
This commit is contained in:
danielr 2008-10-24 14:00:41 +00:00
parent 103ad2a437
commit 0f9c0bd0d5

View File

@ -314,25 +314,29 @@ public final class indexContainerHeap {
return new heapCacheIterator((String) secondWordHash, rot);
}
public boolean hasNext() {
public synchronized boolean hasNext() {
if (rot) return true;
return iterator.hasNext();
}
public indexContainer next() {
if (iterator.hasNext()) {
public synchronized indexContainer next() {
synchronized(iterator) {
if (iterator.hasNext()) {
return (iterator.next()).topLevelClone();
}
// rotation iteration
if (!rot) {
return null;
}
iterator = cache.values().iterator();
return (iterator.next()).topLevelClone();
}
// rotation iteration
if (!rot) {
return null;
}
iterator = cache.values().iterator();
return (iterator.next()).topLevelClone();
}
public void remove() {
iterator.remove();
public synchronized void remove() {
synchronized(iterator) {
iterator.remove();
}
}
public Iterator<indexContainer> iterator() {