提交 02b91ecc authored 作者: Thomas Mueller's avatar Thomas Mueller

--no commit message

--no commit message
上级 9038f7a4
......@@ -359,9 +359,7 @@ public class SysProperties {
* System property <code>h2.reuseSpaceQuickly</code> (default: true).<br />
* Reuse space in database files quickly.
*/
int test;
// public static final boolean REUSE_SPACE_QUICKLY = getBooleanSetting("h2.reuseSpaceQuickly", true);
public static final boolean REUSE_SPACE_QUICKLY = getBooleanSetting("h2.reuseSpaceQuickly", false);
public static final boolean REUSE_SPACE_QUICKLY = getBooleanSetting("h2.reuseSpaceQuickly", true);
/**
* System property <code>h2.runFinalize</code> (default: true).<br />
......
......@@ -77,8 +77,8 @@ public class FileSystemMemory extends FileSystem {
for (int i = 0;; i++) {
int test;
String n = name + RandomUtils.getSecureLong() + suffix;
// String n = name + i + suffix;
// String n = name + RandomUtils.getSecureLong() + suffix;
String n = name + i + suffix;
if (!exists(n)) {
......
......@@ -193,4 +193,8 @@ public class FileUtils {
FileSystem.getInstance(fileName).delete(fileName);
}
public static long getLastModified(String fileName) {
return FileSystem.getInstance(fileName).getLastModified(fileName);
}
}
......@@ -20,22 +20,38 @@ public class TempFileDeleter {
private static final ReferenceQueue QUEUE = new ReferenceQueue();
private static final HashMap REF_MAP = new HashMap();
private static class TempFile {
String fileName;
long lastModified;
}
public static synchronized Reference addFile(String fileName, Object file) {
FileUtils.trace("TempFileDeleter.addFile", fileName, file);
PhantomReference ref = new PhantomReference(file, QUEUE);
REF_MAP.put(ref, fileName);
TempFile f = new TempFile();
f.fileName = fileName;
f.lastModified = FileUtils.getLastModified(fileName);
REF_MAP.put(ref, f);
deleteUnused();
return ref;
}
public static synchronized void deleteFile(Reference ref, String fileName) {
if (ref != null) {
String f2 = (String) REF_MAP.remove(ref);
if (SysProperties.CHECK && f2 != null && fileName != null && !f2.equals(fileName)) {
throw Message.getInternalError("f2:" + f2 + " f:" + fileName);
TempFile f2 = (TempFile) REF_MAP.remove(ref);
if (f2 != null) {
if (SysProperties.CHECK && fileName != null && !f2.fileName.equals(fileName)) {
throw Message.getInternalError("f2:" + f2.fileName + " f:" + fileName);
}
fileName = f2.fileName;
long mod = FileUtils.getLastModified(fileName);
if (mod != f2.lastModified) {
// the file has been deleted and a new one created
// or it has been modified afterwards
return;
}
}
fileName = f2;
}
if (fileName != null && FileUtils.exists(fileName)) {
try {
......@@ -64,9 +80,9 @@ public class TempFileDeleter {
public static void stopAutoDelete(Reference ref, String fileName) {
FileUtils.trace("TempFileDeleter.stopAutoDelete", fileName, ref);
if (ref != null) {
String f2 = (String) REF_MAP.remove(ref);
if (SysProperties.CHECK && (f2 == null || !f2.equals(fileName))) {
throw Message.getInternalError("f2:" + f2 + " f:" + fileName);
TempFile f2 = (TempFile) REF_MAP.remove(ref);
if (SysProperties.CHECK && (f2 == null || !f2.fileName.equals(fileName))) {
throw Message.getInternalError("f2:" + f2.fileName + " f:" + fileName);
}
}
deleteUnused();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论