Prevent masterServer from modifying db
This commit is contained in:
parent
4bfc510d9d
commit
6c1d913ab8
|
@ -72,7 +72,7 @@ public:
|
|||
// to allow global configuration to run transactions on the latest
|
||||
// database.
|
||||
template <class T>
|
||||
static void create(Database& cx, Reference<AsyncVar<T>> db, const ClientDBInfo* dbInfo) {
|
||||
static void create(Database& cx, Reference<AsyncVar<T> const> db, const ClientDBInfo* dbInfo) {
|
||||
if (g_network->global(INetwork::enGlobalConfig) == nullptr) {
|
||||
auto config = new GlobalConfig{ cx };
|
||||
g_network->setGlobal(INetwork::enGlobalConfig, config);
|
||||
|
|
|
@ -1756,7 +1756,8 @@ Database Database::createDatabase(Reference<ClusterConnectionFile> connFile,
|
|||
}
|
||||
|
||||
auto database = Database(db);
|
||||
GlobalConfig::create(database, clientInfo, std::addressof(clientInfo->get()));
|
||||
GlobalConfig::create(
|
||||
database, Reference<AsyncVar<ClientDBInfo> const>(clientInfo), std::addressof(clientInfo->get()));
|
||||
return database;
|
||||
}
|
||||
|
||||
|
|
|
@ -831,7 +831,7 @@ ACTOR Future<Void> traceRole(Role role, UID roleId);
|
|||
|
||||
struct ServerDBInfo;
|
||||
|
||||
class Database openDBOnServer(Reference<AsyncVar<ServerDBInfo>> const& db,
|
||||
class Database openDBOnServer(Reference<AsyncVar<ServerDBInfo> const> const& db,
|
||||
TaskPriority taskID = TaskPriority::DefaultEndpoint,
|
||||
LockAware = LockAware::FALSE,
|
||||
EnableLocalityLoadBalance = EnableLocalityLoadBalance::TRUE);
|
||||
|
@ -879,7 +879,7 @@ ACTOR Future<Void> storageServer(
|
|||
Reference<ClusterConnectionFile>
|
||||
connFile); // changes pssi->id() to be the recovered ID); // changes pssi->id() to be the recovered ID
|
||||
ACTOR Future<Void> masterServer(MasterInterface mi,
|
||||
Reference<AsyncVar<ServerDBInfo>> db,
|
||||
Reference<AsyncVar<ServerDBInfo> const> db,
|
||||
Reference<AsyncVar<Optional<ClusterControllerFullInterface>>> ccInterface,
|
||||
ServerCoordinators serverCoordinators,
|
||||
LifetimeToken lifetime,
|
||||
|
|
|
@ -228,7 +228,7 @@ struct MasterData : NonCopyable, ReferenceCounted<MasterData> {
|
|||
|
||||
ReusableCoordinatedState cstate;
|
||||
Promise<Void> cstateUpdated;
|
||||
Reference<AsyncVar<ServerDBInfo>> dbInfo;
|
||||
Reference<AsyncVar<ServerDBInfo> const> dbInfo;
|
||||
int64_t registrationCount; // Number of different MasterRegistrationRequests sent to clusterController
|
||||
|
||||
RecoveryState recoveryState;
|
||||
|
@ -255,7 +255,7 @@ struct MasterData : NonCopyable, ReferenceCounted<MasterData> {
|
|||
|
||||
Future<Void> logger;
|
||||
|
||||
MasterData(Reference<AsyncVar<ServerDBInfo>> const& dbInfo,
|
||||
MasterData(Reference<AsyncVar<ServerDBInfo> const> const& dbInfo,
|
||||
MasterInterface const& myInterface,
|
||||
ServerCoordinators const& coordinators,
|
||||
ClusterControllerFullInterface const& clusterController,
|
||||
|
@ -1978,7 +1978,7 @@ ACTOR Future<Void> masterCore(Reference<MasterData> self) {
|
|||
}
|
||||
|
||||
ACTOR Future<Void> masterServer(MasterInterface mi,
|
||||
Reference<AsyncVar<ServerDBInfo>> db,
|
||||
Reference<AsyncVar<ServerDBInfo> const> db,
|
||||
Reference<AsyncVar<Optional<ClusterControllerFullInterface>>> ccInterface,
|
||||
ServerCoordinators coordinators,
|
||||
LifetimeToken lifetime,
|
||||
|
|
|
@ -122,7 +122,7 @@ ACTOR Future<std::vector<Endpoint>> broadcastDBInfoRequest(UpdateServerDBInfoReq
|
|||
return notUpdated;
|
||||
}
|
||||
|
||||
ACTOR static Future<Void> extractClientInfo(Reference<AsyncVar<ServerDBInfo>> db,
|
||||
ACTOR static Future<Void> extractClientInfo(Reference<AsyncVar<ServerDBInfo> const> db,
|
||||
Reference<AsyncVar<ClientDBInfo>> info) {
|
||||
state std::vector<UID> lastCommitProxyUIDs;
|
||||
state std::vector<CommitProxyInterface> lastCommitProxies;
|
||||
|
@ -136,7 +136,7 @@ ACTOR static Future<Void> extractClientInfo(Reference<AsyncVar<ServerDBInfo>> db
|
|||
}
|
||||
}
|
||||
|
||||
Database openDBOnServer(Reference<AsyncVar<ServerDBInfo>> const& db,
|
||||
Database openDBOnServer(Reference<AsyncVar<ServerDBInfo> const> const& db,
|
||||
TaskPriority taskID,
|
||||
LockAware lockAware,
|
||||
EnableLocalityLoadBalance enableLocalityLoadBalance) {
|
||||
|
|
|
@ -700,7 +700,7 @@ private:
|
|||
// Binds an AsyncTrigger object to an AsyncVar, so when the AsyncVar changes
|
||||
// the AsyncTrigger is triggered.
|
||||
ACTOR template <class T>
|
||||
void forward(Reference<AsyncVar<T>> from, AsyncTrigger* to) {
|
||||
void forward(Reference<AsyncVar<T> const> from, AsyncTrigger* to) {
|
||||
loop {
|
||||
wait(from->onChange());
|
||||
to->trigger();
|
||||
|
|
Loading…
Reference in New Issue