Checkpointing large refactor of how commitSubtree() works regarding internal pages such that now they can be incrementally modified and detecting changes involves far fewer comparison and staging of records.

This commit is contained in:
Steve Atherton 2020-05-08 07:11:51 -07:00
parent dda0993d16
commit 1966dbb576
3 changed files with 578 additions and 504 deletions

View File

@ -367,9 +367,10 @@ public:
const T* upperBound() const { return upper; }
DeltaTree* tree;
private:
Arena arena;
DeltaTree* tree;
DecodedNode* root;
const T* lower;
const T* upper;
@ -470,7 +471,8 @@ public:
newNode->prev = prev;
newNode->next = next;
ASSERT(deltaSize == k.writeDelta(raw->delta(tree->largeNodes), *base, commonPrefix));
int written = k.writeDelta(raw->delta(tree->largeNodes), *base, commonPrefix);
ASSERT(deltaSize == written);
raw->delta(tree->largeNodes).setPrefixSource(basePrev);
// Initialize node's item from the delta (instead of copying into arena) to avoid unnecessary arena space

View File

@ -27,33 +27,6 @@
#include "flow/flow.h"
#include "fdbclient/FDBTypes.h"
#define REDWOOD_DEBUG 0
#define debug_printf_stream stdout
#define debug_printf_always(...) \
{ \
fprintf(debug_printf_stream, "%s %f %04d ", g_network->getLocalAddress().toString().c_str(), now(), __LINE__); \
fprintf(debug_printf_stream, __VA_ARGS__); \
fflush(debug_printf_stream); \
}
#define debug_printf_noop(...)
#if defined(NO_INTELLISENSE)
#if REDWOOD_DEBUG
#define debug_printf debug_printf_always
#else
#define debug_printf debug_printf_noop
#endif
#else
// To get error-checking on debug_printf statements in IDE
#define debug_printf printf
#endif
#define BEACON debug_printf_always("HERE\n")
#define TRACE \
debug_printf_always("%s: %s line %d %s\n", __FUNCTION__, __FILE__, __LINE__, platform::get_backtrace().c_str());
#ifndef VALGRIND
#define VALGRIND_MAKE_MEM_UNDEFINED(x, y)
#define VALGRIND_MAKE_MEM_DEFINED(x, y)

File diff suppressed because it is too large Load Diff