Unverified 提交 0462af5c authored 作者: Noel Grandin's avatar Noel Grandin 提交者: GitHub

Merge pull request #1471 from grandinj/bug1350_freeListPagesPerList

issue 1350: TestCrashAPI: PageStore.freeListPagesPerList
......@@ -549,13 +549,15 @@ public class Database implements DataHandler {
if (store != null) {
store.closeImmediately();
}
if (pageStore != null) {
try {
pageStore.close();
} catch (DbException e) {
// ignore
synchronized(this) {
if (pageStore != null) {
try {
pageStore.close();
} catch (DbException e) {
// ignore
}
pageStore = null;
}
pageStore = null;
}
if (lock != null) {
stopServer();
......@@ -2664,19 +2666,21 @@ public class Database implements DataHandler {
}
return null;
}
if (pageStore == null) {
pageStore = new PageStore(this, databaseName +
Constants.SUFFIX_PAGE_FILE, accessModeData, cacheSize);
if (pageSize != Constants.DEFAULT_PAGE_SIZE) {
pageStore.setPageSize(pageSize);
}
if (!readOnly && fileLockMethod == FileLockMethod.FS) {
pageStore.setLockFile(true);
synchronized (this) {
if (pageStore == null) {
pageStore = new PageStore(this, databaseName +
Constants.SUFFIX_PAGE_FILE, accessModeData, cacheSize);
if (pageSize != Constants.DEFAULT_PAGE_SIZE) {
pageStore.setPageSize(pageSize);
}
if (!readOnly && fileLockMethod == FileLockMethod.FS) {
pageStore.setLockFile(true);
}
pageStore.setLogMode(logMode);
pageStore.open();
}
pageStore.setLogMode(logMode);
pageStore.open();
return pageStore;
}
return pageStore;
}
/**
......@@ -2925,28 +2929,33 @@ public class Database implements DataHandler {
if (log < 0 || log > 2) {
throw DbException.getInvalidValueException("LOG", log);
}
if (pageStore != null) {
if (log != PageStore.LOG_MODE_SYNC ||
pageStore.getLogMode() != PageStore.LOG_MODE_SYNC) {
// write the log mode in the trace file when enabling or
// disabling a dangerous mode
trace.error(null, "log {0}", log);
}
this.logMode = log;
pageStore.setLogMode(log);
}
if (store != null) {
this.logMode = log;
return;
}
synchronized (this) {
if (pageStore != null) {
if (log != PageStore.LOG_MODE_SYNC ||
pageStore.getLogMode() != PageStore.LOG_MODE_SYNC) {
// write the log mode in the trace file when enabling or
// disabling a dangerous mode
trace.error(null, "log {0}", log);
}
this.logMode = log;
pageStore.setLogMode(log);
}
}
}
public int getLogMode() {
if (pageStore != null) {
return pageStore.getLogMode();
}
if (store != null) {
return logMode;
}
synchronized (this) {
if (pageStore != null) {
return pageStore.getLogMode();
}
}
return PageStore.LOG_MODE_OFF;
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论