File tree Expand file tree Collapse file tree 2 files changed +7
-7
lines changed
Expand file tree Collapse file tree 2 files changed +7
-7
lines changed Original file line number Diff line number Diff line change @@ -223,7 +223,7 @@ func (m *memFile) Lock(lock vfs.LockLevel) error {
223223 m .reserved = true
224224
225225 case vfs .LOCK_EXCLUSIVE :
226- if m .lock < vfs .LOCK_PENDING {
226+ if m .lock == vfs .LOCK_RESERVED {
227227 m .lock = vfs .LOCK_PENDING
228228 m .pending = true
229229 }
Original file line number Diff line number Diff line change @@ -252,9 +252,8 @@ func (m *mvccFile) Lock(lock vfs.LockLevel) error {
252252 }
253253 defer time .AfterFunc (time .Millisecond , m .waiter .Broadcast ).Stop ()
254254 for m .owner != nil {
255- // Our snapshot is invalid.
256255 if m .data != nil && m .data != m .mvccDB .data {
257- return sqlite3 .BUSY_SNAPSHOT
256+ return sqlite3 .BUSY_SNAPSHOT // Our snapshot is invalid.
258257 }
259258 if time .Since (before ) > time .Millisecond {
260259 return sqlite3 .BUSY
@@ -266,17 +265,16 @@ func (m *mvccFile) Lock(lock vfs.LockLevel) error {
266265 case m .data == nil :
267266 m .data = m .mvccDB .data
268267 case m .data != m .mvccDB .data :
269- // Our snapshot is invalid.
270- return sqlite3 .BUSY_SNAPSHOT
268+ return sqlite3 .BUSY_SNAPSHOT // Our snapshot is invalid.
271269 }
272270 // Take ownership.
273- m .wrflag = false
274271 m .lock = lock
275272 m .owner = m
276273 return nil
277274}
278275
279276func (m * mvccFile ) Unlock (lock vfs.LockLevel ) error {
277+ m .wrflag = false // SQLite calls unlock even if locking is unsuccessful.
280278 if m .lock <= lock {
281279 return nil
282280 }
@@ -287,7 +285,9 @@ func (m *mvccFile) Unlock(lock vfs.LockLevel) error {
287285 // Relase ownership, commit changes.
288286 if m .owner == m {
289287 m .owner = nil
290- m .mvccDB .data = m .data
288+ if m .lock == vfs .LOCK_EXCLUSIVE {
289+ m .mvccDB .data = m .data
290+ }
291291 if m .waiter != nil {
292292 m .waiter .Broadcast ()
293293 }
You can’t perform that action at this time.
0 commit comments