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
Sears Russell
5df5512d91
fixed unit test bug; logWriters may now return NULL when readers attempt to read before the beginning of the log
2009-10-15 18:48:58 +00:00
Sears Russell
4b2cfb2b23
fix latching bug in unit test
2009-10-15 17:45: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
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
0a1ca5e1cc
make compilation succeed on macosx; this will still run macs out of disk space. Also, it disables a number of binaries that probably should be supported on macs.
2009-10-02 00:45:10 +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
Sears Russell
1ce1496226
dependency cleanups; removed compenastions from alloc.c
2009-08-22 00:01:02 +00:00
Sears Russell
3760fd1fea
Add missing page lock acquisition to unit test.
2009-08-08 07:52:02 +00:00
Sears Russell
4d2e70f9f3
Set appropriate timeout.
2009-08-08 07:50:06 +00:00
Sears Russell
907a24b68e
dirty page table flush was pinning pages, then asserting they were not pinned; updated page writeback api to allow correct usage
2009-08-08 01:43:03 +00:00
Sears Russell
3243396cb4
add dirtyPageTable unit test
2009-08-05 19:51:46 +00:00
Sears Russell
5b10bcc63b
Reimplemented allocationPolicy.c; updated API + added more cases to the unit tests.
2009-08-05 06:35:11 +00:00
Sears Russell
beb14ec917
implemented timeouts
2009-07-30 23:16:15 +00:00
Sears Russell
ebd6b14dbf
single-page btrees are working
2009-07-29 21:03:16 +00:00
Sears Russell
0a308f035c
more header cleaning; updated INSTALL
2009-07-26 19:47:05 +00:00
Sears Russell
260310e151
Add page ops for tree implementations.
2009-07-26 06:18:54 +00:00
Sears Russell
7f2edd880d
New (more thorough, less frequent) tests for slotted pages. Renamed slotted methods, added microbenchmark for slotted pages.
2009-07-20 17:42:43 +00:00
Sears Russell
4493dbb88b
Added support for segment based recovery. For now, Stasis doesn't support hybrid recovery, so mixing page deallocation and segments will make recovery corrupt data / segfault.
2009-07-13 17:18:01 +00:00
Sears Russell
cf49c7dbf1
forgot to svn rm indirect's files
2009-07-07 20:05:15 +00:00
Sears Russell
397b0fa245
remove indirect page implementation
2009-07-07 20:03:52 +00:00
Sears Russell
2593de7a2c
Move page type to Page_s struct. This breaks indirect.c (which is poorly thought out, and will be removed shortly), and was the next step on the road to segment-based recovery
2009-07-07 19:20:22 +00:00