diff options
author | dan <dan@noemail.net> | 2010-05-06 18:48:27 +0000 |
---|---|---|
committer | dan <dan@noemail.net> | 2010-05-06 18:48:27 +0000 |
commit | 65be0d8cce1ce87ba6234f59a12f87f1ce9ae331 (patch) | |
tree | 12ec6cd91b3f1f0e5115f3dd1489e7306cfdd642 /src/os_unix.c | |
parent | 5273f58f377316ea9920865c41935f6adf7ce8bb (diff) | |
download | sqlite-65be0d8cce1ce87ba6234f59a12f87f1ce9ae331.tar.gz sqlite-65be0d8cce1ce87ba6234f59a12f87f1ce9ae331.zip |
Instead of transitioning to RECOVER state from CHECKPOINT when a recovery is required, perform the recovery while holding the CHECKPOINT lock.
FossilOrigin-Name: bb0b6021e721c2e4f1533ab18381604c6b7b31d5
Diffstat (limited to 'src/os_unix.c')
-rw-r--r-- | src/os_unix.c | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/src/os_unix.c b/src/os_unix.c index 34f98f55a..72cc06a02 100644 --- a/src/os_unix.c +++ b/src/os_unix.c @@ -5339,12 +5339,7 @@ static int unixShmLock( case SQLITE_SHM_CHECKPOINT: { assert( p->lockState==SQLITE_SHM_UNLOCK || p->lockState==SQLITE_SHM_PENDING - || p->lockState==SQLITE_SHM_RECOVER ); - if( p->lockState==SQLITE_SHM_RECOVER ){ - unixShmUnlock(pFile, p, UNIX_SHM_C); - p->lockState = SQLITE_SHM_CHECKPOINT; - rc = SQLITE_OK; - } + ); if( p->lockState==SQLITE_SHM_UNLOCK ){ rc = unixShmExclusiveLock(pFile, p, UNIX_SHM_B|UNIX_SHM_C); if( rc==SQLITE_OK ){ @@ -5363,7 +5358,7 @@ static int unixShmLock( assert( desiredLock==SQLITE_SHM_RECOVER ); assert( p->lockState==SQLITE_SHM_READ || p->lockState==SQLITE_SHM_READ_FULL - || p->lockState==SQLITE_SHM_CHECKPOINT ); + ); assert( sqlite3_mutex_held(pFile->mutexBuf) ); rc = unixShmExclusiveLock(pFile, p, UNIX_SHM_C); if( rc==SQLITE_OK ){ |