aboutsummaryrefslogtreecommitdiff
path: root/src/bench
diff options
context:
space:
mode:
authorfurszy <matiasfurszyfer@protonmail.com>2024-05-16 11:43:12 -0300
committerfurszy <matiasfurszyfer@protonmail.com>2024-05-17 12:49:59 -0300
commit7c8abf3c2001152423da06d25f9f4906611685ea (patch)
tree1df1ed696ce2df3a4ae26d5e52340a6cc37ce81b /src/bench
parentdd42a5ddea6a72e1e9cad54f8352c76b0b701973 (diff)
bench: bugfix, properly release wallet before erasing directory
Since the wallet is appended to the global WalletContext during creation, merely calling 'reset()' on the benchmark shared_pointer is insufficient to destruct the wallet. This no destruction of the wallet results in the db connection remaining open, which was the cause of the 'fs::remove_all()' error in Windows. Co-Authored-By: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
Diffstat (limited to 'src/bench')
-rw-r--r--src/bench/wallet_create.cpp14
1 files changed, 5 insertions, 9 deletions
diff --git a/src/bench/wallet_create.cpp b/src/bench/wallet_create.cpp
index 618d5bc80c..5c0557bf6f 100644
--- a/src/bench/wallet_create.cpp
+++ b/src/bench/wallet_create.cpp
@@ -34,14 +34,15 @@ static void WalletCreate(benchmark::Bench& bench, bool encrypted)
bilingual_str error_string;
std::vector<bilingual_str> warnings;
- fs::path wallet_path = test_setup->m_path_root / strprintf("test_wallet_%d", random.rand32()).c_str();
+ auto wallet_path = fs::PathToString(test_setup->m_path_root / "test_wallet");
bench.run([&] {
- auto wallet = CreateWallet(context, wallet_path.utf8string(), /*load_on_start=*/std::nullopt, options, status, error_string, warnings);
+ auto wallet = CreateWallet(context, wallet_path, /*load_on_start=*/std::nullopt, options, status, error_string, warnings);
assert(status == DatabaseStatus::SUCCESS);
assert(wallet != nullptr);
- // Cleanup
- wallet.reset();
+ // Release wallet
+ RemoveWallet(context, wallet, /*load_on_start=*/ std::nullopt);
+ UnloadWallet(std::move(wallet));
fs::remove_all(wallet_path);
});
}
@@ -49,14 +50,9 @@ static void WalletCreate(benchmark::Bench& bench, bool encrypted)
static void WalletCreatePlain(benchmark::Bench& bench) { WalletCreate(bench, /*encrypted=*/false); }
static void WalletCreateEncrypted(benchmark::Bench& bench) { WalletCreate(bench, /*encrypted=*/true); }
-#ifndef _MSC_VER
-// TODO: Being built with MSVC, the fs::remove_all() call in
-// the WalletCreate() fails with the error "The process cannot
-// access the file because it is being used by another process."
#ifdef USE_SQLITE
BENCHMARK(WalletCreatePlain, benchmark::PriorityLevel::LOW);
BENCHMARK(WalletCreateEncrypted, benchmark::PriorityLevel::LOW);
#endif
-#endif
} // namespace wallet