fix: the master was sending the cluster controller uninitialized configurations
This commit is contained in:
parent
180438d41e
commit
cce4eeb52d
|
@ -1265,7 +1265,7 @@ void clusterRegisterMaster( ClusterControllerData* self, RegisterMasterRequest c
|
||||||
}
|
}
|
||||||
|
|
||||||
db->masterRegistrationCount = req.registrationCount;
|
db->masterRegistrationCount = req.registrationCount;
|
||||||
db->config = req.configuration;
|
if(req.configuration.present()) db->config = req.configuration.get();
|
||||||
|
|
||||||
bool isChanged = false;
|
bool isChanged = false;
|
||||||
auto dbInfo = self->db.serverInfo->get();
|
auto dbInfo = self->db.serverInfo->get();
|
||||||
|
|
|
@ -152,7 +152,7 @@ struct RegisterMasterRequest {
|
||||||
vector<ResolverInterface> resolvers;
|
vector<ResolverInterface> resolvers;
|
||||||
DBRecoveryCount recoveryCount;
|
DBRecoveryCount recoveryCount;
|
||||||
int64_t registrationCount;
|
int64_t registrationCount;
|
||||||
DatabaseConfiguration configuration;
|
Optional<DatabaseConfiguration> configuration;
|
||||||
vector<UID> priorCommittedLogServers;
|
vector<UID> priorCommittedLogServers;
|
||||||
int recoveryState;
|
int recoveryState;
|
||||||
|
|
||||||
|
|
|
@ -77,6 +77,7 @@ struct MasterData : NonCopyable, ReferenceCounted<MasterData> {
|
||||||
|
|
||||||
DatabaseConfiguration originalConfiguration;
|
DatabaseConfiguration originalConfiguration;
|
||||||
DatabaseConfiguration configuration;
|
DatabaseConfiguration configuration;
|
||||||
|
bool hasConfiguration;
|
||||||
|
|
||||||
ServerCoordinators coordinators;
|
ServerCoordinators coordinators;
|
||||||
|
|
||||||
|
@ -138,7 +139,8 @@ struct MasterData : NonCopyable, ReferenceCounted<MasterData> {
|
||||||
version(invalidVersion),
|
version(invalidVersion),
|
||||||
lastVersionTime(0),
|
lastVersionTime(0),
|
||||||
txnStateStore(0),
|
txnStateStore(0),
|
||||||
memoryLimit(2e9)
|
memoryLimit(2e9),
|
||||||
|
hasConfiguration(false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
~MasterData() { if(txnStateStore) txnStateStore->close(); }
|
~MasterData() { if(txnStateStore) txnStateStore->close(); }
|
||||||
|
@ -357,7 +359,7 @@ Future<Void> sendMasterRegistration( MasterData* self, LogSystemConfig const& lo
|
||||||
masterReq.proxies = proxies;
|
masterReq.proxies = proxies;
|
||||||
masterReq.resolvers = resolvers;
|
masterReq.resolvers = resolvers;
|
||||||
masterReq.recoveryCount = recoveryCount;
|
masterReq.recoveryCount = recoveryCount;
|
||||||
masterReq.configuration = self->configuration;
|
if(self->hasConfiguration) masterReq.configuration = self->configuration;
|
||||||
masterReq.registrationCount = ++self->registrationCount;
|
masterReq.registrationCount = ++self->registrationCount;
|
||||||
masterReq.priorCommittedLogServers = priorCommittedLogServers;
|
masterReq.priorCommittedLogServers = priorCommittedLogServers;
|
||||||
masterReq.recoveryState = self->recoveryState;
|
masterReq.recoveryState = self->recoveryState;
|
||||||
|
@ -540,6 +542,7 @@ ACTOR Future<Void> readTransactionSystemState( Reference<MasterData> self, Refer
|
||||||
Standalone<VectorRef<KeyValueRef>> rawConf = wait( self->txnStateStore->readRange( configKeys ) );
|
Standalone<VectorRef<KeyValueRef>> rawConf = wait( self->txnStateStore->readRange( configKeys ) );
|
||||||
self->configuration.fromKeyValues( rawConf );
|
self->configuration.fromKeyValues( rawConf );
|
||||||
self->originalConfiguration = self->configuration;
|
self->originalConfiguration = self->configuration;
|
||||||
|
self->hasConfiguration = true;
|
||||||
TraceEvent("MasterRecoveredConfig", self->dbgid).detail("conf", self->configuration.toString()).trackLatest("RecoveredConfig");
|
TraceEvent("MasterRecoveredConfig", self->dbgid).detail("conf", self->configuration.toString()).trackLatest("RecoveredConfig");
|
||||||
|
|
||||||
//auto kvs = self->txnStateStore->readRange( systemKeys );
|
//auto kvs = self->txnStateStore->readRange( systemKeys );
|
||||||
|
@ -627,6 +630,7 @@ ACTOR Future<Void> recoverFrom( Reference<MasterData> self, Reference<ILogSystem
|
||||||
.detail("StatusCode", RecoveryStatus::reading_transaction_system_state)
|
.detail("StatusCode", RecoveryStatus::reading_transaction_system_state)
|
||||||
.detail("Status", RecoveryStatus::names[RecoveryStatus::reading_transaction_system_state])
|
.detail("Status", RecoveryStatus::names[RecoveryStatus::reading_transaction_system_state])
|
||||||
.trackLatest(format("%s/MasterRecoveryState", printable(self->dbName).c_str() ).c_str());
|
.trackLatest(format("%s/MasterRecoveryState", printable(self->dbName).c_str() ).c_str());
|
||||||
|
self->hasConfiguration = false;
|
||||||
|
|
||||||
if(BUGGIFY)
|
if(BUGGIFY)
|
||||||
Void _ = wait( delay(10.0) );
|
Void _ = wait( delay(10.0) );
|
||||||
|
|
Loading…
Reference in New Issue