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

Function buildPriorityMappings

fdbserver/DataDistributionQueue.actor.cpp:73–108  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

71typedef std::map<DataMovementReason, int> DmReasonPriorityMapping;
72typedef std::map<int, DataMovementReason> PriorityDmReasonMapping;
73std::pair<const DmReasonPriorityMapping*, const PriorityDmReasonMapping*> buildPriorityMappings() {
74 static DmReasonPriorityMapping reasonPriority{
75 { DataMovementReason::INVALID, -1 },
76 { DataMovementReason::RECOVER_MOVE, SERVER_KNOBS->PRIORITY_RECOVER_MOVE },
77 { DataMovementReason::REBALANCE_UNDERUTILIZED_TEAM, SERVER_KNOBS->PRIORITY_REBALANCE_UNDERUTILIZED_TEAM },
78 { DataMovementReason::REBALANCE_OVERUTILIZED_TEAM, SERVER_KNOBS->PRIORITY_REBALANCE_OVERUTILIZED_TEAM },
79 { DataMovementReason::REBALANCE_READ_OVERUTIL_TEAM, SERVER_KNOBS->PRIORITY_REBALANCE_READ_OVERUTIL_TEAM },
80 { DataMovementReason::REBALANCE_READ_UNDERUTIL_TEAM, SERVER_KNOBS->PRIORITY_REBALANCE_READ_UNDERUTIL_TEAM },
81 { DataMovementReason::PERPETUAL_STORAGE_WIGGLE, SERVER_KNOBS->PRIORITY_PERPETUAL_STORAGE_WIGGLE },
82 { DataMovementReason::TEAM_HEALTHY, SERVER_KNOBS->PRIORITY_TEAM_HEALTHY },
83 { DataMovementReason::TEAM_CONTAINS_UNDESIRED_SERVER, SERVER_KNOBS->PRIORITY_TEAM_CONTAINS_UNDESIRED_SERVER },
84 { DataMovementReason::TEAM_REDUNDANT, SERVER_KNOBS->PRIORITY_TEAM_REDUNDANT },
85 { DataMovementReason::MERGE_SHARD, SERVER_KNOBS->PRIORITY_MERGE_SHARD },
86 { DataMovementReason::POPULATE_REGION, SERVER_KNOBS->PRIORITY_POPULATE_REGION },
87 { DataMovementReason::TEAM_UNHEALTHY, SERVER_KNOBS->PRIORITY_TEAM_UNHEALTHY },
88 { DataMovementReason::TEAM_2_LEFT, SERVER_KNOBS->PRIORITY_TEAM_2_LEFT },
89 { DataMovementReason::TEAM_1_LEFT, SERVER_KNOBS->PRIORITY_TEAM_1_LEFT },
90 { DataMovementReason::TEAM_FAILED, SERVER_KNOBS->PRIORITY_TEAM_FAILED },
91 { DataMovementReason::TEAM_0_LEFT, SERVER_KNOBS->PRIORITY_TEAM_0_LEFT },
92 { DataMovementReason::SPLIT_SHARD, SERVER_KNOBS->PRIORITY_SPLIT_SHARD }
93 };
94
95 static PriorityDmReasonMapping priorityReason;
96 if (priorityReason.empty()) { // only build once
97 for (const auto& [r, p] : reasonPriority) {
98 priorityReason[p] = r;
99 }
100 // Don't allow 2 priorities value being the same.
101 if (priorityReason.size() != reasonPriority.size()) {
102 TraceEvent(SevError, "DuplicateDataMovementPriority").log();
103 ASSERT(false);
104 }
105 }
106
107 return std::make_pair(&reasonPriority, &priorityReason);
108}
109
110int dataMovementPriority(DataMovementReason reason) {
111 auto [reasonPriority, _] = buildPriorityMappings();

Callers 2

dataMovementPriorityFunction · 0.85

Calls 4

TraceEventClass · 0.85
emptyMethod · 0.45
sizeMethod · 0.45
logMethod · 0.45

Tested by

no test coverage detected