mirror of
https://github.com/yacy/yacy_search_server.git
synced 2024-09-19 00:01:41 +02:00
update of cache logging
git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@2917 6c8d7289-2bf4-0310-a012-ef5d649a1542
This commit is contained in:
parent
8385557672
commit
d454ca44ee
|
@ -165,7 +165,10 @@ public class kelondroCache implements kelondroIndex {
|
|||
if (writeBufferUnique == null) return;
|
||||
synchronized (writeBufferUnique) {
|
||||
Iterator i = writeBufferUnique.rows();
|
||||
while (i.hasNext()) index.addUnique((kelondroRow.Entry) i.next());
|
||||
while (i.hasNext()) {
|
||||
this.index.addUnique((kelondroRow.Entry) i.next());
|
||||
this.cacheFlush++;
|
||||
}
|
||||
writeBufferUnique.clear();
|
||||
writeBufferUnique.trim();
|
||||
}
|
||||
|
@ -181,7 +184,8 @@ public class kelondroCache implements kelondroIndex {
|
|||
while ((i.hasNext()) && (maxcount-- > 0)) {
|
||||
row = (kelondroRow.Entry) i.next();
|
||||
delete.add(row.getColBytes(index.primarykey()));
|
||||
index.addUnique(row);
|
||||
this.index.addUnique(row);
|
||||
this.cacheFlush++;
|
||||
}
|
||||
i = delete.rows();
|
||||
while (i.hasNext()) writeBufferUnique.remove(((kelondroRow.Entry) i.next()).getColBytes(0));
|
||||
|
@ -194,7 +198,10 @@ public class kelondroCache implements kelondroIndex {
|
|||
if (writeBufferDoubles == null) return;
|
||||
synchronized (writeBufferDoubles) {
|
||||
Iterator i = writeBufferDoubles.rows();
|
||||
while (i.hasNext()) index.put((kelondroRow.Entry) i.next());
|
||||
while (i.hasNext()) {
|
||||
this.index.put((kelondroRow.Entry) i.next());
|
||||
this.cacheFlush++;
|
||||
}
|
||||
writeBufferDoubles.clear();
|
||||
writeBufferDoubles.trim();
|
||||
}
|
||||
|
@ -210,7 +217,8 @@ public class kelondroCache implements kelondroIndex {
|
|||
while ((i.hasNext()) && (maxcount-- > 0)) {
|
||||
row = (kelondroRow.Entry) i.next();
|
||||
delete.add(row.getColBytes(index.primarykey()));
|
||||
index.addUnique(row);
|
||||
this.index.addUnique(row);
|
||||
this.cacheFlush++;
|
||||
}
|
||||
i = delete.rows();
|
||||
while (i.hasNext()) writeBufferDoubles.remove(((kelondroRow.Entry) i.next()).getColBytes(0));
|
||||
|
@ -273,10 +281,10 @@ public class kelondroCache implements kelondroIndex {
|
|||
// first look into the miss cache
|
||||
if (readMissCache != null) {
|
||||
if (readMissCache.get(key) != null) {
|
||||
hasnotHit++;
|
||||
this.hasnotHit++;
|
||||
return null;
|
||||
} else {
|
||||
hasnotMiss++;
|
||||
this.hasnotMiss++;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -286,36 +294,42 @@ public class kelondroCache implements kelondroIndex {
|
|||
if (readHitCache != null) {
|
||||
entry = readHitCache.get(key);
|
||||
if (entry != null) {
|
||||
readHit++;
|
||||
this.readHit++;
|
||||
return entry;
|
||||
}
|
||||
}
|
||||
if (writeBufferUnique != null) {
|
||||
entry = writeBufferUnique.get(key);
|
||||
if (entry != null) {
|
||||
readHit++;
|
||||
this.readHit++;
|
||||
return entry;
|
||||
}
|
||||
}
|
||||
if (writeBufferDoubles != null) {
|
||||
entry = writeBufferDoubles.get(key);
|
||||
if (entry != null) {
|
||||
readHit++;
|
||||
this.readHit++;
|
||||
return entry;
|
||||
}
|
||||
}
|
||||
|
||||
// finally ask the backend index
|
||||
readMiss++;
|
||||
this.readMiss++;
|
||||
entry = index.get(key);
|
||||
// learn from result
|
||||
if (entry == null) {
|
||||
checkMissSpace();
|
||||
if (readMissCache != null) readMissCache.put(readMissCache.row().newEntry(key));
|
||||
if (readMissCache != null) {
|
||||
kelondroRow.Entry dummy = readMissCache.put(readMissCache.row().newEntry(key));
|
||||
if (dummy == null) this.hasnotUnique++; else this.hasnotDouble++;
|
||||
}
|
||||
return null;
|
||||
} else {
|
||||
checkHitSpace();
|
||||
if (readHitCache != null) readHitCache.put(entry);
|
||||
if (readHitCache != null) {
|
||||
kelondroRow.Entry dummy = readHitCache.put(entry);
|
||||
if (dummy == null) this.writeUnique++; else this.writeDouble++;
|
||||
}
|
||||
return entry;
|
||||
}
|
||||
}
|
||||
|
@ -348,7 +362,10 @@ public class kelondroCache implements kelondroIndex {
|
|||
}
|
||||
assert (writeBufferDoubles == null);
|
||||
index.put(row); // write to backend
|
||||
if (readHitCache != null) readHitCache.put(row); // learn that entry
|
||||
if (readHitCache != null) {
|
||||
kelondroRow.Entry dummy = readHitCache.put(row); // learn that entry
|
||||
if (dummy == null) this.writeUnique++; else this.writeDouble++;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -362,13 +379,15 @@ public class kelondroCache implements kelondroIndex {
|
|||
if (writeBufferDoubles != null) {
|
||||
// because the entry exists, it must be written in the doubles buffer
|
||||
readHitCache.remove(key);
|
||||
this.cacheDelete++;
|
||||
writeBufferDoubles.put(row);
|
||||
return entry;
|
||||
} else {
|
||||
// write directly to backend index
|
||||
index.put(row);
|
||||
// learn from situation
|
||||
readHitCache.put(row); // overwrite old entry
|
||||
kelondroRow.Entry dummy = readHitCache.put(row); // overwrite old entry
|
||||
if (dummy == null) this.writeUnique++; else this.writeDouble++;
|
||||
return entry;
|
||||
}
|
||||
}
|
||||
|
@ -406,7 +425,10 @@ public class kelondroCache implements kelondroIndex {
|
|||
|
||||
// the worst case: we must write to the back-end directly
|
||||
entry = index.put(row);
|
||||
if (readHitCache != null) readHitCache.put(row); // learn that entry
|
||||
if (readHitCache != null) {
|
||||
kelondroRow.Entry dummy = readHitCache.put(row); // learn that entry
|
||||
if (dummy == null) this.writeUnique++; else this.writeDouble++;
|
||||
}
|
||||
return entry;
|
||||
}
|
||||
|
||||
|
@ -426,11 +448,17 @@ public class kelondroCache implements kelondroIndex {
|
|||
checkHitSpace();
|
||||
|
||||
// remove entry from miss- and hit-cache
|
||||
if (readMissCache != null) readMissCache.remove(key);
|
||||
if (readMissCache != null) {
|
||||
this.readMissCache.remove(key);
|
||||
this.hasnotDelete++;
|
||||
}
|
||||
|
||||
// the worst case: we must write to the backend directly
|
||||
Entry entry = index.put(row);
|
||||
if (readHitCache != null) readHitCache.put(row); // learn that entry
|
||||
if (readHitCache != null) {
|
||||
kelondroRow.Entry dummy = readHitCache.put(row); // learn that entry
|
||||
if (dummy == null) this.writeUnique++; else this.writeDouble++;
|
||||
}
|
||||
return entry;
|
||||
}
|
||||
|
||||
|
@ -444,7 +472,8 @@ public class kelondroCache implements kelondroIndex {
|
|||
|
||||
// remove entry from miss- and hit-cache
|
||||
if (readMissCache != null) {
|
||||
readMissCache.remove(key);
|
||||
this.readMissCache.remove(key);
|
||||
this.hasnotDelete++;
|
||||
// the entry does not exist before
|
||||
if (writeBufferUnique != null) {
|
||||
// since we know that the entry does not exist, we know that new
|
||||
|
@ -454,7 +483,10 @@ public class kelondroCache implements kelondroIndex {
|
|||
}
|
||||
assert (writeBufferDoubles == null);
|
||||
index.addUnique(row); // write to backend
|
||||
if (readHitCache != null) readHitCache.put(row); // learn that entry
|
||||
if (readHitCache != null) {
|
||||
kelondroRow.Entry dummy = readHitCache.put(row); // learn that entry
|
||||
if (dummy == null) this.writeUnique++; else this.writeDouble++;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -469,7 +501,10 @@ public class kelondroCache implements kelondroIndex {
|
|||
|
||||
// the worst case: we must write to the back-end directly
|
||||
index.addUnique(row);
|
||||
if (readHitCache != null) readHitCache.put(row); // learn that entry
|
||||
if (readHitCache != null) {
|
||||
kelondroRow.Entry dummy = readHitCache.put(row); // learn that entry
|
||||
if (dummy == null) this.writeUnique++; else this.writeDouble++;
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized void addUnique(Entry row, Date entryDate) throws IOException {
|
||||
|
@ -488,11 +523,17 @@ public class kelondroCache implements kelondroIndex {
|
|||
checkHitSpace();
|
||||
|
||||
// remove entry from miss- and hit-cache
|
||||
if (readMissCache != null) readMissCache.remove(key);
|
||||
if (readMissCache != null) {
|
||||
this.readMissCache.remove(key);
|
||||
this.hasnotDelete++;
|
||||
}
|
||||
|
||||
// the worst case: we must write to the backend directly
|
||||
index.addUnique(row);
|
||||
if (readHitCache != null) readHitCache.put(row); // learn that entry
|
||||
if (readHitCache != null) {
|
||||
kelondroRow.Entry dummy = readHitCache.put(row); // learn that entry
|
||||
if (dummy == null) this.writeUnique++; else this.writeDouble++;
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized Entry remove(byte[] key) throws IOException {
|
||||
|
@ -502,13 +543,23 @@ public class kelondroCache implements kelondroIndex {
|
|||
// add entry to miss-cache
|
||||
if (readMissCache != null) {
|
||||
// set the miss cache; if there was already an entry we know that the return value must be null
|
||||
if (readMissCache.put(readMissCache.row().newEntry(key)) != null) return null;
|
||||
kelondroRow.Entry dummy = readMissCache.put(readMissCache.row().newEntry(key));
|
||||
if (dummy == null) {
|
||||
this.hasnotUnique++;
|
||||
} else {
|
||||
this.hasnotDouble++;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// remove entry from hit-cache
|
||||
if (readHitCache != null) {
|
||||
Entry entry = readHitCache.remove(key);
|
||||
if (entry != null) {
|
||||
if (entry == null) {
|
||||
this.readMiss++;
|
||||
} else {
|
||||
this.readHit++;
|
||||
this.cacheDelete++;
|
||||
index.remove(key);
|
||||
return entry;
|
||||
}
|
||||
|
@ -536,14 +587,20 @@ public class kelondroCache implements kelondroIndex {
|
|||
|
||||
if ((writeBufferUnique != null) && (writeBufferUnique.size() > 0)) {
|
||||
Entry entry = writeBufferUnique.removeOne();
|
||||
if (readMissCache != null) readMissCache.put(readMissCache.row().newEntry(entry.getColBytes(index.primarykey())));
|
||||
if (readMissCache != null) {
|
||||
kelondroRow.Entry dummy = readMissCache.put(readMissCache.row().newEntry(entry.getColBytes(index.primarykey())));
|
||||
if (dummy == null) this.hasnotUnique++; else this.hasnotDouble++;
|
||||
}
|
||||
return entry;
|
||||
}
|
||||
|
||||
if ((writeBufferDoubles != null) && (writeBufferDoubles.size() > 0)) {
|
||||
Entry entry = writeBufferDoubles.removeOne();
|
||||
byte[] key = entry.getColBytes(index.primarykey());
|
||||
if (readMissCache != null) readMissCache.put(readMissCache.row().newEntry(key));
|
||||
if (readMissCache != null) {
|
||||
kelondroRow.Entry dummy = readMissCache.put(readMissCache.row().newEntry(key));
|
||||
if (dummy == null) this.hasnotUnique++; else this.hasnotDouble++;
|
||||
}
|
||||
index.remove(key);
|
||||
return entry;
|
||||
}
|
||||
|
@ -551,8 +608,14 @@ public class kelondroCache implements kelondroIndex {
|
|||
Entry entry = index.removeOne();
|
||||
if (entry == null) return null;
|
||||
byte[] key = entry.getColBytes(index.primarykey());
|
||||
if (readMissCache != null) readMissCache.put(readMissCache.row().newEntry(key));
|
||||
if (readHitCache != null) readHitCache.remove(key);
|
||||
if (readMissCache != null) {
|
||||
kelondroRow.Entry dummy = readMissCache.put(readMissCache.row().newEntry(key));
|
||||
if (dummy == null) this.hasnotUnique++; else this.hasnotDouble++;
|
||||
}
|
||||
if (readHitCache != null) {
|
||||
kelondroRow.Entry dummy = readHitCache.remove(key);
|
||||
if (dummy != null) this.cacheDelete++;
|
||||
}
|
||||
return entry;
|
||||
}
|
||||
|
||||
|
|
|
@ -150,7 +150,7 @@ public class kelondroRowCollection {
|
|||
private final void ensureSize(int elements) {
|
||||
int needed = elements * rowdef.objectsize();
|
||||
if (chunkcache.length >= needed) return;
|
||||
byte[] newChunkcache = new byte[needed * 2];
|
||||
byte[] newChunkcache = new byte[needed * 12 / 10]; // increase space by 20%
|
||||
System.arraycopy(chunkcache, 0, newChunkcache, 0, chunkcache.length);
|
||||
chunkcache = newChunkcache;
|
||||
newChunkcache = null;
|
||||
|
|
Loading…
Reference in New Issue
Block a user