Skip to content

Commit

Permalink
fix(core): restore cache journal mode to TRUNCATE and tweak tokio tes…
Browse files Browse the repository at this point in the history
…t in CacheDB (denoland#18469)

Fast-follow on denoland#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.
  • Loading branch information
mmastrac committed Mar 28, 2023
1 parent 35fd858 commit c65149c
Showing 1 changed file with 8 additions and 9 deletions.
17 changes: 8 additions & 9 deletions cli/cache/cache_db.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
}
Expand Down Expand Up @@ -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.
Expand Down

0 comments on commit c65149c

Please sign in to comment.