Commit Graph

392 Commits

Author SHA1 Message Date
negoyal 82bdc35931 Remove redundant check. 2021-06-16 10:00:27 -07:00
negoyal 81202be424 Better fix. 2021-06-16 01:09:58 -07:00
negoyal efba472d9c Fix a heap use after free issue. 2021-06-15 18:25:13 -07:00
Steve Atherton 23d27663c0 Merge commit '98e463d642d1e674983842c8b2925981ff849729' into redwood-deltatree2-master
# Conflicts:
#	fdbserver/IPager.h
#	fdbserver/Knobs.cpp
#	fdbserver/Knobs.h
#	fdbserver/VersionedBTree.actor.cpp
2021-06-09 01:31:16 -07:00
Steve Atherton 98e463d642
Merge pull request #4781 from sfc-gh-ngoyal/redwood_queue_improvements
Redwood queue format refactored to support faster cold start recovery of pager update log.
2021-06-09 00:11:57 -07:00
negoyal 78e1684d30 Minor review comments. 2021-06-08 22:04:01 -07:00
Steve Atherton 64429097bf Bump pager and btree format versions because there have been format changes. 2021-06-08 18:56:18 -07:00
negoyal 61252ef575 Revert the experimental change. 2021-06-08 18:20:20 -07:00
Steve Atherton b39d4af91a Redwood KVS wrapper now shares the same error Promise as the Pager, so the FlowLock in the read actors no longer needs to be reference counted. 2021-06-08 17:58:38 -07:00
Steve Atherton f7554b8fcb Move FlowMutex unit test to FlowTests. 2021-06-08 16:58:35 -07:00
Steve Atherton adcf126bfa Removed commit read FlowLock because it costs too much overhead, will need another way to throttle. Removed readPage() fromCache argument as it is no longer useful. 2021-06-08 16:58:35 -07:00
Steve Atherton 293559bb61 Moved FlowMutex to genericactors. 2021-06-08 16:58:35 -07:00
Steve Atherton d94929f08d Added FlowMutex, a low overhead replacement for FlowLocks with a budget of 1. Replaced mutex in FIFOQueue::Cursor with FlowMutex to reduce overhead. 2021-06-08 16:58:35 -07:00
Steve Atherton 46c4f6fd47 Added yields to prevent stack overflows from too many callbacks when queue operations accumulate waiting on IO. 2021-06-08 16:58:35 -07:00
Steve Atherton 3af0bea46c Removed or reduced several yields because they are called too often. 2021-06-08 16:58:35 -07:00
Steve Atherton f2904dadf3 Reading BTree pages no longer requires boundary records, as they are not needed if the page is already cached. 2021-06-08 16:58:35 -07:00
Steve Atherton a485ae1215 Log pagerMemoryOnly in test config. 2021-06-08 16:58:35 -07:00
Steve Atherton b4c446bc8b Remove unused variable. 2021-06-08 16:58:35 -07:00
Steve Atherton 345a484ce7 Prevent rehashing by reserving cache size limit in cache map. 2021-06-08 16:58:35 -07:00
Steve Atherton f95d592db8 Optimized record delta decoding / applying a bit, changed substring order to (value, keySuffix) since value is needed more frequently. Added DeltaTree2 item type requirement to create T from base's cached partial item instead of full record. 2021-06-08 16:58:35 -07:00
Steve Atherton b8af2950c8 Remove some leftover Version field remnants, update RedwoodRecordRef comments. 2021-06-08 16:58:35 -07:00
Steve Atherton 7f411934b4 Rare simulation-only bug fix. A single-page BTree with too small of a page size and one gigantic value can result in a root page list that is too large to fit in the hardcoded MetaKey size. 2021-06-08 16:58:32 -07:00
Steve Atherton 0c94a25c48 Prioritized cache eviction of old page versions and freed pages. 2021-06-08 16:55:30 -07:00
Steve Atherton 6cc7845856 Restore non-caching reads on the commit path, probably temporarily, to remove this as a variable before/after the switch to DeltaTree2. 2021-06-08 16:55:30 -07:00
Steve Atherton 96f14a714f Fixed memory leak, DecodeCache reference count was initialized incorrectly. Streamlined perf unit test a bit. 2021-06-08 16:55:30 -07:00
Steve Atherton fa7a73071f Fixed memory leak, InternalPageSliceUpdates require destruction. 2021-06-08 16:55:30 -07:00
Steve Atherton 9c7ec8d6cd Removed RedwoodRecordRef::version since in the current design all record versions within a single BTree snapshot are the same. 2021-06-08 16:55:20 -07:00
Steve Atherton 4ee27919ad Print size of RedwoodRecordRef in unit test. 2021-06-08 16:46:09 -07:00
Steve Atherton e2c3d2d108 Removed redundant calls to Cursor::switchTree() since there are no cases where the it matters if get() references the old tree's value until the cursor is moved. 2021-06-08 16:46:09 -07:00
Steve Atherton a9cf0a2471 Removed unnecessary cursor member from InternalPageModifier. Changed BTreePage::tree() methods to return a pointer instead of a reference since >90% of usages want a pointer. 2021-06-08 16:46:09 -07:00
Steve Atherton 751bac2271 Write path no longer uses non-caching reads because it is no longer necessary to avoid a page copy. Page copies are only done just before an actual change is made. 2021-06-08 16:46:09 -07:00
Steve Atherton 8e7a97f495 Bug fix: BTreeCursor::init() did not clear path. 2021-06-08 16:46:09 -07:00
Steve Atherton a58ac622ed Bug fix in test data generation for IntIntPair DeltaTree unit test. 2021-06-08 16:46:09 -07:00
Steve Atherton a6f7d37a25 Bug fixes related to DeltaTree2::Cursor contract being different from DeltaTree::Cursor. 2021-06-08 16:46:09 -07:00
Steve Atherton 8ef516ead2 Bug fixes from bad search/replace. DeltaTree2::Cursor now keeps current decoded item as a member instead of calculating it on demand in get(). 2021-06-08 16:46:09 -07:00
Steve Atherton d155482f5f Remove the legacy IVersionedStore / IStoreCursor classes and implementations as they are no longer useful or efficient, respectively. BTreeCursor can be used far more efficiently to access the BTree. 2021-06-08 16:46:09 -07:00
Steve Atherton 1d947bff2d Initial pass at getting BTree to compile with DeltaTree2. Does not work since the Cursor contract has changed. 2021-06-08 16:46:09 -07:00
Steve Atherton 65cfd31221 Added memory-only option for redwood set test. 2021-06-08 16:46:09 -07:00
Steve Atherton caf4b3c345 DeltaTree2 refactor. Nodes no longer contain parent offsets. DecodedCache no longer uses a hash but rather a vector of DecodedNodes, which Cursors reference by vector index. DecodedNodes contain parent node indexes which are populated on-demand, making storage in the serialized form no longer necessary. 2021-06-08 16:46:04 -07:00
Steve Atherton b0ec76d401 Test output improvements. 2021-06-08 15:32:54 -07:00
Steve Atherton 9ab69b5cb1 RedwoodRecordRef support for DeltaTree2. 2021-06-08 15:32:54 -07:00
Steve Atherton b2c7d957e2 Added DeltaTree2, which can be shared between updated versions of the same tree, but so far it is 50% slower. 2021-06-08 15:32:26 -07:00
negoyal a315936633 Experimetal change disable remapCleanup after recovery for perf testing. 2021-06-07 23:06:15 -07:00
negoyal cc94cafe1a Small bugfix in the parallel extent read path. 2021-06-07 16:46:41 -07:00
negoyal c0c261e4a9 Divide the extent read into a vector or parallel disk reads. 2021-06-07 16:28:13 -07:00
Andrew Noyes 98f3428beb Avoid left shift of negative value 2021-06-04 09:51:30 -07:00
Andrew Noyes 58ca93a1ee Avoid casting float unrepresentable as int to int
Apparently it was possible for this value to be unrepresentable as an
int. int64_t seems to be sufficient.
2021-06-04 09:49:27 -07:00
negoyal d948d442ea Addressing more review comments regarding PromiseStream usage and adding more comments.. 2021-06-02 10:46:33 -07:00
negoyal 9d82dd8824 Add a trace event to indicate completion of pager recovery. 2021-06-01 17:52:28 -07:00
negoyal 3e31e808ac Revert the debug printfs and cleanup. 2021-06-01 09:46:43 -07:00