Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | 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) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
f0c45b7eab219ee812dbd2eb5e1c39fd |
User & Date: | danielk1977 2006-02-14 14:46:42.000 |
Context
2006-02-15
| ||
02:00 | Update the configure script to use AC_HELP_STRING. (CVS 3098) (check-in: 92be79debf user: drh tags: trunk) | |
2006-02-14
| ||
14:46 | 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) (check-in: f0c45b7eab user: danielk1977 tags: trunk) | |
14:02 | Account for a malloc failure in the asynchronous writer thread in test_async.c (CVS 3096) (check-in: 2f2a8a69cb user: danielk1977 tags: trunk) | |
Changes
Changes to src/test_async.c.
︙ | ︙ | |||
494 495 496 497 498 499 500 | static int asyncRead(OsFile *id, void *obuf, int amt){ int rc = SQLITE_OK; i64 filesize; int nRead; AsyncFile *pFile = (AsyncFile *)id; OsFile *pBase = pFile->pBaseRead; | < < < < | 494 495 496 497 498 499 500 501 502 503 504 505 506 507 | static int asyncRead(OsFile *id, void *obuf, int amt){ int rc = SQLITE_OK; i64 filesize; int nRead; AsyncFile *pFile = (AsyncFile *)id; OsFile *pBase = pFile->pBaseRead; /* If an I/O error has previously occurred on this file, then all ** subsequent operations fail. */ if( async.ioError!=SQLITE_OK ){ return async.ioError; } |
︙ | ︙ | |||
584 585 586 587 588 589 590 | /* Read the filesystem size from the base file. If pBaseRead is NULL, this ** means the file hasn't been opened yet. In this case all relevant data ** must be in the write-op queue anyway, so we can omit reading from the ** file-system. */ pBase = ((AsyncFile *)id)->pBaseRead; | < < < | 580 581 582 583 584 585 586 587 588 589 590 591 592 593 | /* Read the filesystem size from the base file. If pBaseRead is NULL, this ** means the file hasn't been opened yet. In this case all relevant data ** must be in the write-op queue anyway, so we can omit reading from the ** file-system. */ pBase = ((AsyncFile *)id)->pBaseRead; if( pBase ){ rc = sqlite3OsFileSize(pBase, &s); } if( rc==SQLITE_OK ){ AsyncWrite *p; for(p=async.pQueueFirst; p; p = p->pNext){ |
︙ | ︙ | |||
1022 1023 1024 1025 1026 1027 1028 | TRACE(("OPEN %s delFlag=%d\n", p->zBuf, delFlag)); assert(pFile->pBaseRead==0 && pFile->pBaseWrite==0); rc = xOrigOpenExclusive(p->zBuf, &pBase, delFlag); assert( holdingMutex==0 ); pthread_mutex_lock(&async.queueMutex); holdingMutex = 1; if( rc==SQLITE_OK ){ | | | 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 | TRACE(("OPEN %s delFlag=%d\n", p->zBuf, delFlag)); assert(pFile->pBaseRead==0 && pFile->pBaseWrite==0); rc = xOrigOpenExclusive(p->zBuf, &pBase, delFlag); assert( holdingMutex==0 ); pthread_mutex_lock(&async.queueMutex); holdingMutex = 1; if( rc==SQLITE_OK ){ pFile->pBaseRead = pBase; } break; } default: assert(!"Illegal value for AsyncWrite.op"); } |
︙ | ︙ |