MCPcopy Create free account
hub / github.com/apple/foundationdb / addServer

Method addServer

fdbserver/DDTeamCollection.actor.cpp:4728–4785  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4726}
4727
4728void DDTeamCollection::addServer(StorageServerInterface newServer,
4729 ProcessClass processClass,
4730 Promise<Void> errorOut,
4731 Version addedVersion,
4732 DDEnabledState const& ddEnabledState) {
4733 if (!shouldHandleServer(newServer)) {
4734 return;
4735 }
4736
4737 if (!newServer.isTss()) {
4738 allServers.push_back(newServer.id());
4739 }
4740
4741 TraceEvent(newServer.isTss() ? "AddedTSS" : "AddedStorageServer", distributorId)
4742 .detail("ServerID", newServer.id())
4743 .detail("ProcessID", newServer.locality.processId())
4744 .detail("ProcessClass", processClass.toString())
4745 .detail("WaitFailureToken", newServer.waitFailure.getEndpoint().token)
4746 .detail("Address", newServer.waitFailure.getEndpoint().getPrimaryAddress());
4747
4748 auto& r = server_and_tss_info[newServer.id()] = makeReference<TCServerInfo>(
4749 newServer,
4750 this,
4751 processClass,
4752 includedDCs.empty() ||
4753 std::find(includedDCs.begin(), includedDCs.end(), newServer.locality.dcId()) != includedDCs.end(),
4754 storageServerSet,
4755 addedVersion);
4756
4757 if (newServer.isTss()) {
4758 tss_info_by_pair[newServer.tssPairID.get()] = r;
4759
4760 if (server_info.count(newServer.tssPairID.get())) {
4761 r->onTSSPairRemoved = server_info[newServer.tssPairID.get()]->onRemoved;
4762 }
4763 } else {
4764 server_info[newServer.id()] = r;
4765 // Establish the relation between server and machine
4766 checkAndCreateMachine(r);
4767 }
4768
4769 r->setTracker(storageServerTracker(cx, r.getPtr(), errorOut, addedVersion, ddEnabledState, newServer.isTss()));
4770
4771 if (!newServer.isTss()) {
4772 // link and wake up tss' tracker so it knows when this server gets removed
4773 if (tss_info_by_pair.count(newServer.id())) {
4774 tss_info_by_pair[newServer.id()]->onTSSPairRemoved = r->onRemoved;
4775 if (tss_info_by_pair[newServer.id()]->wakeUpTracker.canBeSet()) {
4776 auto p = tss_info_by_pair[newServer.id()]->wakeUpTracker;
4777 // This callback could delete tss_info_by_pair[newServer.id()], so use a copy
4778 p.send(Void());
4779 }
4780 }
4781
4782 doBuildTeams = true; // Adding a new server triggers to build new teams
4783 restartTeamBuilder.trigger();
4784 }
4785}

Callers 4

Future<Void> initFunction · 0.45
Future<UID> getClusterIdFunction · 0.45

Calls 15

TraceEventClass · 0.85
findFunction · 0.85
detailMethod · 0.80
processIdMethod · 0.80
dcIdMethod · 0.80
setTrackerMethod · 0.80
getMethod · 0.65
countMethod · 0.65
VoidClass · 0.50
isTssMethod · 0.45
push_backMethod · 0.45
idMethod · 0.45

Tested by

no test coverage detected