Commit graph

153 commits

Author SHA1 Message Date
Sears Russell
175c26e125 add flush and shutdown apis to concurrent ringbuffer, tighten up get_rd_buf api 2011-04-18 20:21:16 +00:00
Sears Russell
e087c9c073 add alternative implementation of min aggregate for small sets. It avoids red black overheads, but some operations are linear in the number of values considered by the aggregate 2011-04-18 20:04:33 +00:00
Sears Russell
304b439217 new data structures: min aggregate and concurrent ringbuffer 2011-04-14 23:03:20 +00:00
Sears Russell
e1201970b6 add firstPendingEntry call to log API, use finer grained latches in Tupdate(). 2011-04-01 17:25:46 +00:00
Sears Russell
de8bf53e98 fix some header #include problems 2011-02-22 19:12:38 +00:00
Sears Russell
fb5791e7e4 one line fix to concurrentHashTable, plus documentation and improved unit tests. 2011-02-15 02:57:19 +00:00
Sears Russell
14d8cebdcc dbug stuff. for now, you have to edit cmakelists.txt to set the location of dbug. 2011-02-14 22:09:57 +00:00
Sears Russell
afc9991156 dbug mode for buffer manager - run with two threads, and a handful of ops/thread 2011-02-07 23:53:20 +00:00
Sears Russell
a4a72b601e short circuit no-op aborted transactions; add unit test for no-op commits and aborts 2011-01-05 19:10:57 +00:00
Sears Russell
0a461faa04 add "raid1" a simple mirroring I/O handle implementation 2010-12-03 03:51:24 +00:00
Sears Russell
2105337d7f disable tests of dead code that are known to fail 2010-10-19 21:05:54 +00:00
Sears Russell
4a5d14f2c6 more non_blocking fixes. now the unit test passes 2010-09-23 19:52:54 +00:00
Sears Russell
bb904e85cf add latch-free slotted pages, and a bug-fix in page.c 2010-09-17 01:10:42 +00:00
Sears Russell
00e474e3fe Fix bug in LinearHashNTA: inserting over an old key, then aborting set deleted the old key instead of restoring it to its original value 2010-09-01 04:01:20 +00:00
Sears Russell
e5528ce218 relaxed page latching requirements; page.c, and dirtyPageTable no longer check / rely on holding rwlatch; removed (now) unnecessary latching from unit tests 2010-08-06 00:19:19 +00:00
Sears Russell
7a27e39e5b MAX_BUFFER_SIZE is now a runtime (pre-tinit) option; clean up some doxygen warnings 2010-07-16 16:52:08 +00:00
Sears Russell
2d645beb42 cleaned up multipage operations a bit; added stasis_segments_enabled flag 2010-05-11 22:01:37 +00:00
Sears Russell
07df7c064a add support for multi-page operations 2010-05-11 00:17:07 +00:00
Sears Russell
04de939e42 fix null pointer derefence in lruFast.c; add unit tests to check for this bug 2010-04-21 21:34:00 +00:00
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
5138af6d1c leave 2 pages in reserve for stale pin test (as opposed to one) 2010-04-19 23:09:30 +00:00
Sears Russell
7c5eb2a7e9 added dup method to io handles 2010-04-08 23:50:01 +00:00
Sears Russell
d281282533 fix concurrentWrapper so that it implements the same api as the other replacement policies (it used to livelock when no pages were available. It now returns null). 2010-03-31 22:37:42 +00:00
Sears Russell
3c27ed566e add prefetch primitives 2010-03-29 22:29:30 +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
180fb12859 unit test for bug 22 2010-02-11 22:19:03 +00:00
Sears Russell
903728c589 shorten dirtyPageTable test. 2010-01-22 23:39:42 +00:00
Sears Russell
3849b5f131 silence compiler warnings 2010-01-22 19:09:58 +00:00
Sears Russell
49979ffa52 unit test for libredblack 2010-01-21 23:48:43 +00:00
Sears Russell
17ac09c652 fix deadlock in check_multiplexer. 2010-01-21 21:53:18 +00:00
Sears Russell
9dba8770f0 test TsoftCommit(); make sure it works when TforceCommits() is called, and when Tdeinit() is called 2010-01-21 18:57:58 +00:00
Sears Russell
9f0886a565 fix typo that disabled the new tests 2010-01-21 18:40:28 +00:00
Sears Russell
f2ee7b6573 fix bug exposed by new group commit behavior; nextUnstableLSN was returning the offset of the beginning of the CRC entry, not the end of it. This was causing an assertion to fail. 2010-01-21 18:28:34 +00:00
Sears Russell
250223086c reordered includes for compatibility with gcc3 2010-01-21 00:03:17 +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
022136d3c3 move inMemoryLog, to the new api 2010-01-11 22:55:55 +00:00
Sears Russell
d71e248291 removed freeLogEntry 2010-01-11 20:41:59 +00:00
Sears Russell
f3d06543e5 silence spammy debugging messages; clean up check_io test case implementation a bit 2010-01-06 23:44:07 +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
2ff421bff0 initial opensolaris port 2009-11-29 03:22:36 +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
07053987ef speed up test a bit 2009-11-09 22:58:55 +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