remove TSS storage metadata part

This commit is contained in:
Xiaoxi Wang 2022-04-27 15:54:51 -07:00
parent a8bc81a09d
commit 101b6717e3
3 changed files with 46 additions and 56 deletions

View File

@ -132,7 +132,9 @@ public:
loop {
choose {
when(wait(self->buildTeams())) { return Void(); }
when(wait(self->buildTeams())) {
return Void();
}
when(wait(self->restartTeamBuilder.onTrigger())) {}
}
}
@ -510,7 +512,9 @@ public:
while (self->pauseWiggle && !self->pauseWiggle->get() && self->waitUntilRecruited.get()) {
choose {
when(wait(self->waitUntilRecruited.onChange() || self->pauseWiggle->onChange())) {}
when(wait(delay(SERVER_KNOBS->PERPETUAL_WIGGLE_DELAY, g_network->getCurrentTask()))) { break; }
when(wait(delay(SERVER_KNOBS->PERPETUAL_WIGGLE_DELAY, g_network->getCurrentTask()))) {
break;
}
}
}
@ -1324,7 +1328,7 @@ public:
// Restart the storeTracker for the new interface. This will cancel the previous
// keyValueStoreTypeTracker
// storeTypeTracker = (isTss) ? Never() : keyValueStoreTypeTracker(self, server);
storageMetadataTracker = updateStorageMetadata(self, server, isTss);
storageMetadataTracker = self->updateStorageMetadata(server, isTss);
hasWrongDC = !self->isCorrectDC(*server);
hasInvalidLocality = !self->isValidLocality(self->configuration.storagePolicy,
server->getLastKnownInterface().locality);
@ -1343,7 +1347,9 @@ public:
.detail("ConfigStoreType", self->configuration.storageServerStoreType)
.detail("WrongStoreTypeRemoved", server->wrongStoreTypeToRemove.get());
}
when(wait(server->wakeUpTracker.getFuture())) { server->wakeUpTracker = Promise<Void>(); }
when(wait(server->wakeUpTracker.getFuture())) {
server->wakeUpTracker = Promise<Void>();
}
when(wait(storageMetadataTracker)) {}
when(wait(server->ssVersionTooFarBehind.onChange())) {}
when(wait(self->disableFailingLaggingServers.onChange())) {}
@ -1494,20 +1500,6 @@ public:
return Void();
}
ACTOR static Future<Void> keyValueStoreTypeTracker(DDTeamCollection* self, TCServerInfo* server) {
// Update server's storeType, especially when it was created
wait(server->updateStoreType());
if (server->getStoreType() != self->configuration.storageServerStoreType) {
if (self->wrongStoreTypeRemover.isReady()) {
self->wrongStoreTypeRemover = removeWrongStoreType(self);
self->addActor.send(self->wrongStoreTypeRemover);
}
}
return Never();
}
ACTOR static Future<Void> storageServerFailureTracker(DDTeamCollection* self,
TCServerInfo* server,
Database cx,
@ -2067,7 +2059,9 @@ public:
.detail("ExtraHealthyTeamCount", extraTeamCount)
.detail("HealthyTeamCount", self->healthyTeamCount);
}
when(wait(pauseChanged)) { continue; }
when(wait(pauseChanged)) {
continue;
}
}
}
}
@ -2591,7 +2585,9 @@ public:
}
}
}
when(wait(recruitStorage->onChange())) { fCandidateWorker = Future<RecruitStorageReply>(); }
when(wait(recruitStorage->onChange())) {
fCandidateWorker = Future<RecruitStorageReply>();
}
when(wait(self->zeroHealthyTeams->onChange())) {
if (!pendingTSSCheck && self->zeroHealthyTeams->get() &&
(self->isTssRecruiting || self->tss_info_by_pair.size() > 0)) {
@ -2876,18 +2872,16 @@ public:
return Void();
}
ACTOR static Future<Void> updateStorageMetadata(DDTeamCollection* self, TCServerInfo* server, bool isTss) {
ACTOR static Future<Void> updateStorageMetadata(DDTeamCollection* self, TCServerInfo* server) {
state KeyBackedObjectMap<UID, StorageMetadataType, decltype(IncludeVersion())> metadataMap(
serverMetadataKeys.begin, IncludeVersion());
state Reference<ReadYourWritesTransaction> tr = makeReference<ReadYourWritesTransaction>(self->cx);
// Update server's storeType, especially when it was created
wait(server->updateStoreType());
state StorageMetadataType data(
StorageMetadataType::currentTime(),
server->getStoreType(),
isTss ? !server->isCorrectStoreType(self->configuration.testingStorageServerStoreType)
: !server->isCorrectStoreType(self->configuration.storageServerStoreType));
state StorageMetadataType data(StorageMetadataType::currentTime(),
server->getStoreType(),
!server->isCorrectStoreType(self->configuration.storageServerStoreType));
// read storage metadata
loop {
@ -2907,19 +2901,18 @@ public:
}
}
// printf("------ updated metadata %s\n", server->getId().toString().c_str());
if (!isTss) {
// wrong store type handler
if (!server->isCorrectStoreType(self->configuration.storageServerStoreType) &&
self->wrongStoreTypeRemover.isReady()) {
self->wrongStoreTypeRemover = removeWrongStoreType(self);
self->addActor.send(self->wrongStoreTypeRemover);
}
// add server to wiggler
if (self->storageWiggler->contains(server->getId())) {
self->storageWiggler->updateMetadata(server->getId(), data);
} else {
self->storageWiggler->addServer(server->getId(), data);
}
// wrong store type handler
if (!server->isCorrectStoreType(self->configuration.storageServerStoreType) &&
self->wrongStoreTypeRemover.isReady()) {
self->wrongStoreTypeRemover = removeWrongStoreType(self);
self->addActor.send(self->wrongStoreTypeRemover);
}
// add server to wiggler
if (self->storageWiggler->contains(server->getId())) {
self->storageWiggler->updateMetadata(server->getId(), data);
} else {
self->storageWiggler->addServer(server->getId(), data);
}
return Never();
@ -3427,10 +3420,6 @@ Future<Void> DDTeamCollection::removeBadTeams() {
return DDTeamCollectionImpl::removeBadTeams(this);
}
Future<Void> DDTeamCollection::keyValueStoreTypeTracker(TCServerInfo* server) {
return DDTeamCollectionImpl::keyValueStoreTypeTracker(this, server);
}
Future<Void> DDTeamCollection::storageServerFailureTracker(TCServerInfo* server,
Database cx,
ServerStatus* status,
@ -3527,7 +3516,7 @@ Future<Void> DDTeamCollection::readStorageWiggleMap() {
}
Future<Void> DDTeamCollection::updateStorageMetadata(TCServerInfo* server, bool isTss) {
return DDTeamCollectionImpl::updateStorageMetadata(this, server, isTss);
return isTss ? Never() : DDTeamCollectionImpl::updateStorageMetadata(this, server);
}
void DDTeamCollection::resetLocalitySet() {

View File

@ -432,9 +432,6 @@ class DDTeamCollection : public ReferenceCounted<DDTeamCollection> {
bool isCorrectDC(TCServerInfo const& server) const;
// Set the server's storeType; Error is caught by the caller
Future<Void> keyValueStoreTypeTracker(TCServerInfo* server);
Future<Void> storageServerFailureTracker(TCServerInfo* server,
Database cx,
ServerStatus* status,
@ -486,7 +483,8 @@ class DDTeamCollection : public ReferenceCounted<DDTeamCollection> {
});
}
// Read storage metadata from database, and do necessary updates
// Read storage metadata from database, get the server's storeType, and do necessary updates. Error is caught by the
// caller
Future<Void> updateStorageMetadata(TCServerInfo* server, bool isTss);
Future<Void> serverGetTeamRequests(TeamCollectionInterface tci);

View File

@ -584,13 +584,16 @@ struct RolesInfo {
}
}
TraceEventFields const& metadata = metrics.at("Metadata");
JsonBuilderObject metadataObj;
metadataObj["created_time_datetime"] = metadata.getValue("CreatedTimeDatetime");
metadataObj["created_time_timestamp"] = metadata.getDouble("CreatedTimeTimestamp");
metadataObj["storage_engine"] = metadata.getValue("StoreType");
obj["storage_metadata"] = metadataObj;
// printf("%s\n", metadataObj.getJson().c_str());
if (!iface.isTss()) { // only storage server has Metadata field
TraceEventFields const& metadata = metrics.at("Metadata");
JsonBuilderObject metadataObj;
metadataObj["created_time_datetime"] = metadata.getValue("CreatedTimeDatetime");
metadataObj["created_time_timestamp"] = metadata.getDouble("CreatedTimeTimestamp");
metadataObj["storage_engine"] = metadata.getValue("StoreType");
obj["storage_metadata"] = metadataObj;
// printf("%s\n", metadataObj.getJson().c_str());
}
} catch (Error& e) {
if (e.code() != error_code_attribute_not_found)
throw e;
@ -1974,7 +1977,7 @@ ACTOR static Future<std::vector<std::pair<StorageServerInterface, EventMap>>> ge
metadataField.addField("CreatedTimeDatetime", epochsToGMTString(metadata[i].get().createdTime));
metadataField.addField("StoreType", metadata[i].get().storeType.toString());
results[i].second.emplace("Metadata", metadataField);
} else {
} else if (!servers[i].isTss()) {
TraceEventFields metadataField;
metadataField.addField("CreatedTimeTimestamp", "0");
metadataField.addField("CreatedTimeDatetime", "[removed]");