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) {
|
for (blobItem bi: blobs) {
|
||||||
bi.blob.clear();
|
bi.blob.clear();
|
||||||
bi.blob.close(false);
|
bi.blob.close(false);
|
||||||
FileUtils.deletedelete(bi.location);
|
HeapWriter.delete(bi.location);
|
||||||
}
|
}
|
||||||
blobs.clear();
|
blobs.clear();
|
||||||
}
|
}
|
||||||
|
@ -903,15 +903,15 @@ public class ArrayStack implements BLOB {
|
||||||
}
|
}
|
||||||
if (!i1.hasNext()) {
|
if (!i1.hasNext()) {
|
||||||
if (i2.hasNext()) {
|
if (i2.hasNext()) {
|
||||||
FileUtils.deletedelete(f1);
|
HeapWriter.delete(f1);
|
||||||
if (f2.renameTo(newFile)) return newFile;
|
if (f2.renameTo(newFile)) return newFile;
|
||||||
return f2;
|
return f2;
|
||||||
}
|
}
|
||||||
FileUtils.deletedelete(f1);
|
HeapWriter.delete(f1);
|
||||||
FileUtils.deletedelete(f2);
|
HeapWriter.delete(f2);
|
||||||
return null;
|
return null;
|
||||||
} else if (!i2.hasNext()) {
|
} else if (!i2.hasNext()) {
|
||||||
FileUtils.deletedelete(f2);
|
HeapWriter.delete(f2);
|
||||||
if (f1.renameTo(newFile)) return newFile;
|
if (f1.renameTo(newFile)) return newFile;
|
||||||
return f1;
|
return f1;
|
||||||
}
|
}
|
||||||
|
@ -924,18 +924,18 @@ public class ArrayStack implements BLOB {
|
||||||
writer.close(true);
|
writer.close(true);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
Log.logSevere("ArrayStack", "cannot writing or close writing merge, newFile = " + newFile.toString() + ", tmpFile = " + tmpFile.toString() + ": " + e.getMessage(), e);
|
Log.logSevere("ArrayStack", "cannot writing or close writing merge, newFile = " + newFile.toString() + ", tmpFile = " + tmpFile.toString() + ": " + e.getMessage(), e);
|
||||||
FileUtils.deletedelete(tmpFile);
|
HeapWriter.delete(tmpFile);
|
||||||
FileUtils.deletedelete(newFile);
|
HeapWriter.delete(newFile);
|
||||||
return null;
|
return null;
|
||||||
} catch (RowSpaceExceededException e) {
|
} catch (RowSpaceExceededException e) {
|
||||||
Log.logSevere("ArrayStack", "cannot merge because of memory failure: " + e.getMessage(), e);
|
Log.logSevere("ArrayStack", "cannot merge because of memory failure: " + e.getMessage(), e);
|
||||||
FileUtils.deletedelete(tmpFile);
|
HeapWriter.delete(tmpFile);
|
||||||
FileUtils.deletedelete(newFile);
|
HeapWriter.delete(newFile);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
// we don't need the old files any more
|
// we don't need the old files any more
|
||||||
FileUtils.deletedelete(f1);
|
HeapWriter.delete(f1);
|
||||||
FileUtils.deletedelete(f2);
|
HeapWriter.delete(f2);
|
||||||
return newFile;
|
return newFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -157,9 +157,9 @@ public class HeapReader {
|
||||||
Log.logSevere("HeapReader", "cannot generate a fingerprint for " + this.heapFile + ": null");
|
Log.logSevere("HeapReader", "cannot generate a fingerprint for " + this.heapFile + ": null");
|
||||||
return false;
|
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");
|
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.fingerprintFileGap.exists()) this.fingerprintFileGap = new File(this.fingerprintFileGap.getAbsolutePath() + ".gz");
|
||||||
if (!this.fingerprintFileIdx.exists() || !this.fingerprintFileGap.exists()) {
|
if (!this.fingerprintFileIdx.exists() || !this.fingerprintFileGap.exists()) {
|
||||||
deleteAllFingerprints(this.heapFile, this.fingerprintFileIdx.getName(), this.fingerprintFileGap.getName());
|
deleteAllFingerprints(this.heapFile, this.fingerprintFileIdx.getName(), this.fingerprintFileGap.getName());
|
||||||
|
@ -194,16 +194,6 @@ public class HeapReader {
|
||||||
return !this.index.isEmpty();
|
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
|
* 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
|
* 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) {
|
if (fingerprint == null) {
|
||||||
Log.logSevere("HeapReader", "cannot write a dump for " + heapFile.getName()+ ": fingerprint is null");
|
Log.logSevere("HeapReader", "cannot write a dump for " + heapFile.getName()+ ": fingerprint is null");
|
||||||
} else {
|
} else {
|
||||||
File newFingerprintFileGap = fingerprintGapFile(this.heapFile, fingerprint);
|
File newFingerprintFileGap = HeapWriter.fingerprintGapFile(this.heapFile, fingerprint);
|
||||||
if (this.fingerprintFileGap != null &&
|
if (this.fingerprintFileGap != null &&
|
||||||
this.fingerprintFileGap.getName().equals(newFingerprintFileGap.getName()) &&
|
this.fingerprintFileGap.getName().equals(newFingerprintFileGap.getName()) &&
|
||||||
this.fingerprintFileGap.exists()) {
|
this.fingerprintFileGap.exists()) {
|
||||||
|
@ -583,7 +573,7 @@ public class HeapReader {
|
||||||
free.clear();
|
free.clear();
|
||||||
free = null;
|
free = null;
|
||||||
if (fingerprint != null) {
|
if (fingerprint != null) {
|
||||||
File newFingerprintFileIdx = fingerprintIndexFile(this.heapFile, fingerprint);
|
File newFingerprintFileIdx = HeapWriter.fingerprintIndexFile(this.heapFile, fingerprint);
|
||||||
if (this.fingerprintFileIdx != null &&
|
if (this.fingerprintFileIdx != null &&
|
||||||
this.fingerprintFileIdx.getName().equals(newFingerprintFileIdx.getName()) &&
|
this.fingerprintFileIdx.getName().equals(newFingerprintFileIdx.getName()) &&
|
||||||
this.fingerprintFileIdx.exists()) {
|
this.fingerprintFileIdx.exists()) {
|
||||||
|
|
|
@ -141,8 +141,8 @@ public final class HeapWriter {
|
||||||
if (fingerprint == null) {
|
if (fingerprint == null) {
|
||||||
Log.logSevere("kelondroBLOBHeapWriter", "cannot write a dump for " + heapFileREADY.getName()+ ": fingerprint is null");
|
Log.logSevere("kelondroBLOBHeapWriter", "cannot write a dump for " + heapFileREADY.getName()+ ": fingerprint is null");
|
||||||
} else {
|
} else {
|
||||||
new Gap().dump(HeapReader.fingerprintGapFile(this.heapFileREADY, fingerprint));
|
new Gap().dump(fingerprintGapFile(this.heapFileREADY, fingerprint));
|
||||||
index.dump(HeapReader.fingerprintIndexFile(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.");
|
Log.logInfo("kelondroBLOBHeapWriter", "wrote a dump for the " + this.index.size() + " index entries of " + heapFileREADY.getName()+ " in " + (System.currentTimeMillis() - start) + " milliseconds.");
|
||||||
}
|
}
|
||||||
index.close();
|
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