Commit graph

200 commits

Author SHA1 Message Date
Sears Russell
c7fa929e71 This fixes in Stasis issue 22.
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.
2010-04-20 01:09:32 +00:00
Sears Russell
887832582c expose stasis_handle_t up through the buffer manager; add sequential I/O hinting; fix stupid busy-wait in prefetch 2010-04-12 20:54:10 +00:00
Sears Russell
7c5eb2a7e9 added dup method to io handles 2010-04-08 23:50:01 +00:00
Sears Russell
ff2f2e9e1e add TregionPrefetch() 2010-03-31 22:41:33 +00:00
Sears Russell
3c27ed566e add prefetch primitives 2010-03-29 22:29:30 +00:00
Sears Russell
8a5bbd9a38 silence compiler warning 2010-03-29 22:28:32 +00:00
Sears Russell
6deb34f5b2 fix handling of loadPageForOperation during recovery; initialize rid.size in slottedLast 2010-03-22 19:56:55 +00:00
Sears Russell
5ffd1110e9 Added concept of "transaction fingerprints"
The region allocator marks freed regions "Condemned" before actually freeing them.  Condemned regions are associated 
with a transaction; before they can be reused / coalesced the transaction that condemned them must complete.

The region allocator used "TisActiveTransaction(xid)" to determine whether a given transaction had completed.  The 
problem is that Stasis now reuses transaction id's, and condemned regions were never reclaimed in practice.  A transaction
fingerprint is a unique identifier (currently transaction id, rec_lsn) that can be used to distinguish transactions that
did not execute concurrently.

I considered an alternative design based upon end-of-transaction actions.  This would have worked as well, but would 
have been a more invasive change.
2010-02-18 19:12:46 +00:00
Sears Russell
4e100479d1 Add TarrayListDealloc() to arrayList. Remove one region allocation from each array list alloc. Add unit test for dealloc.
Also, removed some old compensations cruft.
2010-02-18 04:12:39 +00:00
Sears Russell
98e0cb1fab implement TregionSize(), add TregionForce() 2010-02-12 16:44:28 +00:00
Sears Russell
0afb9177ac C++ compatibility fix 2010-02-11 22:18:49 +00:00
Sears Russell
1ff9afb753 added new constant: INVALID_SIZE 2010-02-11 20:36:33 +00:00
Sears Russell
49979ffa52 unit test for libredblack 2010-01-21 23:48:43 +00:00
Sears Russell
dbf253275f fix nested top action log race; because of a refactoring mistake, it was releasing a mutex without acquiring it... 2010-01-21 20:27:35 +00:00
Sears Russell
250223086c reordered includes for compatibility with gcc3 2010-01-21 00:03:17 +00:00
Sears Russell
f1f1d888e4 avoid use of -Wno-variadic-macros, which causes an error with gcc 3. 2010-01-20 23:51:54 +00:00
Sears Russell
b1f7d1947a more log refactoring. safeWrites now holds a latch across reserve_entry, write_entry, and write_entry_done 2010-01-19 02:14:09 +00:00
Sears Russell
c8cc188b71 unsigned int -> uint32_t 2010-01-19 01:47:13 +00:00
Sears Russell
d71e248291 removed freeLogEntry 2010-01-11 20:41:59 +00:00
Sears Russell
c30aaa3a1a fix compiler warning; -1 is not comparable to entry->type 2010-01-07 21:50:17 +00:00
Sears Russell
1af589dd18 remove malloc and memcpy from the in_memory_log read path 2009-12-31 23:25:56 +00:00
Sears Russell
1409a9eb27 more refactoring; log handles now manage their log entries memory 2009-12-31 23:01:37 +00:00
Sears Russell
a5788688c8 refactor getUpdateArgs; remove a bunch of casts, fix a bunch of warnings 2009-12-31 20:20:47 +00:00
Sears Russell
9aa1d9d652 pull memcpy out of allocUpdateEntry() 2009-12-31 19:30:40 +00:00
Sears Russell
32e40c949d added log modes to sequentialThroughput benchmark, added methods for concurrent appends to log api (and stubbed them out) 2009-12-31 19:02:34 +00:00
Sears Russell
7ff80f37ef add deferred, end of transaction callbacks. addresses issue 15 2009-12-15 06:30:37 +00:00
Sears Russell
efc6a0eabd add missing function declaration 2009-12-10 01:53:15 +00:00
Sears Russell
cd8c63889d clarify documentation 2009-12-09 19:55:27 +00:00
Sears Russell
83a0ec68fe fix rose bit rot, have unintialized page clear the impl pointer (for tidyness), remove some resolved @todos. 2009-12-04 19:33:09 +00:00
Sears Russell
7d1b702239 revert part of opensolaris patch--pack recordids again 2009-11-30 01:01:30 +00:00
Sears Russell
2ff421bff0 initial opensolaris port 2009-11-29 03:22:36 +00:00
Sears Russell
2535f69fbc switch the concurrent hash to use lru->getStaleAndRemove; fix crashes due to partial leak of thread local pages on thread shutdown 2009-11-24 01:43:36 +00:00
Sears Russell
38b999dfed add missing stlredblack.h header 2009-11-24 01:41:55 +00:00
Sears Russell
675bdce24a wrote some wrappers that emulate redblack; default to stl tree for now 2009-11-24 00:24:18 +00:00
Sears Russell
1b0c10b37b clean up handling of uninitialized pages (removes some special case code) 2009-11-09 23:02:27 +00:00
Sears Russell
795e044ab9 documentation fix 2009-11-09 22:58:37 +00:00
Sears Russell
b4a0f2436b concurrent lru implementation for new buffer manager 2009-11-09 20:53:05 +00:00
Sears Russell
8bd0616f97 new concurrent buffer manager 2009-11-09 19:50:00 +00:00
Sears Russell
f5e3ab2d91 concurrent hashtable seems to be working; still need to work out atomicity primitives (eg; options to leave the bucket locked on success) 2009-10-19 21:55:25 +00:00
Sears Russell
1cf16f62f2 add optional support for gcc atomics to transaction table 2009-10-15 22:46:25 +00:00
Sears Russell
e6a718a7f9 improved concurrency for transaction table 2009-10-15 20:11:43 +00:00
Sears Russell
331f680c09 partial rewrite of transaction table to reduce thread contention 2009-10-15 02:33:08 +00:00
Sears Russell
4565aff9de more refactoring; no more globals in transactionTable.c 2009-10-14 21:22:50 +00:00
Sears Russell
dbe3ecf0d0 refactoring transaction table; moved implementation into its own file. still need to remove globals 2009-10-14 18:57:50 +00:00
Sears Russell
20ef74b104 use pthread_rwlock instead of rwlock userspace emulation of it 2009-10-13 00:29:35 +00:00
Sears Russell
20a3fe9df5 add support for soft commits, and making prior soft commits durable 2009-10-12 19:16:41 +00:00
Sears Russell
942ba7fffc bugfixes + support for hard limits on log size 2009-10-08 22:48:58 +00:00
Sears Russell
6a02f2f159 buffer manager implementation is now determined by an overridable factory method 2009-10-05 22:39:09 +00:00
Sears Russell
24650fa190 buffer manager refactoring; started work on new dirty page table writeback interface (to avoid circular dependencies) 2009-10-05 21:19:01 +00:00
Sears Russell
4689582cb5 improve log performance by disabling O_SYNC by default (and use fdatasync instead) 2009-09-12 16:20:13 +00:00