Skip to content

Commit 03bb20d

Browse files
committed
Lock tweaks.
1 parent 20a51a3 commit 03bb20d

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

vfs/memdb/memdb.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff 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
}

vfs/mvcc/mvcc.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff 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

279276
func (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
}

0 commit comments

Comments
 (0)