From 5cf43d1bfaf89e5754badff9712017e667b93ae4 Mon Sep 17 00:00:00 2001 From: Andrew Noyes Date: Wed, 27 Mar 2024 16:07:05 -0700 Subject: [PATCH] Add weaselab namespace --- ConflictSet.cpp | 2 + Internal.h | 2 + RealDataBench.cpp | 2 + conflict_set_cxx_api_test.cpp | 2 + fdb-patch.txt | 107 ++++++---------------------------- include/ConflictSet.h | 2 + 6 files changed, 29 insertions(+), 88 deletions(-) diff --git a/ConflictSet.cpp b/ConflictSet.cpp index e91dd91..dddf47c 100644 --- a/ConflictSet.cpp +++ b/ConflictSet.cpp @@ -39,6 +39,8 @@ limitations under the License. #include +using namespace weaselab; + // Use assert for checking potentially complex properties during tests. // Use assume to hint simple properties to the optimizer. diff --git a/Internal.h b/Internal.h index 45ff778..92b4eb7 100644 --- a/Internal.h +++ b/Internal.h @@ -2,6 +2,8 @@ #include "ConflictSet.h" +using namespace weaselab; + #include #include #include diff --git a/RealDataBench.cpp b/RealDataBench.cpp index a35a586..7c41c91 100644 --- a/RealDataBench.cpp +++ b/RealDataBench.cpp @@ -8,6 +8,8 @@ #include #include +using namespace weaselab; + double now() { return std::chrono::duration_cast( std::chrono::steady_clock::now().time_since_epoch()) diff --git a/conflict_set_cxx_api_test.cpp b/conflict_set_cxx_api_test.cpp index b64da53..85ad2e4 100644 --- a/conflict_set_cxx_api_test.cpp +++ b/conflict_set_cxx_api_test.cpp @@ -2,6 +2,8 @@ #include +using namespace weaselab; + int main(void) { ConflictSet cs(0); ConflictSet::WriteRange w; diff --git a/fdb-patch.txt b/fdb-patch.txt index 7d042c8..59ba5e1 100644 --- a/fdb-patch.txt +++ b/fdb-patch.txt @@ -1,32 +1,19 @@ -giff --git a/fdbserver/CMakeLists.txt b/fdbserver/CMakeLists.txt -index 3f353c2ef..cd0834761 100644 +diff --git a/fdbserver/CMakeLists.txt b/fdbserver/CMakeLists.txt +index 3f353c2ef..074a18628 100644 --- a/fdbserver/CMakeLists.txt +++ b/fdbserver/CMakeLists.txt @@ -22,6 +22,9 @@ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/workloads) add_flow_target(EXECUTABLE NAME fdbserver SRCS ${FDBSERVER_SRCS}) -+find_package(ConflictSet) -+target_link_libraries(fdbserver PRIVATE conflict_set_static) ++find_package(conflict-set) ++target_link_libraries(fdbserver PRIVATE conflict-set-static) + if (WITH_SWIFT) # Setup the Swift sources in FDBServer. include(FindSwiftLibs) -diff --git a/fdbserver/Resolver.actor.cpp b/fdbserver/Resolver.actor.cpp -index bf4118f5f..d3b4eaad8 100644 ---- a/fdbserver/Resolver.actor.cpp -+++ b/fdbserver/Resolver.actor.cpp -@@ -132,7 +132,7 @@ struct Resolver : ReferenceCounted { - AsyncVar totalStateBytes; - AsyncTrigger checkNeededVersion; - std::map proxyInfoMap; -- ConflictSet* conflictSet; -+ ConflictSet2* conflictSet; - TransientStorageMetricSample iopsSample; - - // Use LogSystem as backend for txnStateStore. However, the real commit diff --git a/fdbserver/SkipList.cpp b/fdbserver/SkipList.cpp -index b48d32c6b..da106b5d2 100644 +index b48d32c6b..da99e03aa 100644 --- a/fdbserver/SkipList.cpp +++ b/fdbserver/SkipList.cpp @@ -25,6 +25,7 @@ @@ -46,50 +33,35 @@ index b48d32c6b..da106b5d2 100644 static std::vector skc; static thread_local uint32_t g_seed = 0; -@@ -782,26 +785,34 @@ private: - } +@@ -783,10 +786,14 @@ private: }; --struct ConflictSet { + struct ConflictSet { - ConflictSet() : removalKey(makeString(0)), oldestVersion(0) {} -- ~ConflictSet() {} -+struct ConflictSet2 { -+ ConflictSet2() : versionHistory(0), removalKey(makeString(0)), oldestVersion(0) {} -+ ~ConflictSet2() {} ++ ConflictSet() : versionHistory(0), removalKey(makeString(0)), oldestVersion(0) {} + ~ConflictSet() {} +#if USE_RADIX_TREE -+ ConflictSet versionHistory; ++ weaselab::ConflictSet versionHistory; +#else SkipList versionHistory; +#endif Key removalKey; Version oldestVersion; }; - --ConflictSet* newConflictSet() { -- return new ConflictSet; -+ConflictSet2* newConflictSet() { -+ return new ConflictSet2; +@@ -795,7 +802,11 @@ ConflictSet* newConflictSet() { + return new ConflictSet; } --void clearConflictSet(ConflictSet* cs, Version v) { + void clearConflictSet(ConflictSet* cs, Version v) { - SkipList(v).swap(cs->versionHistory); -+void clearConflictSet(ConflictSet2* cs, Version v) { +#if USE_RADIX_TREE -+ cs->versionHistory = ConflictSet{ 0 }; ++ cs->versionHistory = weaselab::ConflictSet{ 0 }; +#else + SkipList().swap(cs->versionHistory); +#endif } --void destroyConflictSet(ConflictSet* cs) { -+void destroyConflictSet(ConflictSet2* cs) { + void destroyConflictSet(ConflictSet* cs) { delete cs; - } - --ConflictBatch::ConflictBatch(ConflictSet* cs, -+ConflictBatch::ConflictBatch(ConflictSet2* cs, - std::map>* conflictingKeyRangeMap, - Arena* resolveBatchReplyArena) - : cs(cs), transactionCount(0), conflictingKeyRangeMap(conflictingKeyRangeMap), @@ -971,11 +982,15 @@ void ConflictBatch::detectConflicts(Version now, t = timer(); if (newOldestVersion > cs->oldestVersion) { @@ -112,7 +84,7 @@ index b48d32c6b..da106b5d2 100644 +#if USE_RADIX_TREE + Arena arena; -+ auto* reads = new (arena) ConflictSet::ReadRange[combinedReadConflictRanges.size()]; ++ auto* reads = new (arena) weaselab::ConflictSet::ReadRange[combinedReadConflictRanges.size()]; + + for (int i = 0; i < combinedReadConflictRanges.size(); ++i) { + auto& read = reads[i]; @@ -122,11 +94,11 @@ index b48d32c6b..da106b5d2 100644 + read.end.p = combinedReadConflictRanges[i].end.begin(); + read.end.len = combinedReadConflictRanges[i].end.size(); + } -+ auto* results = new (arena) ConflictSet::Result[combinedReadConflictRanges.size()]; ++ auto* results = new (arena) weaselab::ConflictSet::Result[combinedReadConflictRanges.size()]; + cs->versionHistory.check(reads, results, combinedReadConflictRanges.size()); + + for (int i = 0; i < combinedReadConflictRanges.size(); ++i) { -+ if (results[i] == ConflictSet::Conflict) { ++ if (results[i] == weaselab::ConflictSet::Conflict) { + transactionConflictStatus[combinedReadConflictRanges[i].transaction] = true; + if (combinedReadConflictRanges[i].conflictingKeyRange != nullptr) { + combinedReadConflictRanges[i].conflictingKeyRange->push_back(*combinedReadConflictRanges[i].cKRArena, @@ -147,7 +119,7 @@ index b48d32c6b..da106b5d2 100644 +#if USE_RADIX_TREE + Arena arena; -+ auto* writes = new (arena) ConflictSet::WriteRange[combinedWriteConflictRanges.size()]; ++ auto* writes = new (arena) weaselab::ConflictSet::WriteRange[combinedWriteConflictRanges.size()]; + + for (int i = 0; i < combinedWriteConflictRanges.size(); ++i) { + auto& write = writes[i]; @@ -164,15 +136,6 @@ index b48d32c6b..da106b5d2 100644 } void ConflictBatch::combineWriteConflictRanges() { -@@ -1115,7 +1171,7 @@ void skipListTest() { - - double start; - -- ConflictSet* cs = newConflictSet(); -+ ConflictSet2* cs = newConflictSet(); - - Arena testDataArena; - VectorRef> testData; @@ -1197,6 +1253,4 @@ void skipListTest() { for (const auto& counter : skc) { printf("%20s: %s\n", counter->getMetric().name().c_str(), counter->getMetric().formatted().c_str()); @@ -180,35 +143,3 @@ index b48d32c6b..da106b5d2 100644 - - printf("%d entries in version history\n", cs->versionHistory.count()); } -diff --git a/fdbserver/include/fdbserver/ConflictSet.h b/fdbserver/include/fdbserver/ConflictSet.h -index 90ed2c406..b7e31217c 100644 ---- a/fdbserver/include/fdbserver/ConflictSet.h -+++ b/fdbserver/include/fdbserver/ConflictSet.h -@@ -28,13 +28,13 @@ - #include "fdbclient/CommitTransaction.h" - #include "fdbserver/ResolverBug.h" - --struct ConflictSet; --ConflictSet* newConflictSet(); --void clearConflictSet(ConflictSet*, Version); --void destroyConflictSet(ConflictSet*); -+struct ConflictSet2; -+ConflictSet2* newConflictSet(); -+void clearConflictSet(ConflictSet2*, Version); -+void destroyConflictSet(ConflictSet2*); - - struct ConflictBatch { -- explicit ConflictBatch(ConflictSet*, -+ explicit ConflictBatch(ConflictSet2*, - std::map>* conflictingKeyRangeMap = nullptr, - Arena* resolveBatchReplyArena = nullptr); - ~ConflictBatch(); -@@ -54,7 +54,7 @@ struct ConflictBatch { - void GetTooOldTransactions(std::vector& tooOldTransactions); - - private: -- ConflictSet* cs; -+ ConflictSet2* cs; - Standalone> transactionInfo; - std::vector points; - int transactionCount; diff --git a/include/ConflictSet.h b/include/ConflictSet.h index eeef03a..3971f6b 100644 --- a/include/ConflictSet.h +++ b/include/ConflictSet.h @@ -19,6 +19,7 @@ limitations under the License. #include #ifdef __cplusplus +namespace weaselab { /** A data structure for optimistic concurrency control on ranges of * bitwise-lexicographically-ordered keys. * @@ -100,6 +101,7 @@ struct __attribute__((__visibility__("default"))) ConflictSet { private: Impl *impl; }; +} // namespace weaselab #else