Zhoutall / stasis

Automatically exported from code.google.com/p/stasis
Other
0 stars 0 forks source link

Deadlock in concurrent buffer manager. #22

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Pinning one page, then pinning a bunch of other ones leads to a deadlock in
the new concurrent buffer manager.  This is being tickled by LSM tree
implementations, and the unit test "stalePinConcurrentBufferManager" in
check_bufferManager.c

Original issue reported on code.google.com by sears.ru...@gmail.com on 11 Feb 2010 at 9:57

GoogleCodeExporter commented 9 years ago
This was fixed in Stasis r1378.  Replacement policies now track the pin count 
of each
page that they interact with.  This behavior used to live in bufferHash, and had
never been ported to concurrentBufferManager.

For various reasons, the pin counts have to be updated atomically with the LRU 
state.
 This would be very difficult to do inside of concurrentBufferManager, which
sometimes needs to add and remove pages to replacement policies without holding 
any
other latches.

Original comment by sears.ru...@gmail.com on 20 Apr 2010 at 1:10