Commit Graph

680 Commits

Author SHA1 Message Date
Steve Atherton 6af2b83bc6 Updated BTree write-only forensic fields for last known logical page ID and last known logical parent page ID.
Also simplified multipage update loops which were using an unnecessary temp variable left from a prior implementation involving remapping.
2022-04-08 01:17:50 -07:00
Steve Atherton 1941c9ac3b Bug fix, empty root was written with the wrong capacity so inserts later could buffer overflow and be missing from the page. 2022-04-07 23:52:37 -07:00
Steve Atherton 702bd59ded Clear unused memory regions for structures written to disk. 2022-04-07 23:02:33 -07:00
Steve Atherton 3ef18bc173 Rename Page and VersionHeader to PageHeader for consistency. Check for known encrypted types explicitly in isEncodingTypeEncrypted(). Make writePhysicalBlock() hold a Page reference which is simpler and more robust. Remove unused argument in switchTree(). 2022-04-07 20:59:34 -07:00
Steve Atherton f7ba78ca97 Fixed typo, remove throw argument to follow best practice, change wrong format warn to warnAlways. 2022-04-06 14:51:01 -07:00
Steve Atherton a51b1c9d98 Remove checks for transaction_too_old because Redwood no longer generates this error. 2022-04-06 14:41:17 -07:00
Steve Atherton 8e9a7811bf Redwood debug improvements to filter and direct output more easily. 2022-04-05 23:33:40 -07:00
Steve Atherton 5961b801cc Keep decode caches in page cache based on page height minimum set by a knob with a default value of 2. 2022-04-05 15:11:07 -07:00
Steve Atherton 6546d04f2d Removed BUGGIFY() usage on hot path since it involves a string copy, and made buggified behavior happen more often in simulation which should increase edge case coverage. 2022-04-05 15:05:02 -07:00
Steve Atherton 13d3391d30 In simulation, sometimes use redwood destructive sanity check in KeyValueStoreRedwood disposal for more test coverage. 2022-04-05 02:10:31 -07:00
Steve Atherton 6c8eca061a In redwood unit test, only reopen the btree prior to the destructive sanity check half the time. 2022-04-04 19:29:32 -07:00
Steve Atherton 23a27d78db Changed DeltaTree2::Cursor to hold a Reference<DecodeCache> instead of a pointer to enable more flexible DecodeCache lifetimes. 2022-04-04 03:38:50 -07:00
Steve Atherton 1033f64da2 Removed BTree header parse from cursor creation, which recently became necessary, by storing the extracted root link in the PagerSnapshot. Refactored ArenaPage::userData and userDataDestructor to a generic ArbitraryObject class which can own arbitrary heap allocated objects or references and has a cleaner interface. Added ArbitraryObject to IPagerSnapshot. 2022-04-04 02:45:08 -07:00
Steve Atherton f0c01d74ac Remove warnings that were just marking TODOs. 2022-04-03 23:50:19 -07:00
Steve Atherton a5ff1e5f0e Code simplification and minor overhead reduction around snapshot expiration and oldest effective version checking. 2022-04-03 23:49:31 -07:00
Steve Atherton d7838982f9 Code simplification and minor overhead reduction - don't check multi-page BTree nodes for remapped pages because they no longer can contain any. 2022-04-03 23:48:54 -07:00
Steve Atherton 3b76b9d9cc Apply clang-format. 2022-04-03 00:44:02 -07:00
Steve Atherton 47d1a7b373 Merge commit '38190ad7e787d759f88687e83af0ebabdbc600e8' into redwood-header-changes
# Conflicts:
#	flow/error_definitions.h
2022-04-03 00:39:53 -07:00
Steve Atherton 39fb0a44d7 Merge commit 'f09bdc840c00d712487500b9e752d87cedb1964a' into redwood-header-changes
# Conflicts:
#	fdbserver/VersionedBTree.actor.cpp
2022-04-03 00:37:01 -07:00
Steve Atherton 84f9e00258 Remove duplicative generic actor repeatEvery() since recurring() exists. 2022-03-30 18:10:29 -07:00
Steve Atherton 1e9c8b3684 Shutdown bug fix, extent cache should be cleared on shutdown as if recovery never completed it wouldn't have been cleared yet. 2022-03-28 18:14:05 -07:00
Steve Atherton f09bdc840c Fix undefined behavior where struct members are written to disk and restored later in a situation where they are unused but can contain random values that are not proper booleans, which ubsan complains about. 2022-03-26 19:38:59 -07:00
Steve Atherton 9f205217a4 Merge branch 'main' of https://github.com/apple/foundationdb into redwood-rare-bugs-6574 2022-03-21 21:57:57 -07:00
sfc-gh-tclinkenbeard a71099471b Update copyright header dates 2022-03-21 13:36:23 -07:00
Steve Atherton 032c80dec5
Merge pull request #6461 from sfc-gh-yiwu/redwood_remap
Redwood: config remap cleanup by size instead of versions
2022-03-18 16:23:15 -07:00
Steve Atherton 683ddb7c93 Changed SignalableActorCollection of write operations to a vector. 2022-03-18 15:09:10 -07:00
Yi Wu 5faed7c727 Redwood: update clearRmapQueue 2022-03-18 14:56:04 -07:00
Yi Wu e13f1bfa0d Redwood: update remap cleanup window buggify value 2022-03-18 14:56:04 -07:00
Yi Wu 66c82ff00d Redwood: Fix clearRemapQueue after the remap cleanup window change 2022-03-18 14:56:04 -07:00
Yi Wu 0968566fd5 Redwood: use real page size to calculate remap cleanup window 2022-03-18 14:56:04 -07:00
Yi Wu 264b3811af update the lag knob 2022-03-18 14:56:04 -07:00
Yi Wu 27df6df950 Redwood: config remap cleanup by size instead of versions 2022-03-18 14:56:04 -07:00
Steve Atherton e0990fd712 Added generic detach() actor to allow large actor footprints to be freed once finished, used it to avoid storing writePhysicalPage actors in the page cache. 2022-03-17 19:58:20 -07:00
sfc-gh-tclinkenbeard 66d71e107d Move actorcompiler.h include to the end of includes 2022-03-16 00:09:16 -07:00
Steve Atherton 59762fc784
Merge pull request #6423 from sfc-gh-satherton/redwood-bug-fixes-and-memory-leak
Redwood memory usage and small memory leak fixes
2022-03-15 16:52:28 -07:00
sfc-gh-tclinkenbeard 8dcac2f76d Fix typos 2022-03-13 10:02:11 -03:00
Steve Atherton e496f3efb7 Improved comments and readability of FIFOQueue::Cursor read methods. 2022-03-10 14:35:46 -08:00
Steve Atherton 8128f9f0b5 Merge branch 'main' of https://github.com/apple/foundationdb into redwood-rare-bugs 2022-03-10 11:28:09 -08:00
Steve Atherton 6cb5f86994 Added a boundary sample to the boundary verifier, which clear operations in the Redwood unit test will randomly make use of. Added cold start limit in BTree unit test to prevent test running too long, and a few other parameter changes. 2022-03-09 23:17:55 -08:00
Steve Atherton c76ba149b2 Removed unnecessary line as it does nothing, updated comment. 2022-03-09 20:28:14 -08:00
Steve Atherton 81d1e70435 Bug fix: Remap cleanup must delay freeing of unmapped destination pages until the oldest readable version passes the current latest readable version to prevent a very slow reader from reading a page after it has been recycled and reused. This is a very rare bug, seen in about 1 in 1 million runs of the Redwood unit test. 2022-03-09 19:08:00 -08:00
Steve Atherton 2ec15965ba No logic changes, just debugging output changes and variable renames for clarity. 2022-03-09 18:45:03 -08:00
Steve Atherton e96dc76aad Bug fix: When a BTree node is updated and is to the left of a completely removed sibling subtree the placeholder record providing its upper decode boundary could be lost because expectedUpperBound was not being set. 2022-03-08 03:56:29 -08:00
Steve Atherton d034d0c30f Bug fix in boundary verifier which caused false failures after a process restart when a commit was in progress because the verification map would contain changes that were rolled back. 2022-03-08 03:33:22 -08:00
Steve Atherton 77f06eedfd Use printable() on page boundary debug output. 2022-03-07 23:21:07 -08:00
Steve Atherton 8f844437da Avoid unused variable warning when debug output is not on. 2022-03-07 23:12:32 -08:00
Steve Atherton 9f690d5bd5 Added StringRef::same() which checks data pointers and lengths for match. Fixed a false negative (but not a bug) in boundariesNormal() and used same() to avoid string comparisons. 2022-03-07 22:44:24 -08:00
Steve Atherton 35df00eba2 Re-enable simulation-only boundary verification. 2022-03-07 22:31:29 -08:00
Steve Atherton 55c98a4287 Large refactor of redwood debug output to improve context and readability. 2022-03-07 22:30:20 -08:00
Steve Atherton 11f25bc08f Initialize decode boundary verifier to nullptr for restart tests, also disable check for now as the feature is not finished. 2022-03-04 17:20:31 -08:00