You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
libsql: Use RwLock instead of RefCell for local connection (#2118)
The `local::Connection` struct has the following safety comments:
```rust
// SAFETY: This is safe because we compile sqlite3 w/ SQLITE_THREADSAFE=1
unsafe impl Send for Connection {}
// SAFETY: This is safe because we compile sqlite3 w/ SQLITE_THREADSAFE=1
unsafe impl Sync for Connection {}
```
This is correct with respect to the `*mut ffi::sqlite3` field, but NOT
with respect to the `RefCell<Option<AuthHook>>` field. RefCell is not
thread safe. Heavy load in a real application using local databases
occasionally sees panics due to concurrent access to this RefCell.
I don't have a simple repro right now, but this change eliminated the
panics for me. Let me know if you'd like some extra work done like a
repro or tests (not sure I'll have time but I will try..)
0 commit comments