From 6c1d913ab8614cfafed4c687576bc1bb3dc08208 Mon Sep 17 00:00:00 2001 From: sfc-gh-tclinkenbeard Date: Sun, 11 Jul 2021 21:11:21 -0700 Subject: [PATCH] Prevent masterServer from modifying db --- fdbclient/GlobalConfig.actor.h | 2 +- fdbclient/NativeAPI.actor.cpp | 3 ++- fdbserver/WorkerInterface.actor.h | 4 ++-- fdbserver/masterserver.actor.cpp | 6 +++--- fdbserver/worker.actor.cpp | 4 ++-- flow/genericactors.actor.h | 2 +- 6 files changed, 11 insertions(+), 10 deletions(-) diff --git a/fdbclient/GlobalConfig.actor.h b/fdbclient/GlobalConfig.actor.h index 2d63d8de60..444f1ab697 100644 --- a/fdbclient/GlobalConfig.actor.h +++ b/fdbclient/GlobalConfig.actor.h @@ -72,7 +72,7 @@ public: // to allow global configuration to run transactions on the latest // database. template - static void create(Database& cx, Reference> db, const ClientDBInfo* dbInfo) { + static void create(Database& cx, Reference const> db, const ClientDBInfo* dbInfo) { if (g_network->global(INetwork::enGlobalConfig) == nullptr) { auto config = new GlobalConfig{ cx }; g_network->setGlobal(INetwork::enGlobalConfig, config); diff --git a/fdbclient/NativeAPI.actor.cpp b/fdbclient/NativeAPI.actor.cpp index 5419ae825e..84faf6ffec 100644 --- a/fdbclient/NativeAPI.actor.cpp +++ b/fdbclient/NativeAPI.actor.cpp @@ -1756,7 +1756,8 @@ Database Database::createDatabase(Reference connFile, } auto database = Database(db); - GlobalConfig::create(database, clientInfo, std::addressof(clientInfo->get())); + GlobalConfig::create( + database, Reference const>(clientInfo), std::addressof(clientInfo->get())); return database; } diff --git a/fdbserver/WorkerInterface.actor.h b/fdbserver/WorkerInterface.actor.h index e642d015dd..3fedfe1c8f 100644 --- a/fdbserver/WorkerInterface.actor.h +++ b/fdbserver/WorkerInterface.actor.h @@ -831,7 +831,7 @@ ACTOR Future traceRole(Role role, UID roleId); struct ServerDBInfo; -class Database openDBOnServer(Reference> const& db, +class Database openDBOnServer(Reference const> const& db, TaskPriority taskID = TaskPriority::DefaultEndpoint, LockAware = LockAware::FALSE, EnableLocalityLoadBalance = EnableLocalityLoadBalance::TRUE); @@ -879,7 +879,7 @@ ACTOR Future storageServer( Reference connFile); // changes pssi->id() to be the recovered ID); // changes pssi->id() to be the recovered ID ACTOR Future masterServer(MasterInterface mi, - Reference> db, + Reference const> db, Reference>> ccInterface, ServerCoordinators serverCoordinators, LifetimeToken lifetime, diff --git a/fdbserver/masterserver.actor.cpp b/fdbserver/masterserver.actor.cpp index ea93b35f7f..b6bf046991 100644 --- a/fdbserver/masterserver.actor.cpp +++ b/fdbserver/masterserver.actor.cpp @@ -228,7 +228,7 @@ struct MasterData : NonCopyable, ReferenceCounted { ReusableCoordinatedState cstate; Promise cstateUpdated; - Reference> dbInfo; + Reference const> dbInfo; int64_t registrationCount; // Number of different MasterRegistrationRequests sent to clusterController RecoveryState recoveryState; @@ -255,7 +255,7 @@ struct MasterData : NonCopyable, ReferenceCounted { Future logger; - MasterData(Reference> const& dbInfo, + MasterData(Reference const> const& dbInfo, MasterInterface const& myInterface, ServerCoordinators const& coordinators, ClusterControllerFullInterface const& clusterController, @@ -1978,7 +1978,7 @@ ACTOR Future masterCore(Reference self) { } ACTOR Future masterServer(MasterInterface mi, - Reference> db, + Reference const> db, Reference>> ccInterface, ServerCoordinators coordinators, LifetimeToken lifetime, diff --git a/fdbserver/worker.actor.cpp b/fdbserver/worker.actor.cpp index dafcfba2e3..2ff5252320 100644 --- a/fdbserver/worker.actor.cpp +++ b/fdbserver/worker.actor.cpp @@ -122,7 +122,7 @@ ACTOR Future> broadcastDBInfoRequest(UpdateServerDBInfoReq return notUpdated; } -ACTOR static Future extractClientInfo(Reference> db, +ACTOR static Future extractClientInfo(Reference const> db, Reference> info) { state std::vector lastCommitProxyUIDs; state std::vector lastCommitProxies; @@ -136,7 +136,7 @@ ACTOR static Future extractClientInfo(Reference> db } } -Database openDBOnServer(Reference> const& db, +Database openDBOnServer(Reference const> const& db, TaskPriority taskID, LockAware lockAware, EnableLocalityLoadBalance enableLocalityLoadBalance) { diff --git a/flow/genericactors.actor.h b/flow/genericactors.actor.h index d04a0478f8..5cb0344ffb 100644 --- a/flow/genericactors.actor.h +++ b/flow/genericactors.actor.h @@ -700,7 +700,7 @@ private: // Binds an AsyncTrigger object to an AsyncVar, so when the AsyncVar changes // the AsyncTrigger is triggered. ACTOR template -void forward(Reference> from, AsyncTrigger* to) { +void forward(Reference const> from, AsyncTrigger* to) { loop { wait(from->onChange()); to->trigger();