mirror of
https://github.com/denoland/deno.git
synced 2024-12-21 23:04:45 -05:00
fix(core): restore cache journal mode to TRUNCATE and tweak tokio test in CacheDB (#18469)
Fast-follow on #18401 -- the reason that some tests were panicking in the `CacheDB` `impl Drop` was that the cache itself was being dropped during panic and the runtime may or may not still exist at that point. We can reduce the actual tokio runtime testing to where it's needed. In addition, we return the journal mode to `TRUNCATE` to avoid the risk of data corruption.
This commit is contained in:
parent
35fd8583ef
commit
c65149c0a0
1 changed files with 8 additions and 9 deletions
17
cli/cache/cache_db.rs
vendored
17
cli/cache/cache_db.rs
vendored
|
@ -39,7 +39,7 @@ impl CacheDBConfiguration {
|
|||
fn create_combined_sql(&self) -> String {
|
||||
format!(
|
||||
"
|
||||
PRAGMA journal_mode=OFF;
|
||||
PRAGMA journal_mode=TRUNCATE;
|
||||
PRAGMA synchronous=NORMAL;
|
||||
PRAGMA temp_store=memory;
|
||||
PRAGMA page_size=4096;
|
||||
|
@ -83,7 +83,8 @@ impl Drop for CacheDB {
|
|||
_ => return,
|
||||
};
|
||||
|
||||
// TODO(mmastrac): we should ensure tokio runtimes are consistently available or not
|
||||
// If Deno is panicking, tokio is sometimes gone before we have a chance to shutdown. In
|
||||
// that case, we just allow the drop to happen as expected.
|
||||
if tokio::runtime::Handle::try_current().is_err() {
|
||||
return;
|
||||
}
|
||||
|
@ -166,13 +167,11 @@ impl CacheDB {
|
|||
|
||||
fn spawn_eager_init_thread(&self) {
|
||||
let clone = self.clone();
|
||||
// TODO(mmastrac): we should ensure tokio runtimes are consistently available or not
|
||||
if tokio::runtime::Handle::try_current().is_ok() {
|
||||
tokio::task::spawn_blocking(move || {
|
||||
let lock = clone.conn.lock();
|
||||
clone.initialize(&lock);
|
||||
});
|
||||
}
|
||||
debug_assert!(tokio::runtime::Handle::try_current().is_ok());
|
||||
tokio::task::spawn_blocking(move || {
|
||||
let lock = clone.conn.lock();
|
||||
clone.initialize(&lock);
|
||||
});
|
||||
}
|
||||
|
||||
/// Open the connection in memory or on disk.
|
||||
|
|
Loading…
Reference in a new issue