test_async.c: Writer-thread should not relinquish mutex when writing a file for which only one file handle is open (fixes bug introduced in (3093)). (CVS 3097)

FossilOrigin-Name: f0c45b7eab219ee812dbd2eb5e1c39fdf52a0ff2
This commit is contained in:
danielk1977 2006-02-14 14:46:41 +00:00
parent 2d9fcaa61c
commit 16825cbebb
3 changed files with 8 additions and 15 deletions

@ -1,5 +1,5 @@
C Account\sfor\sa\smalloc\sfailure\sin\sthe\sasynchronous\swriter\sthread\sin\stest_async.c\s(CVS\s3096)
D 2006-02-14T14:02:08
C test_async.c:\sWriter-thread\sshould\snot\srelinquish\smutex\swhen\swriting\sa\sfile\sfor\swhich\sonly\sone\sfile\shandle\sis\sopen\s(fixes\sbug\sintroduced\sin\s(3093)).\s(CVS\s3097)
D 2006-02-14T14:46:42
F Makefile.in 5d8dff443383918b700e495de42ec65bc1c8865b
F Makefile.linux-gcc 74ba0eadf88748a9ce3fd03d2a3ede2e6715baec
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
@ -80,7 +80,7 @@ F src/test4.c ff4e9406b3d2809966d8f0e82468ac5508be9f56
F src/test5.c 7162f8526affb771c4ed256826eee7bb9eca265f
F src/test6.c 60a02961ceb7b3edc25f5dc5c1ac2556622a76de
F src/test7.c d28d3e62f9594923648fc6a8fb030eba36564ba1
F src/test_async.c 2caf868189978e12feece7ec3db5e6b6829cedf4
F src/test_async.c e3deaedd4d86a56391b81808fde9e44fbd92f1d3
F src/test_md5.c 6c42bc0a3c0b54be34623ff77a0eec32b2fa96e3
F src/test_server.c 087b92a39d883e3fa113cae259d64e4c7438bc96
F src/tokenize.c 382b3bb0ca26eb9153b5d20b246ef512a114a24f
@ -353,7 +353,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl a99cf5f6d8bd4d5537584a2b342f0fb9fa601d8b
F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
P 239e53b4f29b4faf2dbdc2aebd2332ad25b14286
R 2158cc9ca69931f8ebc942cba11a47eb
P 2f2a8a69cb380dc30b85a792c369020fec3c79a5
R 65c6be40c02ae56ad5b63d5b72efbfaf
U danielk1977
Z 6ea576e81af03625c298029f69fe98ad
Z 15534709d725337aa40290e56295a82a

@ -1 +1 @@
2f2a8a69cb380dc30b85a792c369020fec3c79a5
f0c45b7eab219ee812dbd2eb5e1c39fdf52a0ff2

@ -498,10 +498,6 @@ static int asyncRead(OsFile *id, void *obuf, int amt){
AsyncFile *pFile = (AsyncFile *)id;
OsFile *pBase = pFile->pBaseRead;
if( !pBase ){
pBase = pFile->pBaseWrite;
}
/* If an I/O error has previously occurred on this file, then all
** subsequent operations fail.
*/
@ -588,9 +584,6 @@ int asyncFileSize(OsFile *id, i64 *pSize){
** file-system.
*/
pBase = ((AsyncFile *)id)->pBaseRead;
if( !pBase ){
pBase = ((AsyncFile *)id)->pBaseWrite;
}
if( pBase ){
rc = sqlite3OsFileSize(pBase, &s);
}
@ -1026,7 +1019,7 @@ static void *asyncWriterThread(void *NotUsed){
pthread_mutex_lock(&async.queueMutex);
holdingMutex = 1;
if( rc==SQLITE_OK ){
pFile->pBaseWrite = pBase;
pFile->pBaseRead = pBase;
}
break;
}