Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix a crash in the check-blocks assert that may occur following an OOM condition. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | freelist-rework |
Files: | files | file ages | folders |
SHA1: |
503f49b0cc1d44795f6f4baa1d279b17 |
User & Date: | dan 2012-10-31 19:27:37.832 |
Context
2012-10-31
| ||
19:30 | Merge the freelist-rework branch with the trunk. check-in: 58f0d07a23 user: dan tags: trunk | |
19:27 | Fix a crash in the check-blocks assert that may occur following an OOM condition. Leaf check-in: 503f49b0cc user: dan tags: freelist-rework | |
18:46 | Remove dead code. Fix a read-lock related problem causing the multi-threaded tests to fail. check-in: f512ea3c4d user: dan tags: freelist-rework | |
Changes
Changes to src/lsm_file.c.
︙ | ︙ | |||
2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 | ** assert() fails. */ int lsmFsIntegrityCheck(lsm_db *pDb){ CheckFreelistCtx ctx; FileSystem *pFS = pDb->pFS; int i; int j; Freelist freelist = {0, 0, 0}; u8 *aUsed; Level *pLevel; Snapshot *pWorker = pDb->pWorker; int nBlock = pWorker->nBlock; aUsed = lsmMallocZero(pDb->pEnv, nBlock); | > | 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 | ** assert() fails. */ int lsmFsIntegrityCheck(lsm_db *pDb){ CheckFreelistCtx ctx; FileSystem *pFS = pDb->pFS; int i; int j; int rc; Freelist freelist = {0, 0, 0}; u8 *aUsed; Level *pLevel; Snapshot *pWorker = pDb->pWorker; int nBlock = pWorker->nBlock; aUsed = lsmMallocZero(pDb->pEnv, nBlock); |
︙ | ︙ | |||
2292 2293 2294 2295 2296 2297 2298 | checkBlocks(pFS, &pLevel->aRhs[i], 0, nBlock, aUsed); } } /* Mark all blocks in the free-list as used */ ctx.aUsed = aUsed; ctx.nBlock = nBlock; | | > | > > | 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 | checkBlocks(pFS, &pLevel->aRhs[i], 0, nBlock, aUsed); } } /* Mark all blocks in the free-list as used */ ctx.aUsed = aUsed; ctx.nBlock = nBlock; rc = lsmWalkFreelist(pDb, checkFreelistCb, (void *)&ctx); if( rc==LSM_OK ){ for(i=0; i<nBlock; i++) assert( aUsed[i]!=0 ); } lsmFree(pDb->pEnv, aUsed); lsmFree(pDb->pEnv, freelist.aEntry); return 1; } #ifndef NDEBUG |
︙ | ︙ |