mirror of
https://github.com/yacy/yacy_search_server.git
synced 2024-09-19 00:01:41 +02:00
fix for not-deleted .gap and .idx files
see also: http://forum.yacy-websuche.de/viewtopic.php?p=22128#p22128 git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@7605 6c8d7289-2bf4-0310-a012-ef5d649a1542
This commit is contained in:
parent
a6935e7dc8
commit
a35d513bd8
|
@ -457,7 +457,7 @@ public class ArrayStack implements BLOB {
|
|||
for (blobItem bi: blobs) {
|
||||
bi.blob.clear();
|
||||
bi.blob.close(false);
|
||||
FileUtils.deletedelete(bi.location);
|
||||
HeapWriter.delete(bi.location);
|
||||
}
|
||||
blobs.clear();
|
||||
}
|
||||
|
@ -903,15 +903,15 @@ public class ArrayStack implements BLOB {
|
|||
}
|
||||
if (!i1.hasNext()) {
|
||||
if (i2.hasNext()) {
|
||||
FileUtils.deletedelete(f1);
|
||||
HeapWriter.delete(f1);
|
||||
if (f2.renameTo(newFile)) return newFile;
|
||||
return f2;
|
||||
}
|
||||
FileUtils.deletedelete(f1);
|
||||
FileUtils.deletedelete(f2);
|
||||
HeapWriter.delete(f1);
|
||||
HeapWriter.delete(f2);
|
||||
return null;
|
||||
} else if (!i2.hasNext()) {
|
||||
FileUtils.deletedelete(f2);
|
||||
HeapWriter.delete(f2);
|
||||
if (f1.renameTo(newFile)) return newFile;
|
||||
return f1;
|
||||
}
|
||||
|
@ -924,18 +924,18 @@ public class ArrayStack implements BLOB {
|
|||
writer.close(true);
|
||||
} catch (IOException e) {
|
||||
Log.logSevere("ArrayStack", "cannot writing or close writing merge, newFile = " + newFile.toString() + ", tmpFile = " + tmpFile.toString() + ": " + e.getMessage(), e);
|
||||
FileUtils.deletedelete(tmpFile);
|
||||
FileUtils.deletedelete(newFile);
|
||||
HeapWriter.delete(tmpFile);
|
||||
HeapWriter.delete(newFile);
|
||||
return null;
|
||||
} catch (RowSpaceExceededException e) {
|
||||
Log.logSevere("ArrayStack", "cannot merge because of memory failure: " + e.getMessage(), e);
|
||||
FileUtils.deletedelete(tmpFile);
|
||||
FileUtils.deletedelete(newFile);
|
||||
HeapWriter.delete(tmpFile);
|
||||
HeapWriter.delete(newFile);
|
||||
return null;
|
||||
}
|
||||
// we don't need the old files any more
|
||||
FileUtils.deletedelete(f1);
|
||||
FileUtils.deletedelete(f2);
|
||||
HeapWriter.delete(f1);
|
||||
HeapWriter.delete(f2);
|
||||
return newFile;
|
||||
}
|
||||
|
||||
|
|
|
@ -157,9 +157,9 @@ public class HeapReader {
|
|||
Log.logSevere("HeapReader", "cannot generate a fingerprint for " + this.heapFile + ": null");
|
||||
return false;
|
||||
}
|
||||
this.fingerprintFileIdx = fingerprintIndexFile(this.heapFile, fingerprint);
|
||||
this.fingerprintFileIdx = HeapWriter.fingerprintIndexFile(this.heapFile, fingerprint);
|
||||
if (!this.fingerprintFileIdx.exists()) this.fingerprintFileIdx = new File(this.fingerprintFileIdx.getAbsolutePath() + ".gz");
|
||||
this.fingerprintFileGap = fingerprintGapFile(this.heapFile, fingerprint);
|
||||
this.fingerprintFileGap = HeapWriter.fingerprintGapFile(this.heapFile, fingerprint);
|
||||
if (!this.fingerprintFileGap.exists()) this.fingerprintFileGap = new File(this.fingerprintFileGap.getAbsolutePath() + ".gz");
|
||||
if (!this.fingerprintFileIdx.exists() || !this.fingerprintFileGap.exists()) {
|
||||
deleteAllFingerprints(this.heapFile, this.fingerprintFileIdx.getName(), this.fingerprintFileGap.getName());
|
||||
|
@ -194,16 +194,6 @@ public class HeapReader {
|
|||
return !this.index.isEmpty();
|
||||
}
|
||||
|
||||
protected static File fingerprintIndexFile(File f, String fingerprint) {
|
||||
assert f != null;
|
||||
return new File(f.getParentFile(), f.getName() + "." + fingerprint + ".idx");
|
||||
}
|
||||
|
||||
protected static File fingerprintGapFile(File f, String fingerprint) {
|
||||
assert f != null;
|
||||
return new File(f.getParentFile(), f.getName() + "." + fingerprint + ".gap");
|
||||
}
|
||||
|
||||
/**
|
||||
* deletion of the fingerprint: this should happen if the heap is written or entries are deleted
|
||||
* if the files are not deleted then it may be possible that they are not used anyway because the
|
||||
|
@ -569,7 +559,7 @@ public class HeapReader {
|
|||
if (fingerprint == null) {
|
||||
Log.logSevere("HeapReader", "cannot write a dump for " + heapFile.getName()+ ": fingerprint is null");
|
||||
} else {
|
||||
File newFingerprintFileGap = fingerprintGapFile(this.heapFile, fingerprint);
|
||||
File newFingerprintFileGap = HeapWriter.fingerprintGapFile(this.heapFile, fingerprint);
|
||||
if (this.fingerprintFileGap != null &&
|
||||
this.fingerprintFileGap.getName().equals(newFingerprintFileGap.getName()) &&
|
||||
this.fingerprintFileGap.exists()) {
|
||||
|
@ -583,7 +573,7 @@ public class HeapReader {
|
|||
free.clear();
|
||||
free = null;
|
||||
if (fingerprint != null) {
|
||||
File newFingerprintFileIdx = fingerprintIndexFile(this.heapFile, fingerprint);
|
||||
File newFingerprintFileIdx = HeapWriter.fingerprintIndexFile(this.heapFile, fingerprint);
|
||||
if (this.fingerprintFileIdx != null &&
|
||||
this.fingerprintFileIdx.getName().equals(newFingerprintFileIdx.getName()) &&
|
||||
this.fingerprintFileIdx.exists()) {
|
||||
|
|
|
@ -141,8 +141,8 @@ public final class HeapWriter {
|
|||
if (fingerprint == null) {
|
||||
Log.logSevere("kelondroBLOBHeapWriter", "cannot write a dump for " + heapFileREADY.getName()+ ": fingerprint is null");
|
||||
} else {
|
||||
new Gap().dump(HeapReader.fingerprintGapFile(this.heapFileREADY, fingerprint));
|
||||
index.dump(HeapReader.fingerprintIndexFile(this.heapFileREADY, fingerprint));
|
||||
new Gap().dump(fingerprintGapFile(this.heapFileREADY, fingerprint));
|
||||
index.dump(fingerprintIndexFile(this.heapFileREADY, fingerprint));
|
||||
Log.logInfo("kelondroBLOBHeapWriter", "wrote a dump for the " + this.index.size() + " index entries of " + heapFileREADY.getName()+ " in " + (System.currentTimeMillis() - start) + " milliseconds.");
|
||||
}
|
||||
index.close();
|
||||
|
@ -154,4 +154,25 @@ public final class HeapWriter {
|
|||
}
|
||||
}
|
||||
|
||||
public static void delete(File f) {
|
||||
File p = f.getParentFile();
|
||||
String n = f.getName() + ".";
|
||||
String[] l = p.list();
|
||||
FileUtils.deletedelete(f);
|
||||
for (String s: l) {
|
||||
if (s.startsWith(n) &&
|
||||
(s.endsWith(".idx") || s.endsWith(".gap")))
|
||||
FileUtils.deletedelete(new File(p, s));
|
||||
}
|
||||
}
|
||||
|
||||
protected static File fingerprintIndexFile(File f, String fingerprint) {
|
||||
assert f != null;
|
||||
return new File(f.getParentFile(), f.getName() + "." + fingerprint + ".idx");
|
||||
}
|
||||
|
||||
protected static File fingerprintGapFile(File f, String fingerprint) {
|
||||
assert f != null;
|
||||
return new File(f.getParentFile(), f.getName() + "." + fingerprint + ".gap");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user