diff --git a/fdbclient/GlobalConfig.cpp b/fdbclient/GlobalConfig.cpp index d3918e8c1a..cd0834cb21 100644 --- a/fdbclient/GlobalConfig.cpp +++ b/fdbclient/GlobalConfig.cpp @@ -23,9 +23,7 @@ #include "fdbclient/SpecialKeySpace.h" #include "fdbclient/SystemData.h" #include "fdbclient/Tuple.h" -#include "fdbrpc/FailureMonitor.h" #include "flow/Error.h" -#include "flow/UnitTest.h" #include "flow/flow.h" #include "flow/genericactors.actor.h" @@ -262,79 +260,3 @@ Future GlobalConfig::updater(const ClientDBInfo* dbInfo) { co_await delay(1.0); } } - -namespace { - -Future serveGlobalConfigTestRefresh(GrvProxyInterface proxy, Version version) { - GlobalConfigRefreshRequest request = co_await proxy.refreshGlobalConfig.getFuture(); - RangeResult result; - request.reply.send(GlobalConfigRefreshReply{ result.arena(), version, result }); - co_return; -} - -} // namespace - -TEST_CASE("/fdbclient/GlobalConfig/PreservesReentrantHistoryUpdate") { - GrvProxyInterface grvProxy; - grvProxy.provisional = false; - grvProxy.initEndpoints(); - IFailureMonitor::failureMonitor().setStatus(grvProxy.address(), FailureStatus(false)); - ASSERT(IFailureMonitor::failureMonitor().getState(grvProxy.address()).isAvailable()); - - CommitProxyInterface commitProxy; - commitProxy.provisional = false; - commitProxy.initEndpoints(); - - ClientDBInfo initialInfo; - initialInfo.id = UID(1, 1); - initialInfo.grvProxies.push_back(grvProxy); - initialInfo.commitProxies.push_back(commitProxy); - - auto clientInfo = makeReference>(initialInfo); - Database db = - DatabaseContext::create(clientInfo, Future(Never()), LocalityData(), EnableLocalityLoadBalance::False); - Future refresh = serveGlobalConfigTestRefresh(grvProxy, 1); - db->globalConfig->init(Reference const>(clientInfo), std::addressof(clientInfo->get())); - - co_await timeoutError(db->globalConfig->onInitialized(), 1.0); - co_await timeoutError(refresh, 1.0); - - VersionHistory sentinel(1); - VersionHistory enabled(2); - enabled.mutations.emplace_back_deep( - enabled.mutations.arena(), - MutationRef(MutationRef::SetValue, fdbClientInfoTxnSampleRate, Tuple::makeTuple(0.1).pack())); - - VersionHistory disabled(3); - disabled.mutations.emplace_back_deep( - disabled.mutations.arena(), - MutationRef(MutationRef::SetValue, fdbClientInfoTxnSampleRate, Tuple::makeTuple(0.0).pack())); - - ClientDBInfo enabledInfo = clientInfo->get(); - enabledInfo.id = UID(1, 2); - enabledInfo.history.push_back(sentinel); - enabledInfo.history.push_back(enabled); - - ClientDBInfo disabledInfo = enabledInfo; - disabledInfo.id = UID(1, 3); - disabledInfo.history.push_back(disabled); - - Future disabledApplied; - Future deferredDisable; - Future publishDisabled = trigger( - [&]() { - ASSERT_EQ(db->globalConfig->get(fdbClientInfoTxnSampleRate, -1.0), 0.1); - disabledApplied = db->globalConfig->onChange(); - deferredDisable = trigger([&]() { clientInfo->set(disabledInfo); }, delay(0)); - }, - db->globalConfig->onChange()); - - clientInfo->set(enabledInfo); - co_await timeoutError(publishDisabled, 1.0); - ASSERT(deferredDisable.isValid()); - co_await timeoutError(deferredDisable, 1.0); - ASSERT(disabledApplied.isValid()); - co_await timeoutError(disabledApplied, 1.0); - ASSERT_EQ(db->globalConfig->get(fdbClientInfoTxnSampleRate, -1.0), 0.0); - co_return; -}