This commit is contained in:
Hongze Cheng 2022-03-03 08:31:00 +00:00
parent 64f290409e
commit 983339f1f6
1 changed files with 24 additions and 9 deletions

View File

@ -260,6 +260,9 @@ int tdbPagerFetchPage(SPager *pPager, SPgno pgno, SPage **ppPage) {
if (pPage->pPager == NULL) { if (pPage->pPager == NULL) {
ASSERT(pgno < pPager->dbOrigSize); ASSERT(pgno < pPager->dbOrigSize);
// tdbWLockPage(pPage);
if (pPage->pPager == NULL) {
ret = tdbPagerReadPage(pPager, pPage); ret = tdbPagerReadPage(pPager, pPage);
if (ret < 0) { if (ret < 0) {
return -1; return -1;
@ -271,6 +274,9 @@ int tdbPagerFetchPage(SPager *pPager, SPgno pgno, SPage **ppPage) {
// } // }
pPage->pPager = pPager; pPage->pPager = pPager;
}
// tdbWUnlockPage(pPage);
} else { } else {
ASSERT(pPage->pPager == pPager); ASSERT(pPage->pPager == pPager);
} }
@ -302,9 +308,18 @@ int tdbPagerNewPage(SPager *pPager, SPgno *ppgno, SPage **ppPage) {
ASSERT(pPage->pPager == NULL); ASSERT(pPage->pPager == NULL);
// TODO: a race condition problem may occur here
// tdbWLockPage(pPage);
// TODO: zero init the new page // TODO: zero init the new page
// (*initNewPage)(pPage, arg); // (*initNewPage)(pPage, arg);
pPage->pPager = NULL;
// tdbWunlockPage(pPage);
*ppPage = pPage; *ppPage = pPage;
return 0; return 0;
} }