3
我有一些集成測試查詢OrientDB plocal圖形數據庫。無法訪問OrientDB plocal數據庫。文件'.ocf'被另一個進程鎖定
我有一個夾具,它將一些數據加載到數據庫中。如果夾具作爲每個測試setUp()
方法的一部分加載,則一切正常,測試按預期運行。
由於所有測試的夾具都是相同的,因此在執行測試開始之前,只需加載一次夾具就很有意義。
我正在使用maven構建項目。在pre-integration-test
階段我調用java類(通過exec-maven-plugin
),它確實是這樣的:
String[] consoleArgs = { scriptUrl.getPath() };
OConsoleDatabaseApp consoleApp = new OConsoleDatabaseApp(consoleArgs);
try {
consoleApp.dropDatabase(iURL, TESTDB_USER, TESTDB_PASSWORD, storageType);
consoleApp.createDatabase(iURL, TESTDB_USER, TESTDB_PASSWORD, storageType, "graph");
} catch (IOException e1) {
throw new IllegalStateException(e1);
}
if (consoleApp.run() != 1) {
throw new IllegalStateException(ERROR_LOADING_SCHEMA);
}
consoleApp.disconnect();
consoleApp.close();
這個類的調用結束,但是當第一個集成測試嘗試訪問該數據庫中,我得到一個失敗。
例外:
com.orientechnologies.orient.core.exception.OStorageException: Cannot open local storage 'target/databases/benchmark-integration' with mode=rw
Caused by: com.orientechnologies.orient.core.exception.OSerializationException: Cannot load database's configuration. The database seems to be corrupted.
Caused by: com.orientechnologies.common.concur.lock.OLockException: File 'target\databases\benchmark-integration\database.ocf' is locked by another process, maybe the database is in use by another process.
看來我忘了裝夾具後釋放的東西。
那麼,如果您在該代碼中有異常,則不會關閉數據庫。 –