Skip to content

Commit 66f6030

Browse files
committed
This should fix blockage reported by Ilya Eremin (@ilya071294) privately.
1 parent daf72b1 commit 66f6030

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

src/jrd/PageToBufferMap.h

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,23 +53,32 @@ class PageToBufferMap
5353
{
5454
Item* item = m_map.lookup(page);
5555

56-
if (!item)
57-
return nullptr;
58-
59-
if (m_list != item)
56+
if (item)
6057
{
61-
listRemove(item);
62-
listInsert(item);
58+
if (item->m_bdb->bdb_page == page)
59+
{
60+
// Move item into MRU position
61+
if (m_list != item)
62+
{
63+
listRemove(item);
64+
listInsert(item);
65+
}
66+
return item->m_bdb;
67+
}
68+
69+
// bdb was reassigned
70+
remove(page);
6371
}
6472

65-
return item->m_bdb;
73+
return nullptr;
6674
}
6775

6876
void put(BufferDesc* bdb)
6977
{
7078
Item* item = m_map.lookup(bdb->bdb_page);
7179
if (item)
7280
{
81+
fb_assert(item->m_bdb != bdb);
7382
if (m_list != item)
7483
listRemove(item);
7584
}

0 commit comments

Comments
 (0)